2

我已经在我的 android 应用程序中成功实现了推送通知的框架。但是我对GoogleGCM在 Class 中覆盖的函数有点困惑。GcmIntentService

@Override
protected void onUnregistered(Context context, String registrationId) {

//Do whatever you want

}

何时调用此方法?

4

5 回答 5

3

来自官方 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 服务,以便它可以从其注册设备列表中删除该设备。

于 2013-01-01T14:38:26.207 回答
2

要从 GCM 注销 android 设备,请在代码中您要注销的位置添加此行

GCMRegistrar.unregister(this);
于 2013-05-03T10:56:47.617 回答
1

在您使用GCMRegistrar.unregister() 方法从 GCM 服务器取消注册后,将调用它。

GCMBaseIntentService文档中所述:

在设备取消注册后调用。

您还应该查看取消注册的工作原理文档,因为它描述了设备将被取消注册的两种方式:手动和自动。

于 2013-01-01T14:36:01.493 回答
0
onUnregistered(Context context, String regId):

在设备从 GCM 注销后调用。通常,您应该将 regid 发送到服务器,以便它取消注册设备。

发现您可以在应用程序即将被卸载之前取消注册。不知道,但希望这是唯一的方法

在应用程序即将被卸载之前调用 Activity,使用以下 Intent-filters 添加 Activity::

 <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):

取消注册该设备。希望必须有一些更好的方法来解决这些问题。

于 2013-01-01T14:40:06.440 回答
-1

我从 Android 开发者网站本身得到了我期望的解决方案,实际上当应用程序被卸载时,该函数应该自动调用,根据谷歌在开发者网站上的描述但是,这个过程不会立即发生,因为 Android 不提供卸载回调。请检查下面提到的链接:

http://developer.android.com/google/gcm/adv.html#unreg

感谢大家的支持。

于 2013-01-04T14:56:31.497 回答