设置允许GCM注册而不使用APNS令牌iOS

时间:2016-04-12 10:48:05

标签: ios objective-c google-cloud-messaging

我正在开发这个iOS应用程序,这不是我第一次处理GCM但是我遇到了这个setAllowGCMRegistrationWithoutAPNSToken错误而且我无法在互联网上找到任何内容!

这是错误消息:

"[[GGLInstanceID sharedInstance] startWithConfig:[GGLInstanceIDConfig defaultConfig]];"

这是代码:

- (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken {
// [END receive_apns_token]
// [START get_gcm_reg_token]
// Start the GGLInstanceID shared instance with the default config and request a registration
// token to enable reception of notifications
[[GGLInstanceID sharedInstance] startWithConfig:[GGLInstanceIDConfig defaultConfig]];
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                         kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
[[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:_gcmSenderID
                                                    scope:kGGLInstanceIDScopeGCM
                                                  options:_registrationOptions
                                                  handler:_registrationHandler];
// [END get_gcm_reg_token]}

1 个答案:

答案 0 :(得分:0)

尝试在setting up a GCM App on IOS上遵循本指南。

在接收消息之前,iOS应用程序需要向Apple推送通知服务(APN)和GCM连接服务器注册。当客户端应用程序向GCM注册时,它会收到一个注册令牌,然后必须将其发送到应用服务器(APN设备令牌发送到服务器)。客户端应用程序必须存储一个布尔值,指示是否已将注册令牌发送到服务器。

注册APN并获取GCM注册令牌:

  1. 包含GCM标题:#import <Google/CloudMessaging.h>

  2. 注册远程通知并获取APNs令牌。

  3. 配置并初始化Instance ID,并使用以下参数调用tokenWithAuthorizedEntity:scope:options:handler:

    • 应用服务器sender ID

    • kGGLInstanceIDScopeGCM范围,GGLInstanceID.h

    • 中定义
    • APNs令牌,设置为选项字典的一部分,密钥为kGGLInstanceIDRegisterAPNSOption,值设置为二进制APNS令牌

    • kGGLInstanceIDAPNSServerTypeSandboxOption,沙盒的值为YES,生产环境的值为NO。这是选项词典的一部分。

  4. 检索到令牌后,将其发送到您的应用服务器。

  5. 有关您的错误消息:

    [[GGLInstanceID sharedInstance] startWithConfig:[GGLInstanceIDConfig defaultConfig]]
    

    尝试将其替换为

    [[GGLInstanceID sharedInstance] startWithConfig:instanceIDConfig]
    

    选中fix example of custom delegates