【问题标题】:IOS App implementing Google Cloud Messaging receives notifications only when activeIOS 应用实现 Google Cloud Messaging 仅在活动时接收通知
【发布时间】:2015-06-10 11:13:56
【问题描述】:

我已经在我的 IOS 应用程序中实现了新的 Google Cloud Messaging 框架来处理推送通知。实施后,我只能在应用程序处于活动状态且处于前台时接收推送通知。如果应用程序已关闭或在后台,我的设备中没有收到通知警报。在 iOS 通知设置中,我看到我的应用已启用接收它们。

【问题讨论】:

    标签: ios google-cloud-messaging


    【解决方案1】:

    我遇到了类似的问题,只有当应用程序正在运行(前台/后台)时应用程序才会收到通知,并且如果应用程序被手动终止(终止)则不会收到任何通知

    我所要做的就是在发送通知正文时将priority 和content_available 添加到通知正文中(正如@KayAnn 指出的那样)

    它应该是这样的:

    {
      "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
      "content_available" : true,
      "priority": "high",
      "notification" : {
        "body" : "Winter is coming!",
        "title" : "John Snow"
        }
    }
    

    请记住,我在Info.plist 中也有UIBackgroundModes: remote-notification。

    【讨论】:

      【解决方案2】:

      谷歌documentations(在步骤4中)引用:

      如果 GCMExample 应用程序在前台运行,您可以 查看打印到 Xcode 调试的通知内容 安慰;如果 GCMExample 应用程序在后台,您将收到 APNS 通知。

      因此,为了在应用程序处于后台时接收消息,您必须将 APNS 注册为选项,如下所述here。

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

      编辑:

      您还需要做一些其他的事情:
      1)在发布应用程序时移至生产证书

      在 JSON 有效负载中:
      2) 使用"content_available": "true" 或
      3) 设置"priority": "high"

      编辑:2

      在同一有效负载中使用content_available 和priority high 与Apple 的建议(Apple docs)相冲突。我在测试过程中遇到了这个问题。在这种情况下,消息可能会受到限制。

      请改用这两个参数中的一个/或。
      关于工作用例的提示:
      - content_available:仅在您发送数据且没有其他通知特定参数(如警报、徽章、声音等)时使用。这是因为默认情况下 content_available 消息是静默推送。
      - Priority: high:当您发送应该立即到达用户的通知时使用它,即时间紧迫的通知,例如游戏分数。

      【讨论】:

      • 嗨 KayAnn,我有你在 didRegisterForRemoteNotificationsWithDeviceToken 方法中编写的代码我有推送通知的开发证书,但是当应用程序不活动时无法接收通知。我在 iPad 3 上测试
      • APNS 相关的 impl 似乎有问题。请仔细阅读:developer.apple.com/library/ios/documentation/…。如果您仍然难以发布应用委托代码。
      • 我尝试在不使用 GCM 的情况下发送推送通知,遵循本教程 link 并且它们完美到达。如果我尝试通过 GCM 脚本发送通知,它们还没有到达后台应用程序或关闭。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      相关资源
      最近更新 更多