【问题标题】:iOS Push notification service extension (didReceive) is not called未调用 iOS 推送通知服务扩展 (didReceive)
【发布时间】:2021-02-10 15:27:33
【问题描述】:
  • 我已经在 xCode 中设置了推送通知服务扩展。
  • 我已将目标部署版本设置为 13.0(应用程序也是 13.0)
  • 扩展名的Info.plist 具有正确的NSExtensionPrincipalClass
  • 为了测试,我正在运行扩展目标并选择应用程序
  • 我正在运行 iOS 14.2 的设备上测试所有内容
  • 我尝试了以下有效负载:
{
      "gcm.message_id" : "XXXXX",
      "type" : "XXXXX",
      "url" : "XXXXX",
      "body" : "XXXX",
      "title" : "XXX",
      "google.c.a.e" : "XX",
      "aps" : {
        "mutable-content" : 1,
        "alert" : {
          "title" : "Test",
          "body" : "Test"
        },
        "category" : "XXXX",
        "content-available" : 1
      },
      "channel_id" : "XXXX"
}

我也尝试排除mutable-content,但仍然没有调用服务扩展。
我也尝试过像这样更简单的有效载荷:

{
"aps" : {
        "mutable-content" : 1,
        "alert" : {
          "title" : "Test",
          "body" : "Test"
        },
        "category" : "XXXX",
        "content-available" : 1
      }
}

无论有没有mutable-content,这里也没有运气

作为测试的结果,我总是可以看到推送通知,但是扩展 `didReceive` 方法中的断点没有被触发。有效载荷也不会以任何方式修改。

重新启动设备、重新启动 macbook 和删除派生数据等方法也不起作用

【问题讨论】:

标签: ios swift xcode push-notification apple-push-notifications


【解决方案1】:

我设法在 app target -> Build Phases -> Embed App Extensions

中解决了这个购买取消选择 Copy only when installing 的问题

【讨论】:

  • 任何解释,为什么你必须这样做才能让它工作?由于您的回答,我能够解决这个问题。谢谢
  • 这可能是因为“仅在安装时复制”不会在您使用 xcode 构建应用程序时运行应用程序扩展,而仅在应用程序安装时运行。通过取消选择此标志,应用程序扩展始终运行。
猜你喜欢
  • 2020-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2017-02-01
相关资源
最近更新 更多