如何从GCM中的InstanceID获取令牌

时间:2017-07-20 15:14:14

标签: android firebase google-cloud-messaging firebase-cloud-messaging gcmlistenerservice

我正在学习如何通过GCM发送和接收推送通知,我跟着this tutorial

并在下面发布了一个名为GCMRegistrationIntentService的课程。关于以下行:

InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
//Getting the token from the instance id
token = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

什么是R.string.gcm_defaultSenderId)?我试图在strings.xml找到它,但这样的条目不可用

可以澄清并解释一下吗?

2 个答案:

答案 0 :(得分:0)

您可以使用FirebaseInstanceIdService获取令牌..如bellow

       public class FirebaseIDService extends FirebaseInstanceIdService {


     @Override
       public void onTokenRefresh() {
         String token = FirebaseInstanceId.getInstance().getToken();


      }
   }

不要忘记将下面的代码添加到andoridmainfest.xml

  <service android:name=".FirebaseIDService" android:exported="true">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>

答案 1 :(得分:0)

该字符串包含您的project_number,并由Gradle根据您的google-services.json文件自动生成:

  

JSON处理的主要结果是生成两个XML文件   您可以在Java代码中将其引用为Android资源。下面   是每个文件的示例:

     

应用/建造/生成/ RES /谷歌的服务/ {build_type} /values/values.xml

来源:https://developers.google.com/android/guides/google-services-plugin