何时调用InstanceIDListenerService以及如何测试它?

时间:2015-06-04 07:14:08

标签: google-cloud-messaging token

现在,对于Android GCM的最后一次更改,提供了InstanceIDListenerService,以便能够通过覆盖onTokenRefresh方法来侦听令牌刷新。

但是什么时候会调用这个方法?有没有办法手动测试它?

2 个答案:

答案 0 :(得分:42)

要从命令行运行手动测试:

adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n your.package.name/your.own.MyInstanceIDListenerService

其中:

  • 您的应用包是 your.package.name
  • InstanceIDListenerService实现的类名是 your.own.MyInstanceIDListenerService

这将向服务发送一个意图,其中包含基类所期望的额外内容。

为此,服务需要暂时设置为exported

<service
    android:name="your.own.MyInstanceIDListenerService"
    android:exported="true">
    <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
    </intent-filter>
</service>

注意: 这应该只能暂时,永远不会在生产中导出,否则其他应用可以访问您的服务。

答案 1 :(得分:2)

如果应用程序的令牌已由Instance ID服务更新,则将调用onTokenRefresh()。调用onTokenRefresh()的主要原因是允许您使用新令牌更新您的应用服务器,以便它可以向您的应用发送消息。

您不必手动测试令牌值。令牌主要由应用程序服务器使用,以向您的应用程序发送消息。因此,当您的应用程序首次运行时,您应该调用InstanceID.getToken()并将令牌发送到您的服务器。然后,如果更新了令牌,则再次调用InstanceID.getToken()并再次将新值发送到服务器。

点击此处查看example