什么是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); } } 

欲了解更多信息请访问

  1. 如何将以前的GCM项目导入到Firebase中
  2. 如何强制令牌刷新
  3. 如何访问令牌
  4. 如何设置Firebase

我更新了关于“Firebae Cloud Messaing令牌”,我可以获取信息。

我真的很想知道这个改变,所以只是发送邮件给支持团队。 Firebase云消息传递令牌将再次返回到服务器密钥。 没有什么可以改变的。 我们可以很快看到服务器密钥。 干杯!