web-dev-qa-db-ja.com

FirebaseInstanceId.getInstance()。getToken()が廃予定になったため、今何を使用するか

GetToken()は推奨されなくなったので、プッシュ通知を送信するためのFirebaseトークンを取得する正しい方法は何かを知りたいです。

54

ドキュメンテーション と言う:

このメソッドは廃止されました 。 getInstanceId()を支持しています。

getInstanceId() はInstanceIdResultと共にTaskを返します。このような:

 FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {                    
                @Override
                public void onSuccess(InstanceIdResult instanceIdResult) {
                      String deviceToken = instanceIdResult.getToken();
                      // Do whatever you want with your token now
                      // i.e. store it on SharedPreferences or DB
                      // or directly send it to server 
                }
});

_ update _ :このアプローチは文字通り FirebaseInstanceId.getInstanceId()。getToken() の使用に取って代わることは事実ですが、 FirebaseInstanceIdServiceという事実は解決されません も廃止予定となっているので、別の質問があります。常にトークンを返すということであれば、どのActivityコンテキストでも使用できます。しかし、作成時にのみトークンを取得したい場合、および更新されることがめったにない場合はどうなりますか。そのためには、新しいメソッド onNewToken を古い FirebaseMessagingService 実装からオーバーライドする必要があります。(はい、 "InstanceId"ではなく "Messaging")

@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    String deviceToken = s;
    // Do whatever you want with your token now
    // i.e. store it on SharedPreferences or DB
    // or directly send it to server 
}

このようにして、コードはよりスリムであり続け、最初のアプローチを使用するのに必要でさえないでしょう。

97
Facundo

FirebaseInstanceIdServiceは非推奨になりました。

FirebaseMessagingServiceonNewToken()をオーバーライドするだけです

public class LatestFirebaseMessagingService extends FirebaseMessagingService {

@Override
public void onNewToken(String mToken) {
    super.onNewToken(mToken);
    Log.e("TOKEN",mToken);
}

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
}} 

InAndroidManifest.xml

<service
        Android:name=".LatestFirebaseMessagingService"
        Android:stopWithTask="false">
        <intent-filter>
            <action Android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
</service>

getToken()これも非推奨です。

あなたの活動の中でトークンを取得する必要がある場合は、以下のコードを使用してください。

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {
           String mToken = instanceIdResult.getToken();
           Log.e("Token",mToken);
     }
 });
24
KUSHA B K