Olá,
Obrigado por este projeto e seu ótimo trabalho!
Tenho problemas no projeto iônico.
Primeiro, adiciono a string em meu config.xml:
<plugin name="cordova-plugin-firebase" spec="https://github.com/arnesson/cordova-plugin-firebase" />
Em segundo lugar, coloquei google-services.json (que obtive do console da web do firebase) no diretório raiz.
Eu executo minha construção, e isso funciona:
$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
**Discovered plugin "cordova-plugin-firebase" in config.xml. Adding it to the project**
Fetching plugin "https://github.com/arnesson/cordova-plugin-firebase" via git clone
Repository "https://github.com/arnesson/cordova-plugin-firebase" checked out to git ref "master".
Installing "cordova-plugin-firebase" for android
ANDROID_HOME=/home/user/Android/Sdk/
JAVA_HOME=/opt/java/jdk1.8.0_92
No target specified, deploying to device 'F9AZCY31J032'.
:preBuild UP-TO-DATE
Mas minha segunda construção sempre falha ...
$ cordova run android
Running command: /home/user/android-app/App/hooks/after_prepare/010_add_platform_class.js /home/user/android-app/App
add to body class: platform-android
Error: Invalid data, chunk must be a string or buffer, not object
Eu estava tentando instalar o plugin de cordova plugin add https://github.com/arnesson/cordova-plugin-firebase.git --save
. Mas, neste caso, mesmo a primeira compilação trava com Error: Invalid data, chunk must be a string or buffer, not object
E quando eu inicio o aplicativo Android com a primeira compilação, o código abaixo não funciona para mim:
angular.module('app', ['ionic', 'app.controllers', 'app.routes', 'app.services', 'app.directives', 'firebase'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
window.FirebasePlugin.getInstanceId(function(token) {
// save this server-side and use it to push notifications to this device
console.log("Token", token);
}, function(error) {
console.error(error);
});
});
})
Este código retorna ["Token", "null"] para o console.
Agradeço antecipadamente.
você obtém algum valor bobo ou estranho em plataformas / andoid / res / values / strings.xml?
tente executar cordova prepare android antes de construir (embora deva funcionar sem ele)
O mesmo problema aqui. Em strings.xml eu tenho:
<string name="google_app_id">727247059290</string>
<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>
Remova google_app_id
de string.xml e tente novamente. Eu removi e está funcionando para mim.
Que tal ios? você tem alguma ideia?
Não. Não tenho ideia de iOS. Acho que você precisa adicionar o arquivo GoogleService-Info.plist no projeto iOS e instalar o Pod.
Para você, já começou a funcionar no Android?
Não, estou recebendo o Erro: dados inválidos quando tento emulá-los. Eu acho que o gancho de preparação de cordova está mudando o arquivo de volta.
Mas estou mais interessado em fazê-lo funcionar no iOS. No iOS, tenho um problema de compilação: https://github.com/arnesson/cordova-plugin-firebase/issues/11
@raducostea - Eu sugiro que você use APN (Apple Push Notification). Aqui está o link do plugin: https://github.com/phonegap-build/PushPlugin. Está funcionando com muita precisão para mim no iOS.
@ dhruv270 já estou usando isso. Eu quero este plugin para a parte analítica para registrar eventos e adicioná-los dentro do google analytics.
Erro: dados inválidos apareceram por causa da cópia google-services.json e googleService-info.plist para a pasta de plataformas, se a pasta de plataformas e json, plist não existir mostra erro.
Consertei adicionando a pasta de plataformas e o arquivo json, plist. Desculpe pelo meu ingles ruim
Sim, você precisa criar um projeto no console do firebase. E adicione o aplicativo a esse projeto adicionando o nome do pacote do aplicativo / id do pacote. Você obterá google-services.json para Android e GoogleService-Info.plist para iOS. Esse arquivo você precisa adicionar em seu projeto.
certifique-se de colocar os arquivos no ROOT de seu projeto, junto com config.xml etc, e não em plataformas ou www.
@raducostea @ dhruv270 Com relação ao APN e push, eu sugeriria usar este plugin também para isso. O PushPlugin também mudará para o Firebase FCM (já que o GCM está obsoleto). O FCM usa APN para IOS, então é a mesma coisa, mas você obtém o benefício de uma interface comum em todas as plataformas
Já fiz isso, mas estou recebendo erros de compilação. Verifique https://github.com/arnesson/cordova-plugin-firebase/issues/11
Não tenho nenhum idiota ou valores estranhos em strings.xml.
Reinstalei o cordova-plugin-firebase e fiz "cordova prepare". Depois disso, comecei a ver novos valores em strings.xml:
<string name="google_app_id">@string/google_app_id</string>
<string name="google_api_key">@string/google_api_key</string>
E quando eu construir o mesmo erro novamente:
Erro: dados inválidos, o fragmento deve ser uma string ou buffer, não um objeto
Você adicionou plataforma iOS e Android?
Depois de construir o Android, recebo este erro
** EXCEÇÃO INESPERADA DE NÍVEL SUPERIOR:
com.android.dex.DexException: Vários arquivos dex definem Lcom / google / firebase / FirebaseException;
em com.android.dx.merge.DexMerger.readSortableTypes (DexMerger.java:579)
em com.android.dx.merge.DexMerger.getSortedTypes (DexMerger.java:535)
em com.android.dx.merge.DexMerger.mergeClassDefs (DexMerger.java:517)
em com.android.dx.merge.DexMerger.mergeDexes (DexMerger.java:164)
em com.android.dx.merge.DexMerger.merge (DexMerger.java:188)
em com.android.dx.command.dexer.Main.mergeLibraryDexBuffers (Main.java:504)
em com.android.dx.command.dexer.Main.runMonoDex (Main.java:334)
em com.android.dx.command.dexer.Main.run (Main.java:277)
em com.android.dx.command.dexer.Main.main (Main.java:245)
em com.android.dx.command.Main.main (Main.java:106)
FRACASSADO**
Eu tenho o mesmo problema que @neosekar . Alguma ideia?
EDITAR:
Encontrei mais sobre isso na internet:
Parece que atingimos o limite de contagem de métodos devido às grandes dependências. Vou tentar encontrar uma solução.
EDIT 2:
Eu consertei fazendo o seguinte:
No entanto, acho que isso só funciona quando você já tem o 'com.google.gms.google-services' instalado por outro plug-in.
Em relação a vários arquivos dex, defina Lcom / google / firebase / FirebaseException:
Isso é causado por dependências duplicadas, provavelmente outro plug-in que também está usando com.google. gms: google-services , Firebase SDK ou partes dele. Eu não testei isso, mas você deve ser capaz de listar todas as dependências usadas em seu projeto e encontrar as duplicatas:
http://stackoverflow.com/questions/30648172/gradle-library-duplicates-in-dependencies
Ter um GoogleService-Info.plist quando não há plataforma ios causará o "segundo erro de compilação". Recomendo que GoogleService-Info.plist seja copiado apenas se houver plataforma / ios ....
Você pode corrigir after_prepare.js para contornar isso, embora eu não tenha testado meu patch ainda. Vou postar se funcionar
@ st8st8 O problema já foi corrigido (na versão git)
...
if(fileExists("GoogleService-Info.plist") && directoryExists("platforms/ios/")){
...
Eu me deparei com o mesmo problema agora e depois de um tempo, baixei novamente os arquivos GoogleService-Info.plist e google-services.json e funcionou perfeitamente.
Estou enfrentando o mesmo problema com iônico. Eu corrijo isso removendo a plataforma e o plug-in e, em seguida, adicionando novamente a plataforma e o plug-in, então tudo está completamente normal novamente.
Para este problema no ionic 2, escrevo este tutorial .
Reinstalar cordova-plugin-firebase funcionou para mim