什么是Firebase中的FCM令牌?
在新的Firebase中,在通知下,他们提到开发人员可以向特定设备发送通知。 为此,在控制台中请求一个FCM令牌。 什么是确切的,我怎样才能得到这个令牌?
究竟是什么?
一个FCM令牌,或者通常被称为registrationToken
令牌 谷歌云消息 。 正如GCM文档中所述 :
由GCM连接服务器向客户端应用程序发出的ID,允许其接收消息。 请注意,注册代币必须保密。
我怎样才能得到这个令牌?
根据FCM文档 :
在您的应用程序初次启动时,FCM SDK为客户端应用程序实例生成注册令牌。 如果您要定位单个设备或创build设备组,则需要访问此令牌。
您可以通过扩展FirebaseInstanceIdService来访问令牌的值。 确保已经将该服务添加到清单中,然后在onTokenRefresh的上下文中调用getToken,并按如下所示logging值:
@Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: Implement this method to send any registration to your app's servers. sendRegistrationToServer(refreshedToken); }
onTokenRefreshcallback在每次生成新的标记时触发,因此在上下文中调用getToken可确保您正在访问当前可用的注册标记。 如果令牌尚未生成,FirebaseInstanceID.getToken()将返回null。
获取令牌之后,可以将其发送到应用服务器,并使用您的首选方法进行存储。 有关API的完整详细信息,请参阅实例ID API参考。
这里是简单的步骤添加这个gradle:
dependencies { compile "com.google.firebase:firebase-messaging:9.0.0" }
像GCM这样的清单不需要额外的许可。 没有接收器需要显示像GCM。 通过FCM, com.google.android.gms.gcm.GcmReceiver
自动添加。
迁移您的监听器服务
只有当您想访问FCM令牌时,才需要扩展InstanceIDListenerService
的服务。
如果你想的话,这是必要的
- pipe理设备令牌直接向单个设备发送消息,或将消息发送到设备组或
- 发送消息到设备组,或
- 使用服务器订阅pipe理API将设备订阅到主题。
在清单中添加服务
<service android:name=".MyInstanceIDListenerService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service> <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service>
更改MyInstanceIDListenerService
以扩展FirebaseInstanceIdService
,并更新代码以侦听令牌更新,并在生成新令牌时获取令牌。
public class MyInstanceIDListenerService extends FirebaseInstanceIdService { ... /** * Called if InstanceID token is updated. This may occur if the security of * the previous token had been compromised. Note that this is also called * when the InstanceID token is initially generated, so this is where * you retrieve the token. */ // [START refresh_token] @Override public void onTokenRefresh() { // Get updated InstanceID token. String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.d(TAG, "Refreshed token: " + refreshedToken); // TODO: Implement this method to send any registration to your app's servers. sendRegistrationToServer(refreshedToken); } }
欲了解更多信息请访问
- 如何将以前的GCM项目导入到Firebase中
- 如何强制令牌刷新
- 如何访问令牌
- 如何设置Firebase
我更新了关于“Firebae Cloud Messaing令牌”,我可以获取信息。
我真的很想知道这个改变,所以只是发送邮件给支持团队。 Firebase云消息传递令牌将再次返回到服务器密钥。 没有什么可以改变的。 我们可以很快看到服务器密钥。 干杯!