在过去的几天里,我试图让FCM在我的应用程序中工作,我发现onTokenRefreshed()函数和FirebaseInstanceIdService总体上被弃用了。所以我在网上看了一些firebase文档和教程,但似乎没有一个对我有效。我的MyFirebaseMessagingService类是:
package com.example.android.aln4.Classes;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMessaging";
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Log.d(TAG,"Refreshed token: "+token);
}
}
我的清单包含以下代码:
<service android:name=".Classes.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
另外,我的所有与firebae相关的实现都是最新的,如下所示:
//Firebase
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation 'com.firebase:firebase-client-android:2.5.2'
implementation 'com.google.firebase:firebase-core:16.0.6'
implementation 'com.google.firebase:firebase-database:16.0.6'
implementation 'com.firebase:firebase-client-android:2.5.2'
implementation 'com.firebaseui:firebase-ui-database:2.1.1'
implementation 'com.google.firebase:firebase-storage:16.0.5'
implementation 'com.google.firebase:firebase-firestore:18.0.0'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
总的来说,我的问题是,每当我运行应用程序时,不管是在卸载和安装后还是在正常运行时,都不会调用onNewToken()函数,或者至少我在Logcat中看不到它。任何形式的帮助都是非常感谢的:)
7条答案
按热度按时间htrmnn0y1#
onNewToken方法仅在生成令牌时调用,您应在活动中检索令牌。
将以下内容添加到您的活动中:
92vpleto2#
2020年12月更新:使用新的Firebase SDK(21.0.0),您可以通过
FirebaseInstallations.getInstance()
在您的范围内获取令牌:编辑:2022年12月更新:使用新的Firebase SDK(23.1.0):
qyzbxkaa3#
请使用此选项:
wnvonmuf4#
使用android studio的firebase助手工具将您的应用连接到FCM后,在MainActivity类上使用以下代码来检索firebase云消息令牌:(此代码适用于我)
ovfsdjhp5#
仅当生成新令牌或更新现有令牌时,才会调用onNewToken()。
您可以添加以下代码,并在应用中的任意位置调用以随时获取令牌。
bwitn5fc6#
接收类似这样的令牌(Kotlin):
ax6ht2ek7#
您只需要onNewToken()向您的应用发出信号,通知它需要再次发送令牌。
您可以在应用的某个入口点执行此操作:
在onNewToken()方法覆盖上,只需执行以下操作:
方法isPushTokenAlreadySent()和setPushTokenSent()可能是您最喜欢的持久化数据的方法,例如使用SharedPreferences: