【问题标题】:why Google Cloud Messaging notification not working with iPhone production environment?为什么 Google Cloud Messaging 通知不适用于 iPhone 生产环境?
【发布时间】:2015-07-25 09:45:05
【问题描述】:

我正在开发一个从 PHP 服务器接收推送通知的 iPhone 应用程序。

为了发送通知,我使用的是 Google Cloud Messaging。 GCM 在 iPhone 开发环境中工作正常,但我无法在 iPhone 生产环境中接收通知,并且我不断收到此错误消息

{
    "multicast_id":7214972633373567187,
    "success":0,
    "failure":1,
    "canonical_ids":0,
    "results":[
        {
            "error":"NotRegistered"
        }
    ]
}

我尝试了很多,也搜索了很多,但没有找到任何解决方案来解决这个问题。请帮帮我。

我创建了.p12生产环境证书并上传到谷歌云消息配置文件。

【问题讨论】:

    标签: ios iphone google-cloud-messaging


    【解决方案1】:

    终于找到了解决办法。现在使用 GCM(谷歌云消息)我可以向 iPhone 设备发送通知。

    appDelegate.m 中只需更改applicationDidBecomeActive 方法中的一个条件。

    这是用于生产环境的代码:

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
    

    这是用于开发环境的代码:

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
    

    【讨论】:

    • 我是这样做的:#ifdef DEBUG // 调试/测试构建所需的 NSNumber *sandbox = @YES; #else NSNumber *沙盒 = @NO; #endif NSDictionary *registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken, kGGLInstanceIDAPNSServerTypeSandboxOption:sandbox};
    【解决方案2】:

    设置"priority": "high"

    {
          "to": "gcm_device_token",
          "priority": "high",
          "content_available": false,
          "notification": {
            "sound": "default",
            "badge": "1",
            "title": "Push Title",
            "body": "Push Body"
          }
        }
    

    这是用于生产环境的代码: appDelegate.m

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
    

    这是用于开发环境的代码: appDelegate.m

    _registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
    

    【讨论】:

      【解决方案3】:

      要使用iPhone push notifications in Production 环境,您需要遵循以下几点:

      1. 您的.cer.p12 需要使用production profile 创建
      2. 您的应用需要上传到iTunes store
      3. 只有当您从 iTunes store 下载 binary 时,您的生产配置文件才会发挥作用,您可以在生产环境中发送和接收消息。

      【讨论】:

      • 感谢您的回答。我在生产环境中创建了所有证书,并在 Google Cloud Messaging 服务上上传了所有证书,但没有收到生产环境的单一通知
      • @nishitpatel 当我们谈论 iPhone 为什么要在 GCM 上上传?我想,在理想条件下,您创建 .cer 和 .p12 ,然后从中创建 .pem(s)。一旦你拥有两个 .pem(s) ,你就可以在 1 中合并,然后在你的代码中使用它
      • 你是对的,但我的服务器不支持 iPhone 推送通知,所以我使用 GCM 来避免服务器冲突。
      • 那你做错了。而且我不确定您的服务器不支持 iPhone 推送通知是什么意思。如果您使用 APN,它只需要 php 和 curl 支持来发送 iPhone 推送通知。
      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 2017-05-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 2018-12-15
      相关资源
      最近更新 更多