在新的 Google Cloud Messaging 上取消注册
Posted
技术标签:
【中文标题】在新的 Google Cloud Messaging 上取消注册【英文标题】:Unregister on new Google Cloud Messaging 【发布时间】:2013-07-18 11:42:58 【问题描述】:我正在使用新的谷歌云消息传递
(GoogleCloudMessaging gcm =
GoogleCloudMessaging.getInstance (context);)
我正在遵循这个例子,它非常好并且完美地工作:
https://github.com/commonsguy/cw-omnibus/tree/master/Push/GCMClient2
通过这个示例,我可以在 GCM 中注册,但我尝试取消注册失败。
在文档中表明您应该使用以下意图:
com.google.android.c2dm.intent.UNREGISTER
并按如下方式使用:
Intent unregIntent = new Intent ("com.google.android.c2dm.intent.UNREGISTER");
unregIntent.putExtra ("app", PendingIntent.getBroadcast (this, 0, new Intent (), 0));
StartService (unregIntent);
不工作...
正如我所说,注册工作正常,但不知道如何取消注册。
我必须做的不仅仅是意图吗?我做错了什么?
感谢您的帮助
感谢和问候
【问题讨论】:
非常好的教程tech-papers.org/… 【参考方案1】:如果您使用新的GoogleCloudMessaging
类,则不需要使用com.google.android.c2dm.intent.UNREGISTER
意图。只需使用GoogleCloudMessaging.unregister()。
public void unregister()
注销应用程序。调用 unregister() 会停止来自服务器的任何消息。这是一个阻塞调用——你不应该从 UI 线程调用它。您应该很少(如果有的话)需要调用此方法。它不仅在资源方面很昂贵,而且会使您的注册 ID 无效,而您的注册 ID 永远不应进行不必要的更改。更好的方法是让您的服务器停止发送消息。仅当您希望您的应用程序永久停止使用 GCM,或者您有令人信服的理由回收您的注册 ID 时,才使用取消注册。 投掷 如果我们无法连接到服务器以取消注册,则会出现 IOException。
【讨论】:
我可以在应用未安装时调用它吗?如果是怎么办? @Fahim 不,卸载应用时无法运行逻辑。 @Fahim 卸载应用时无需注销设备。 GCM 为您自己做,正如这个 SO 答案中提到的 - ***.com/a/28057615/3913366 。【参考方案2】:取消注册最多可能需要 5 分钟才能传播。
https://developer.android.com/google/gcm/adv.html#unreg-why
【讨论】:
虽然此链接可能会回答已发布的问题,但您最好包含其中的一些摘录,可能包含一些代码 sn-ps,因为该页面将来可能无法使用。 欢迎来到未来。【参考方案3】:旧方式(已弃用):
公共同步无效unregister()
新方式(替代使用):
InstanceID.deleteToken();
或
InstanceID.deleteInstanceID();
注销应用程序。调用 unregister() 停止任何消息 从服务器。这是一个阻塞调用——你不应该从 用户界面线程。您应该很少(如果有的话)需要调用此方法。 它不仅在资源方面很昂贵,而且它使所有 您从 register() 或 subscribe() 返回的注册 ID。这 不应不必要地进行。更好的方法是简单地拥有 您的服务器停止发送消息。
【讨论】:
以上是关于在新的 Google Cloud Messaging 上取消注册的主要内容,如果未能解决你的问题,请参考以下文章
如何在新的 Google 表格中将持续时间格式化为 HH:mm
如何在新的 Google Play Console 中管理 Instant App?
如何在新的 Google Play 控制台中停用所有旧版本的 APK?
Chrome_01_点击 Google搜索结果在新的页面打开
使用新的 Google Cloud 日志记录 jar 时,日志未显示在 Google Cloud Platform Stackdriver 中