Приложение Android вылетает при получении нового сообщения FCM (передний план и фон) - PullRequest
1 голос
/ 18 апреля 2019

Я работаю над внедрением 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)

1 Ответ

0 голосов
/ 18 апреля 2019

Просто попробуй вот так.Может работать

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>
...