Je souhaite implémenter le plug-in Firebase-Messaging dans mon application Android . J'ai commencé avec l'exemple "quickstart-Android-master/messaging" de github: https://github.com/firebase/ quickstart-Android/arbre/maître/messagerie
Cela fonctionne pour moi! Log-Output:
D/FirebaseApp﹕ com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp﹕ Initialized class com.google.firebase.iid.FirebaseInstanceId.
D/FirebaseApp﹕ com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization
D/FirebaseApp﹕ Initialized class com.google.Android.gms.measurement.AppMeasurement.
I/FirebaseInitProvider﹕ FirebaseApp initialization successful
Mais si je veux implémenter le plugin "com.google.firebase: firebase-messaging: 9.0.2" dans mon application, le fichier FirebaseApp n'est pas initialisé! Donc, le plugin FirebaseApp ne démarre pas! - Aucun journal ou jeton reçu!
J'ai également ajouté le plugin apply au fichier build.gradle dans le répertoire "app":
apply plugin: 'com.Android.application'
Android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-messaging:9.0.2'
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
Et le plugin google-services à build.gradle dans le répertoire "racine":
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
Les problèmes pourraient être:
Mon problème était la "fusion manifeste" . Si j'utilise le
xmlns:tools="http://schemas.Android.com/tools"
et
tools:node="replace"
dans la balise d'application du manifeste, FirebaseApp ne sera pas initialisé!
Si vous utilisez replace attr sur tools: node, il remplacera votre déclaration de priorité inférieure avec l'annotation (voir plus ici ). Vous devez utiliser les attributs merge ou merge uniquement au lieu.
Cela ne marche pas:
<application
Android:name="xxx"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/application_name"
Android:theme="@style/Theme.TemplateStyle"
tools:node="replace">
cela marche:
<application
Android:name="xxx"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/application_name"
Android:theme="@style/Theme.TemplateStyle">
<!-- tools:node="replace"-->
Si vous souhaitez écraser ou remplacer certains attributs, utilisez plutôt
tools:replace
!
Ceci ferme la question pour moi:
implémentation 'com.google.firebase: firebase-crash: 16.2.1'
implémentation 'com.google.firebase: firebase-auth: 16.1.0'
Dans mon cas, ces autorisations manquaient dans le fichier manifeste Android:
<permission
Android:name="com.app.appname.permission.C2D_MESSAGE"
Android:protectionLevel="signature" />
<uses-permission Android:name="com.app.appname.permission.C2D_MESSAGE" />
<uses-permission Android:name="com.google.Android.c2dm.permission.RECEIVE" />