我已经在我的 android 应用程序中成功实现了推送通知的框架。但是我对GoogleGCM
在 Class 中覆盖的函数有点困惑。GcmIntentService
@Override
protected void onUnregistered(Context context, String registrationId) {
//Do whatever you want
}
何时调用此方法?
我已经在我的 android 应用程序中成功实现了推送通知的框架。但是我对GoogleGCM
在 Class 中覆盖的函数有点困惑。GcmIntentService
@Override
protected void onUnregistered(Context context, String registrationId) {
//Do whatever you want
}
何时调用此方法?
来自官方 java 文档:
要从 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 服务,以便它可以从其注册设备列表中删除该设备。
要从 GCM 注销 android 设备,请在代码中您要注销的位置添加此行
GCMRegistrar.unregister(this);
在您使用GCMRegistrar.unregister() 方法从 GCM 服务器取消注册后,将调用它。
如GCMBaseIntentService文档中所述:
在设备取消注册后调用。
您还应该查看取消注册的工作原理文档,因为它描述了设备将被取消注册的两种方式:手动和自动。
onUnregistered(Context context, String regId):
发现您可以在应用程序即将被卸载之前取消注册。不知道,但希望这是唯一的方法
<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):
取消注册该设备。希望必须有一些更好的方法来解决这些问题。
我从 Android 开发者网站本身得到了我期望的解决方案,实际上当应用程序被卸载时,该函数应该自动调用,根据谷歌在开发者网站上的描述但是,这个过程不会立即发生,因为 Android 不提供卸载回调。请检查下面提到的链接:
http://developer.android.com/google/gcm/adv.html#unreg
感谢大家的支持。