繁体   English   中英

如何处理推送通知的注销?

[英]How to handle unregistering of push notifications?

拥有一个Ionic应用程序(cordova),我正在使用此插件来处理通知的推送。

我对unregister功能感到困惑。

阅读官方GCM文档

仅在极少数情况下才需要注销,例如,如果您希望应用停止接收消息,或者您怀疑注册ID已被泄露。 通常,一旦应用程序具有注册ID,就无需更改它。

由于这些原因:

  • 注册ID与特定的登录用户没有关联。 如果您取消注册然后重新注册,则GCM可能会返回相同的ID或不同的ID-两种方法均无法保证。
  • 取消注册最多可能需要5分钟才能传播。
  • 取消注册后,重新注册可能最多需要5分钟才能传播。 在此期间,由于未注册状态,消息可能会被拒绝,并且所有这些之后,消息仍可能发送给错误的用户。

所以我想知道如果真的不建议这样做,为什么还有注销客户端的功能。

确实,从逻辑上讲,通过阅读,我想到了在客户端实现自定义注销功能,例如以下伪代码:

function unregister() {
     deleteRegistrationIdFromServerDatabaseOnly();
} 

=>无需注销客户端本身。

确实,由于服务器数据库上存在registrationIduserId之间的映射,只需清空registrationId值,就不会再有任何消息发送到客户端了。 期望什么。
因此,再次期待通知的唯一方法是让客户端再次注册。

因此,我重复一遍,注销客户端本身的需求/用例是什么?

真的不清楚。

我在这里找到以下内容

因此,我认为取消注册的唯一用途是要更改发件人ID。 我确定ID也会占用Google服务器上的某些资源,因此,如果您从服务器上删除ID后注销,也可能会对他们有所帮助

公共无效取消注册()

注销应用程序。 调用unregister()会停止来自服务器的所有消息。 这是一个阻塞的调用,您不应从UI线程调用它。 您应该很少(如果有的话)需要调用此方法。 不仅在资源上很昂贵,而且还会使您的注册ID失效,您永远不要进行不必要的更改。 更好的方法是让服务器停止发送消息。 仅在要更改发件人ID时使用注销。

如果我们无法连接到服务器以注销,则抛出IOException。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM