4

如何从Firebase获取设备令牌(FCM注册令牌)?如何从Firebase获取所有设备令牌?

我正在使用firebase及其服务器使用node.js制作移动应用程序。

我想从服务器发送push notification消息,但我不知道如何获取设备令牌。

  1. 如何从外部服务器获取设备令牌?我现在正在使用Firebase管理员SDK。

  2. 设备令牌是否仅在应用程序连接到fcm服务器时生成?

  3. 当用户第一次运行应用程序并注册FCM服务器时,我应该将令牌保存到另一个数据库吗?

回答

4

1.如何从外部服务器获取设备令牌?我现在正在使用Firebase管理员SDK。

目前没有API从服务器端检索您应用的所有注册令牌。开发人员(您)有责任将注册令牌发送并存储到从客户端应用程序生成的App Server中。

2.设备令牌是否仅在应用连接FCM服务器时生成?

documentation几乎涵盖这个(见我的回答here):

在您的应用程序的初始启动时,FCM SDK生成的客户端应用程序实例的注册标记。

它在技术上没有连接到FCM服务器。它连接到FirebaseInstanceID服务(通过SDK),然后生成注册令牌。

3.用户第一次运行应用程序并注册FCM服务器时,我应该将令牌保存到另一个数据库吗?

正如我在#1中提到的,您应该将它保存在可轻松访问它的位置以发送消息。

+0

不能使用谷歌实例标识API从APNS令牌生成fcm令牌,并使用它将推送通知发送到iOS设备而无需集成Firebase SDK?我尝试过,但没有SDK集成,推动不起作用。一旦SDK被集成,相同的API开始返回正确的fcm令牌,这对推送工作正常。然后,您实际上可以移除Firebase SDK,并仍然使用Firebase接收推送通知。不能firebase简单地采取原始设备令牌,并发送推送通知使用正确的证书或身份验证密钥。为什么必须包含SDK? –

+0

此处描述了将APNS令牌转换为fcm注册令牌的API:https://developers.google.com/instance-id/reference/server#create_registration_tokens_for_apns_tokens –

3

当应用程序第一次连接时,会生成装置令牌,则此令牌必须存储在数据库中,如果一个新的令牌被分配

public class MyAndroidFirebaseInstanceIdService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyAndroidFCMIIDService"; 

    @Override 
    public void onTokenRefresh() { 
     //Get hold of the registration token 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     //Log the token 
     Log.d(TAG, "Refreshed token: " + refreshedToken); 
    } 
    private void sendRegistrationToServer(String token) { 
     //Implement this method if you want to store the token on your server 
    } 
} 

更换请参见下面的Tutorial