拥有Ionic应用程序(cordova),我使用此plugin来处理推送通知。
我对unregister
功能感到困惑。
您应该只在极少数情况下取消注册,例如您需要 一个应用程序停止接收消息,或者如果您怀疑该消息 注册ID已被盗用。一般来说,一旦应用程序有一个 注册ID,您不需要更改它。
出于这些原因:
- 注册ID与特定登录用户无关。如果您取消注册然后重新注册,GCM可能会返回相同的ID或 一个不同的ID - 无论如何都不能保证。
- 取消注册最多可能需要5分钟才能传播。
- 取消注册后,重新注册可能需要最多5分钟才能传播。在此期间,邮件可能会被拒绝 未注册的状态,以及所有这些消息 可能仍会找错用户。
所以我想知道为什么如果不推荐这样做会取消注册客户端的功能。
事实上,从逻辑上讲,通过阅读,我考虑在客户端实现自定义取消注册功能,如下面的伪代码:
function unregister() {
deleteRegistrationIdFromServerDatabaseOnly();
}
=>无需取消注册客户端本身。
实际上,由于在registrationId
和userId
之间存在服务器数据库上的映射,只需清空registrationId
值,就不会再向客户端发送任何消息;期待什么。
因此,再次期待通知的唯一方法是让客户再次注册。
所以,我再说一遍,取消注册客户端本身的需要/用例是什么?
它真的不太清楚。
答案 0 :(得分:4)
我找到了以下here
所以我认为取消注册的唯一用途是,如果您想更改发件人ID。我确信id在google服务器上也需要一些资源,因此,如果你在从服务器中删除id之后取消注册,它可能会有所帮助
public void unregister()
取消注册该应用程序。调用unregister()会停止任何消息 从服务器。这是一个阻止通话 - 你不应该来电话 UI线程。您应该很少(如果有的话)需要调用此方法。 它不仅资源昂贵,而且无效 您的注册ID,您不应该不必要地更改。一个 更好的方法是让服务器停止发送消息。 如果您想更改发件人ID,请仅使用取消注册。
如果我们无法连接到服务器以取消注册,则抛出IOException。