每次应用程序启动时,在GCM上注册设备是正确的方法?

我正在开发一个phonegap应用程序,并按照本教程来实现PushPlugin。 但是,它说每次触发deviceready事件时都要注册应用程序。 这意味着它将会在GCM上注册该设备,即使它之前已被注册。

这让我感觉有些不舒服,因为这个设备已经注册了,所以我决定来这里问。 这是一个很好的做法吗? 如果没有,为什么? 这是否有一些长期的并发症?

Solutions Collecting From Web of "每次应用程序启动时,在GCM上注册设备是正确的方法?"

在我们的应用程序中,我们发现这是一个很好的做法,原因如下:

  1. 用于注册设备的API返回代表该设备的令牌。 从我所看到的情况来看,GCM并不保证令牌将无限期地保持有效。 因此,注册失败可能会导致您的设备令牌到期。

  2. 注册GCM,使服务意识到您的设备是活动的。 从我们观察到的,最近在GCM注册的设备似乎最快接收到推送通知。 也就是说,给定2个设备,最近一个注册(设备A)和另一个最近几天前注册的设备(设备B),设备A将总是更快地接收推送通知 – 通常在设备B之前几分钟。观察到的。

在Google的官方GCM客户端演示应用程序中 ,只有在设备上安装了新版本的应用程序时,才能注册到GCM。 所以我认为这是最好的做法。

也就是说,每次应用程序启动时注册都可以确保服务器获得注册ID,即使它以某种方式丢失了,但如果您的注册ID在服务器中保持正确,则这不应该成为问题。

GCM的问题是它不会永远持续下去,但时间不是你最大的限制。 如果您不想每次都注册几个必须注意的事件,而这些事件会导致令牌失效,其中一些是:

  1. 每次应用程序更新
  2. 手机重新启动时
  3. 几天没有通知(不太确定,但在我的情况似乎是真实的)

我的build议是:如果这是一个问题,而不是你自己的问题,那么你可以经常注册。 我会说跟踪令牌,看看它是否仍然有效是太多的工作。