21

В новой Firebase, в разделе «Уведомление», они упомянули, что разработчик может отправлять уведомления на конкретное устройство. Для этого в консоли он запрашивает токен FCM. Что это точно и как я могу получить этот токен?Что такое токен FCM в Firebase?

+7

читать документы. они объясняют это довольно хорошо. – Shubhank

ответ

30

Что это такое?

FCM Token, или широко известный как registrationToken, как в . Как описано в документе GCM docs:

Идентификатор, выданный серверами соединения GCM, в клиентское приложение, которое позволяет ему получать сообщения. Обратите внимание, что токены регистрации должны храниться в секрете.


Как я могу получить эту фишку?

Согласно FCM docs:

При первоначальном запуске вашего приложения, то FCM SDK генерирует регистрационный маркер для экземпляра приложения клиента. Если вы хотите настроить таргетинг на отдельные устройства или создать группы устройств, вам необходимо получить доступ к этому токену.

Вы можете получить доступ к значению маркера, расширив FirebaseInstanceIdService. Убедитесь, что вы добавили услугу манифеста, а затем вызвать getToken в контексте onTokenRefresh, и войти значение, как показано ниже:

@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); 
} 

The onTokenRefreshcallback пожары, когда новый маркер генерируется, поэтому вызов getToken в его контексте гарантирует, что вы получаете доступ к текущему доступному токену регистрации. FirebaseInstanceID.getToken() возвращает значение null, если токен еще не создан.

После того, как вы получили токен, вы можете отправить его на свой сервер приложений и сохранить его, используя ваш предпочтительный метод. Подробную информацию об API см. В справочной информации API-интерфейса экземпляра.

+1

Когда этот токен FCM генерируется в первый раз? Нужна ли проверка подлинности с использованием firebase, например, хранилища благ? – arunrk

+0

'registrationToken' обычно генерируется в первый раз, когда приложение впервые установлено. И при выполнении обычного процесса. Вы должны отправить сгенерированную 'registrationToken' на ваш сервер приложений. Извините, но можете ли вы подробно остановиться на * Нужна ли проверка подлинности с помощью firebase, например, хранилища для базы данных *? –

+1

@arunrk - я рекомендую вам пройти через это: https://github.com/firebase/quickstart-android/tree/master/messaging –

4

Вот простые шаги добавить Gradle:

dependencies { 
    compile "com.google.firebase:firebase-messaging:9.0.0" 
} 

Никаких дополнительных разрешений не требуется в манифесте, как ГКМ. Не требуется приемник, чтобы проявить себя как GCM. С FCM добавляется com.google.android.gms.gcm.GcmReceiver.

Перенесите ваш сервис слушателя

Службы распространения InstanceIDListenerService теперь требуется только, если вы хотите получить доступ к фишке ТСМА.

Это необходимо, если вы хотите

  • Управление лексемы устройства на передачу сообщений на одном устройстве непосредственно, или Отправить сообщение для группы устройств или
  • Отправить сообщение для группы устройств или
  • Подключить устройства к темам с помощью 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. How to import former GCM Projects into Firebase
  2. How to force a token refresh
  3. How to access the token
  4. How to set up firebase
1

Я обновляю о «Firebae Cloud Мессы что я мог получить информацию.

Я действительно хотел узнать об этом изменении, поэтому просто отправил письмо в службу поддержки. Токен Firebase Cloud Messaging снова вернется к серверному ключу. Ничего не изменится. Мы снова увидим ключ сервера. Ура!

+0

Все, что изменит это метка в [панели Cloud Messaging в настройках проекта] (https://console.firebase.google.com/project/ _/настройки/cloudmessaging). Значение останется таким, каким вы его видите. Извините за любую путаницу, которую может вызвать новый ярлык. –