【问题标题】:Silent push notification (background) not received on macOS Catalina (Catalyst app)在 macOS Catalina(Catalyst 应用程序)上未收到静默推送通知(背景)
【发布时间】:2020-05-26 14:22:15
【问题描述】:

我目前正在使用 Apple Push Notifications 和基于令牌的身份验证方式(生成 JWT来自 keyId、teamId、...并使用 Apple 开发者控制台中生成的私钥对其进行签名)以将推送发送到 APN 服务。

我面临的问题是我可以成功发送“警报”通知(状态 200,标头 apns-push-type: alert)并在我的 iOS 和 MacOS 设备上接收它们(推送通知在生产和沙盒模式下成功显示)但是出于某种原因,“静默”推送(带有标题 apns-push-type: background)仅在我的 iOS 设备 (iPhone) 上接收,但不在我的 Mac 上AppDelegate 中的didReceiveRemoteNotification(...) 从未被调用) .

到目前为止我做了什么:

  • 确保为静默推送正确配置了 APN 请求标头:apns-push-type: background
  • 确保具有正确的 APN 主题标头:apns-topic: my.bundle.id(这对于沙盒/生产环境有所不同)
  • 添加了“半必需”优先级标头:apns-priority: 5(仅在传递后台推送时)
  • 验证创建的 JWT 有效,并在 APN auth 标头中使用:authorization: mytoken(必须如此,否则 APN 服务不会响应状态 200)
  • 确认我的应用程序具有 Xcode 中定义的正确权利和功能(我的推理:必须如此,否则“警报”推送通知也不起作用)
  • 仔细检查是否允许/启用了 Mac 应用的推送通知(检查系统设置)
  • 确保发送推送的设备令牌实际上来自用于接收推送的设备(例如我的 MacBook)
  • 检查我用于签署 JWT 的私钥是否具有 APN 功能
  • 在 Mac 应用程序运行但未对焦以及对焦时进行了测试

我为发送推送而执行的 APNs 请求是:

我在请求正文中发送到 APN 服务的有效负载 (JSON) 如下所示:

{
   "aps": {
      "content-available": 1 # defines push as "silent"
   },
   "data": { #some key-value pairs here }
}

在任何情况下(生产和沙盒,都带有 iOS 和 macOS 的设备令牌),我对 APN 的请求返回状态码 200。我的 MacBook 运行的是 Catalina 10.15.3。我在这里可能做错了什么,或者是 Catalyst 应用程序根本不支持的东西?

【问题讨论】:

    标签: ios macos push-notification apple-push-notifications catalyst


    【解决方案1】:

    哇这个问题。我对 APN 的头痛问题相当熟悉,但 latest docs 中突然出现了一些问题:

    此外,通知的 POST 请求应包含 apns-push-type 标头字段,其值为 background,以及 apns-priority 字段,值为 5。APNs 服务器需要 向 Apple Watch 发送推送通知时的 apns-push-type 字段, 并推荐它用于所有平台。有关详细信息,请参阅创建 并向 APNs 发送 POST 请求。

    优先级 5 有影响吗?

    此外,我通常尝试解决这些问题是在存档中进行测试,而不是在 Xcode 构建中进行测试。 AFAIK prod 推送服务器只能发送到 App Store、ad-hoc、企业或 testflight 构建,所以如果你只是从 Xcode 构建,我认为你不会收到任何带有生产 apns 的推送通知。

    【讨论】:

    • 感谢您的意见。我也尝试过使用 apes-priority 标头(值 5),不幸的是没有区别。我将尝试您提出的有关使用存档构建进行测试的最终建议。
    • @PhilippJahoda fyi 归档只是解决方案的一半,您仍然需要分发临时或我列出的其他方法之一来接收生产推送通知。这也使调试变得更加痛苦。希望你能解决这个问题,我很高兴知道你什么时候解决。
    • 是的,谢谢您的提醒。这件事是一个很大的痛苦。除此之外还有什么想法吗?我无法理解它可以在 iOS 上运行但不能在 macOS 上运行的事实。
    • 我有同样的问题:(
    猜你喜欢
    • 2019-12-16
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    相关资源
    最近更新 更多