GetToken()は推奨されなくなったので、プッシュ通知を送信するためのFirebaseトークンを取得する正しい方法は何かを知りたいです。
ドキュメンテーション と言う:
このメソッドは廃止されました 。 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
}
このようにして、コードはよりスリムであり続け、最初のアプローチを使用するのに必要でさえないでしょう。
FirebaseInstanceIdServiceは非推奨になりました。
FirebaseMessagingService
のonNewToken()
をオーバーライドするだけです
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);
}
});