web-dev-qa-db-ja.com

onNewToken()は呼び出されません

過去数日間、アプリで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に表示されないことです。 。どんな種類の助けも当てはまるでしょう:)

12
Adi Harel

これを使って :

FirebaseMessaging.getInstance().setAutoInitEnabled(true);
0
Yamini

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();


        }
    });
0
rajkabbur