iOS-GCM集成:每次都需要进行注册

时间:2016-03-02 14:23:04

标签: ios google-cloud-messaging apple-push-notifications

您是否需要每次都通过以下方式向GCM注册APNS设备令牌:

tokenWithAuthorizedEntity:scope:options:handler 

每次启动应用程序时,即使设备令牌完全相同。

根据GCM的示例应用,每次启动应用时,都会调用[[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:_gcmSenderID [1]。这是因为注册是从didRegisterForRemoteNotificationsWithDeviceToken调用的,每次启动应用程序时都需要调用它 - "设备令牌可以更改,因此您的应用程序需要在每次启动时重新注册并将收到的令牌传递回您的。服务器#&34; [2]

我可以存储registrationToken和deviceToken,并且只在deviceToken更改时重新注册吗? GGLInstanceIDDelegate#onTokenRefresh的存在似乎表明当你的deviceToken对registrationToken进行更改时,有一种机制可以通知,但我希望这一点得到确认。

[1] https://github.com/googlesamples/google-services/blob/master/ios/gcm/GcmExample/AppDelegate.m#L151

[2] https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html

1 个答案:

答案 0 :(得分:0)

在Google的官方GCM Client Demo App中,每次应用启动时注册都会确保您的服务器获得注册ID,即使它以某种方式丢失了注册ID,但如果您的注册不是问题,那么这不应该是一个问题ID在服务器中正确保留。

请注意,Google可能会定期刷新注册ID,因此您应该设计多次调用的应用。您的应用需要能够做出相应的响应。

总而言之,您应该始终将令牌视为在重新启动应用程序时可能会更改。