我将使用firebase-messaging
库,并尝试在应用程序启动时使用以下方法获取令牌。
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(InstanceIdResult instanceIdResult) { String token = instanceIdResult.getToken(); // print token } });
应用程序在发布时崩溃
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
AndroidManifest
<service
android:name=".MyFirebaseMessageService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Build.Gradle:
implementation 'com.google.android.gms:play-services-analytics:16.0.5'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
此外,我尝试在SharedPreferences中缓存令牌,但似乎从未调用onNewToken()。
@Override
public void onNewToken(String token) {
super.onNewToken(token);
SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preference.edit();
editor.putString("TOKEN",token);
editor.apply();
}
会有什么问题?
我在合并.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消息传递仍然无法工作,因为接收FirebaseInstanceId和FirebaseMessaging事件并将其传递给特定于应用程序的FirebaseInstanceIdService的WakefulBroadcastReceiver也丢失了,该接收器会通过清单合并自动添加到应用程序的清单文件中,在我们的示例中,它在合并中丢失了,因此需要手动添加,如下所示:
<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
>
注意:您可能需要在ApplicationClass
中的OnCreate
处添加FirebaseApp.InitializeApp(this);
。
public class MyApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseApp.initializeApp(this);
}
合并清单中有问题,合并清单中缺少后续服务。在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>
现在一切正常。
我的应用程序有问题,我想解决它,但我无法访问解决方案,请帮助我,,,
我正在尝试实现一个外部色轮,它应该出现在的片段一直在崩溃我的应用程序。我想我明白为什么会发生这种情况,但是在尝试修复它大约6个小时后,我就要放弃了。我知道之前有人问过这个问题,但是我无法为我的特定问题导出一个修复程序。下面是我的代码: 这是Logcat错误: 如果有人能帮我解决这个问题,那就太好了。提前谢谢^^ 编辑:这是我的XML,按要求:
我将要制作android应用程序,但是由于致命的异常:main java.lang.NullPointerException应用程序没有保存数据,请在这里帮助我 这是我的EditNoteActivity 这是我的Logcat错误
我正在使用下面的代码从playstore中获取versionName,通过使用jsoup,我正在获取详细信息,但它会引发一些异常。 我的密码是 请有人帮我解决这个问题。
问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x
我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,