我遵循了Firebase程序,以便通过云消息传递实现我的Firebase通知,但是它不起作用
我从未在onNewToken()函数中登录
我有com.google.firebase:firebase-messaging:19.0.1的19.0.1版本和com.google.firebase:firebase-core:17.0.1的17.0.1版本
我试图以此手动获取令牌:
FirebaseInstanceId.getInstance().instanceId.addOnSuccessListener {
sendTokenNotification(it.token)
}
但是,有了此通知,我=永远不会在后台发送...仅当我打开我的应用程序时
在我的AndroidManifest中,我有
<service
android:name="library.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/logo" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/colorAccent" />
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
在MainActivity中,我在onCreate中
FirebaseInstanceId.getInstance().instanceId
.addOnCompleteListener(OnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("NEW_TOKEN", "getInstanceId failed", task.exception)
return@OnCompleteListener
}
// Get new Instance ID token
val token = task.result?.token
// Log and toast
val msg = getString(R.string.msg_token_fmt, token)
Log.d("NEW_TOKEN", msg)
})
FirebaseMessaging.getInstance().isAutoInitEnabled = true
在我的MyFirebaseMessagingService中,我有:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d("", "From: " + remoteMessage.getFrom());
if(remoteMessage.getNotification() != null) {
Log.d("", "Notification Message Body: " + remoteMessage.getNotification().getBody());
createNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
}
}
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.v("NEW_TOKEN",s);
sendTokenNotification(s);
}
它永远不会在我的onNewToken()中显示日志
我没有任何错误,只是没有输入我的函数
所以我想知道我做错了什么吗...
(我不知道是否可以,但是MainActivity在Kotlin中,而FirebaseMessagingService在Java中)
答案 0 :(得分:0)
在您的应用程序首次启动时,FCM SDK会为客户端应用程序实例生成注册令牌。如果要定位单个设备或创建设备组,则需要通过扩展FirebaseMessagingService
并覆盖onNewToken
来访问此令牌。
在以下情况下,注册令牌可能会更改: