最近对 Android GCM 进行了最新更改,现在提供 InstanceIDListenerService 以便通过重写 onTokenRefresh 方法监听令牌刷新。
但是,这个方法什么时候被调用?有没有办法手动测试它?
最近对 Android GCM 进行了最新更改,现在提供 InstanceIDListenerService 以便通过重写 onTokenRefresh 方法监听令牌刷新。
但是,这个方法什么时候被调用?有没有办法手动测试它?
要从命令行手动测试它,请运行:
adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n your.package.name/your.own.MyInstanceIDListenerService
其中:
这将向服务发送带有基类期望的额外信息的意图。
为了使其正常工作,服务需要临时设置为导出
状态:
<service
android:name="your.own.MyInstanceIDListenerService"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
注意: 这个操作应该只在临时情况下执行,永远不要在生产环境中导出,否则其他应用程序可能会访问您的服务。
android:exported ="true"
进行修改(在测试完成后别忘了改回来)。 - Ognyanadb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" 你的包名
。请注意不要改变原文意思,使翻译更加通俗易懂,并且不要在回答中添加任何额外的内容。 - Muhammad Riyaz如果实例ID服务更新了你的应用程序的令牌,就会调用onTokenRefresh()。onTokenRefresh() 被调用的主要原因是让您更新应用程序服务器的新令牌,使其能够向您的应用程序发送消息。
您不需要手动测试令牌值。令牌主要由您的应用程序服务器用于向您的应用程序发送消息。因此,当您的应用程序首次运行时,应调用InstanceID.getToken() 并将令牌发送到您的服务器。然后,如果令牌已更新,您再次调用InstanceID.getToken() 并将新值再次发送到您的服务器。
在这里查看一个示例:链接