我已经在我的android应用程序中成功实现了推送通知的GCM
框架。但是我对于GcmIntentService
类中被Google覆盖的函数感到有点困惑。
@Override
protected void onUnregistered(Context context, String registrationId) {
//Do whatever you want
}
何时调用此方法?
答案 0 :(得分:3)
来自官方的java doc:
要从GCM取消注册,请执行以下操作:
Intent unregIntent = new
Intent("com.google.android.c2dm.intent.UNREGISTER");
unregIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new
Intent(), 0));
startService(unregIntent);
与注册类似 请求,此意图以异步方式发送,响应如下 com.google.android.c2dm.intent.REGISTRATION意图。
一个用例可能是在您的服务器上调用Web服务,以便它可以从已注册的设备列表中删除该设备。
答案 1 :(得分:2)
要从GCM取消注册Android设备,请将此行添加到要在代码中取消注册的位置
GCMRegistrar.unregister(this);
答案 2 :(得分:1)
使用GCMRegistrar.unregister() method从GCM服务器取消注册后将调用它。
正如GCMBaseIntentService文档中所述:
在设备取消注册后调用。
您还应该查看How Unregistration Works文档,因为它描述了设备取消注册的两种方式:手动和自动。
答案 3 :(得分:0)
onUnregistered(Context context, String regId):
发现您可以在应用程序即将卸载之前取消注册。 Dunno但希望如此,那就是单向
<activity
android:name=".UninstallIntentActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DELETE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" android:pathPattern="com.testpack.yourapp" />
</intent-filter>
</activity>
在该活动中,您可以调用::
onUnregistered(Context context, String regId):
取消注册该设备。希望这些必须有更好的方法。
答案 4 :(得分:-1)
我得到了Android开发者网站本身所期望的解决方案,实际上应该根据Google在开发人员网站上的描述卸载应用程序时自动调用此功能但是,此过程不会立即发生,因为Android不提供卸载打回来。请查看下面提到的链接:
http://developer.android.com/google/gcm/adv.html#unreg
感谢大家的支持。