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