FCM注册令牌

时间:2017-02-16 22:59:17

标签: token registration

我需要从我的Android应用程序发送到FCM数据库的注册令牌的值。如何访问它以及它存储在FCM数据库中的哪个位置。

提前致谢。

2 个答案:

答案 0 :(得分:1)

步骤1:首先创建您的Android项目,然后从AndroidManifest.xml复制包名称。 假设包名是package =" com.learn.fbc.cloudmessaging"

第2步:转到https://console.firebase.google.com/

点击“添加项目'

设置项目名称

设置国家/地区

点击“创建项目”

第3步:点击“将Firebase添加到您的Android应用”'

Step4(重要步骤):设置包名(在我们的例子中,它应该是com.learn.fbc.cloudmessaging)

第5步:点击“注册应用”

Step6:Downlod' google-services.json'到你的机器

第7步:复制' google-services.json'到项目的app /文件夹[重要步骤]

步骤8。转到项目级build.gradle并设置

dependencies
{
 classpath 'com.google.gms:google-services:3.0.0'
    
}

步骤9。将以下内容添加到您的应用级别build.gradle

 dependencies
 {
  compile 'com.google.firebase:firebase-core:9.6.0'
  compile 'com.google.firebase:firebase-messaging:9.6.0'
 }

 apply plugin: 'com.google.gms.google-services'

步骤10:同步你的gradle

步骤11:扩展FirebaseInstanceIdService类,例如

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = 
       MyFirebaseInstanceIDService.class.getSimpleName();
 @Override
  public void onTokenRefresh() {
    super.onTokenRefresh();
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();

    sendRegistrationToServer(refreshedToken);

    Log.d(TAG, "onTokenRefresh: "+refreshedToken);

}

 private void sendRegistrationToServer(final String token) {
    // sending gcm token to server
    Log.d(TAG, "sendRegistrationToServer: " + token);
 }
}

步骤12:扩展FirebaseMessagingService类 e.g

public class MyFirebaseMessagingService  extends FirebaseMessagingService {
private static final String TAG = "FCM Service";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO: Handle FCM messages here.
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated.
    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
 }
}

步骤13:向清单文件声明两种服务,例如

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">


    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <!-- Firebase Notifications -->
    <service android:name=".MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    <service android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
    <!-- ./Firebase Notifications -->``
</application>

步骤14:在您的设备上运行您的应用

步骤15:现在您可以从firebase云端服务发送推送通知进行测试。

答案 1 :(得分:0)

关于如何将注册令牌发送到数据库的代码片段会更好。 FCM不会自动存储令牌,您必须实现保存逻辑。可以将它附加到您的用户节点,并始终在onTokenRefresh()方法内更新它。像这样:

@Override
public void onTokenRefresh() {

    String refreshToken = FirebaseInstanceId.getInstance().getToken();
    Log.e("FCM TokenID:", refreshToken);
    saveToServer(refreshToken);
}

  void saveToServer(){ 
     //Implement save/update logic here

}