如何处理取消注册推送通知?

时间:2015-03-15 15:18:28

标签: android cordova google-cloud-messaging ionic phonegap-pushplugin

拥有Ionic应用程序(cordova),我使用此plugin来处理推送通知。

我对unregister功能感到困惑。

阅读official GCM documentation

  

您应该只在极少数情况下取消注册,例如您需要   一个应用程序停止接收消息,或者如果您怀疑该消息   注册ID已被盗用。一般来说,一旦应用程序有一个   注册ID,您不需要更改它。

出于这些原因:

  
      
  • 注册ID与特定登录用户无关。如果您取消注册然后重新注册,GCM可能会返回相同的ID或   一个不同的ID - 无论如何都不能保证。
  •   
  • 取消注册最多可能需要5分钟才能传播。
  •   
  • 取消注册后,重新注册可能需要最多5分钟才能传播。在此期间,邮件可能会被拒绝   未注册的状态,以及所有这些消息   可能仍会找错用户。
  •   

所以我想知道为什么如果不推荐这样做会取消注册客户端的功能。

事实上,从逻辑上讲,通过阅读,我考虑在客户端实现自定义取消注册功能,如下面的伪代码:

function unregister() {
     deleteRegistrationIdFromServerDatabaseOnly();
} 

=>无需取消注册客户端本身。

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

所以,我再说一遍,取消注册客户端本身的需要/用例是什么?

它真的不太清楚。

1 个答案:

答案 0 :(得分:4)

我找到了以下here

所以我认为取消注册的唯一用途是,如果您想更改发件人ID。我确信id在google服务器上也需要一些资源,因此,如果你在从服务器中删除id之后取消注册,它可能会有所帮助

  

public void unregister()

     

取消注册该应用程序。调用unregister()会停止任何消息   从服务器。这是一个阻止通话 - 你不应该来电话   UI线程。您应该很少(如果有的话)需要调用此方法。   它不仅资源昂贵,而且无效   您的注册ID,您不应该不必要地更改。一个   更好的方法是让服务器停止发送消息。   如果您想更改发件人ID,请仅使用取消注册。

     

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