[英]Android app crashes when receiving a new FCM message (foreground and background)
我正在我的應用程序中實施FCM。 我正在按照文檔中的指南進行操作,並嘗試按照文檔中的建議實施簡單的測試,但是每當我從控制台發送通知時,應用都會崩潰,無論它處於前台還是后台。
**更新:我已經刪除了服務類,gradle中的減速度和實現。 如果我嘗試測試消息,該應用程序仍然崩潰。 它不應該完全不受它影響嗎?
這是我的延伸班級:
import android.util.Log
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.iid.FirebaseInstanceId
import com.google.firebase.messaging.FirebaseMessagingService
import com.google.firebase.messaging.RemoteMessage
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(p0: RemoteMessage?) {
super.onMessageReceived(p0)
Log.d("newMessage", p0!!.notification!!.body)
}
override fun onNewToken(p0: String?) {
super.onNewToken(p0)
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener { idResult ->
val uid = FirebaseAuth.getInstance().uid ?: ""
val token = idResult.token
val userRef = FirebaseDatabase.getInstance().getReference("/users/$uid/services/firebase-token")
userRef.setValue(token)
}
}
}
這是我的清單:
<service
android:name=".otherClasses.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
這是崩潰日志:
2019-04-18 11:45:44.007 21257-21295/co.getdere E/AndroidRuntime: FATAL EXCEPTION: Firebase-WrappedFirebaseMessagingService
Process: co.getdere, PID: 21257
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
at com.google.firebase.messaging.zzb.<init>(Unknown Source:5)
at com.google.firebase.messaging.FirebaseMessagingService.zzd(Unknown Source:58)
at com.google.firebase.iid.zzb.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source:6)
at java.lang.Thread.run(Thread.java:764)
像這樣嘗試。 可能有效
class MyFirebaseMessagingService : FirebaseMessagingService() {
companion object {
private val TAG = "MyFirebaseMsgService"
}
override fun onNewToken(s: String?) {
super.onNewToken(s)
// Displaying token on logcat
Log.e(TAG, "Refreshed token: " + s!!)
}
override fun onMessageReceived(remoteMessage: RemoteMessage?) {
Log.e(TAG, "onMessageReceived")
}
}
將其添加到清單文件中
<service
android:name=".fcm.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.