为什么Google Cloud Messaging通知无法与iPhone生产环境一起使用?

时间:2015-07-25 09:45:06

标签: ios iphone google-cloud-messaging

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

使用Google Cloud Messaging发送通知。 GCM在iPhone开发环境中运行良好,但我无法通过iPhone生产环境接收通知。我一直收到错误消息

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

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

我创建了.p12个生产环境证书,并将其上传到Google Cloud Messaging配置文件。

3 个答案:

答案 0 :(得分:10)

最后我找到了解决方案。现在使用GCM(Google Cloud Messaging)我可以向iPhone设备发送通知。

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

以下是用于生产环境的代码:

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

以下是用于开发环境的代码:

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

答案 1 :(得分: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};

答案 2 :(得分:1)

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

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