Bha*_*tta 65 android push-notification firebase firebase-cloud-messaging
我想知道在不推荐使用getToken()的情况下,获取Firebase令牌以发送推送通知的正确方法是什么.
Fac*_*ndo 110
正如文件所说:
此方法已弃用.赞成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
}
});
Run Code Online (Sandbox Code Playgroud)
更新:虽然这种方法确实取代了FirebaseInstanceId.getInstanceId().getToken()的使用,但它并没有解决FirebaseInstanceIdService也被弃用的事实,而是留下了另一个问题:在哪里使用它?它可以在任何活动上下文中使用,它将始终返回令牌.但是,如果我们只想在创建时获取令牌并且很少更新它,该怎么办?为此,您应该从旧的FirebaseMessagingService实现覆盖新方法onNewToken :(是,"消息",而不是"InstanceId")
@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
}
Run Code Online (Sandbox Code Playgroud)
这种方式代码将保持更精简,甚至不需要使用第一种方法.
KUS*_*B K 27
FirebaseInstanceIdService已弃用.
只是覆盖 onNewToken()在FirebaseMessagingService
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);
}}
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml
<service
android:name=".LatestFirebaseMessagingService"
android:stopWithTask="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
getToken() 这也被弃用了.
如果您需要在活动中获取令牌,请使用以下代码.
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this, new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String mToken = instanceIdResult.getToken();
Log.e("Token",mToken);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47131 次 |
| 最近记录: |