为什么 Google Cloud Messaging 通知不适用于 iPhone 生产环境?

why Google Cloud Messaging notification not working with iPhone production environment?

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

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

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

我试了很多,也用谷歌搜索了很多,但没有找到解决这个问题的方法。请帮帮我。

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

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

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

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

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

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

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

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

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

设置"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};