我要使用list.setEditable(true)
库,并尝试在应用启动时使用以下方法获取令牌。
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(InstanceIdResult instanceIdResult) { String token = instanceIdResult.getToken(); // print token } });
应用在投放时崩溃,导致
firebase-messaging
AndroidManifest
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.iid.FirebaseInstanceId.getInstanceId()' on a null object reference
Build.gradle:
<service
android:name=".MyFirebaseMessageService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
此外,我尝试将令牌存储在SharedPreferences中,但似乎从未调用过onNewToken()。
implementation 'com.google.android.gms:play-services-analytics:16.0.5'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
可能是什么问题?
答案 0 :(得分:3)
合并清单中存在问题,合并清单中缺少以下服务。
在AndroidManifest.xml
中添加了相同内容,就像是一种魅力。
<service android:name="com.google.firebase.components.ComponentDiscoveryService" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
现在一切正常。
答案 1 :(得分:0)
在将.aar清单与主应用清单合并时,我遇到了相同的问题,正如@alphaguy提到的,合并清单后缺少组件,并且在添加以下服务时提到错误消失了:
<service
android:name="com.google.firebase.components.ComponentDiscoveryService"
android:exported="false" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
android:name="com.google.firebase.components:com.google.firebase.messaging.FirebaseMessagingRegistrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
但是Firebase Messaging仍然无法正常工作,因为接收到FirebaseInstanceId和FirebaseMessaging事件并将其传递到特定于应用程序的FirebaseInstanceIdService的WakefulBroadcastReceiver也丢失了,该接收器会通过manifest merge自动添加到您应用程序的清单文件中,在本例中是丢失在合并中,因此我们需要手动添加它,如下所示:
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
android:exported="false"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</receiver>
FirbaseInstanceIdReceiver文档:https://firebase.google.com/docs/reference/android/com/google/firebase/iid/FirebaseInstanceIdReceiver
注意:您可能需要在FirebaseApp.initializeApp(this);
的{{1}}处添加onCreate
。
ApplicationClass
答案 2 :(得分:0)
您需要添加以下软件包,
可选-Xamarin.Firebase.Analytics(用于分析)