Firebase-MessagingプラグインをAndroid-Appに実装します。 githubの「quickstart-Android-master/messaging」の例から始めました: https://github.com/firebase/quickstart-Android/tree/master/messaging
これは私のために働く!ログ出力:
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
しかし、プラグイン「com.google.firebase:firebase-messaging:9.0.2」をアプリに実装する場合、FirebaseAppは初期化されません!そのため、FirebaseAppプラグインは起動していません! -ログまたはトークンを受信していません!
「app」ディレクトリのbuild.gradleファイルに適用プラグインも追加しました。
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'
そして、「ルート」ディレクトリにあるbuild.gradleへのgoogle-servicesプラグイン:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
問題は次のとおりです。
私の問題は「マニフェスト合併」でした。私が使用する場合
xmlns:tools="http://schemas.Android.com/tools"
そして
tools:node="replace"
マニフェストのアプリケーションタグでは、FirebaseAppは初期化されません!
replaceattr ontools:nodeを使用すると、下位を置き換えます注釈付きの優先度宣言(詳細は こちら を参照)。代わりにmergeまたはmerge only属性を使用する必要があります。
これは機能しません:
<application
Android:name="xxx"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/application_name"
Android:theme="@style/Theme.TemplateStyle"
tools:node="replace">
これは動作します:
<application
Android:name="xxx"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/application_name"
Android:theme="@style/Theme.TemplateStyle">
<!-- tools:node="replace"-->
一部の属性を上書きまたは置換する場合は、代わりに
tools:replace
を使用してください!
これで問題は解決しました。
実装 'com.google.firebase:firebase-crash:16.2.1'
実装 'com.google.firebase:firebase-auth:16.1.0'
私の場合、これらの権限はAndroid Manifest file:
<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" />