過去数日間、アプリで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に表示されないことです。 。どんな種類の助けも当てはまるでしょう:)
これを使って :
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
onNewToken()は、新しいトークンが生成されたか、既存のトークンが更新された場合にのみ呼び出されます。
次のコードを追加して、アプリ内のどこにでも呼び出して、いつでもトークンをフェッチできます。
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "getInstanceId failed", task.getException());
return;
}
// Get new Instance ID token
String token = task.getResult().getToken();
}
});