每次应用启动时 GCM 重新注册
Posted
技术标签:
【中文标题】每次应用启动时 GCM 重新注册【英文标题】:GCM Re-registration each time the App starts 【发布时间】:2014-11-26 04:57:47 【问题描述】:在 GCM 上进行完整且清晰的注册后,我已经启动了我的应用程序。还将 Reg_Id 保存在本地和服务器数据库中。该应用程序与 GCM Reg_Id 完美地合作了一两天......然后停止。首先我认为我的程序有问题,但最后我知道当前设备的 GCM Reg_Id 已过期/无用。
在多次遇到这个问题后,我决定每次应用启动时都注册 GCM。
所以在我的MainActivity
的onCreate()
方法中我这样做了:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
if(!GcmResistered)
GCMRegistrar.register(this, SENDER_ID);
GcmResistered = true;
final String regId = GCMRegistrar.getRegistrationId(this);
if(regId == null)
GcmResistered= false;
else
//Save it in local and server
我遵循了笨拙的方式。首先我注册了 GCM,然后通过GCMRegistrar.getRegistrationId()
方法检查它,只是为了避免 Reg_Id 过期问题。否则它只会获取过期的 Reg_Id 并跳过注册。
有什么完美的方法可以帮助我摆脱这种笨拙的方法。我对 GCM_Reg ID 完全绝望,只是因为这个突然死亡。
【问题讨论】:
【参考方案1】:要解决这个问题,而不是在应用启动时重新注册,你应该写一个service
,它应该在一天内在后台运行。
通过这种方法,您将始终在您的服务器上更新 GCM ID,并且可以根据您的要求提供帮助。
【讨论】:
感谢您的回答。但我不想为此启动后台服务,因为它会比现在占用更多的资源。我只是想摆脱这种重新注册。 @RanjitPati 不要让它一直运行。启动它然后做你的工作然后停止它。 警报任务也是一个选项,每天安排一次。以上是关于每次应用启动时 GCM 重新注册的主要内容,如果未能解决你的问题,请参考以下文章
如何从应用服务器向 GCM 服务器发送发送重新注册请求以注册设备?