gpt4 book ai didi

android - 在 MyFirebaseInstanceIDService 的 onTokenRefresh 方法中始终获取 Null 值

转载 作者:行者123 更新时间:2023-11-30 00:23:53 25 4
gpt4 key购买 nike

我在 onTokenRefresh 方法中获取 token 时遇到问题

以下是我的 list 文件

   <uses-permission android:name="android.permission.INTERNET" />
<service
android:name=".fcmService.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>

<service
android:name=".fcmService.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>

以下是我的MyFirebaseInstanceIDService

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

private static final String TAG = MyFirebaseInstanceIDService.class.getSimpleName();

@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();

Log.d(TAG, "@@ onTokenRefresh: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
// Saving reg id to shared preferences
storeRegIdInPref(refreshedToken);

}

我在启动画面中调用 MyFirebaseInstanceIDService 就像这样......

MyFirebaseInstanceIDService myFirebaseInstanceIdService = new MyFirebaseInstanceIDService();
myFirebaseInstanceIdService.onTokenRefresh();

提前感谢您的帮助。

最佳答案

你不能像那样使用它的实例调用服务方法,因为它需要在工作线程上运行,

您必须启动服务并使用其他服务获取 token 。

只要当前 token 失效,FCM 就会调用 token 刷新,

通过扩展 IntentService 类创建另一个服务,

@Override
protected void onHandleIntent(Intent intent) {

try {
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + token);
// [END get_token]
sendRegistrationToServer(token);

// Subscribe to topic channels

// You should store a boolean that indicates whether the generated token has been
// sent to your server. If the boolean is false, send the token to your server,
// otherwise your server should have already received the token.
// [END register_for_gcm]
} catch (Exception e) {
Log.e(TAG, "Failed to complete token refresh", e);
// If an exception happens while fetching the new token or updating our registration data
// on a third-party server, this ensures that we'll attempt the update at a later time.
}
}

也可以通过onTokenRefresh()方法启动上述服务,避免代码重复。

关于android - 在 MyFirebaseInstanceIDService 的 onTokenRefresh 方法中始终获取 Null 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45767958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com