未调用 iOS 推送通知服务扩展 (didReceive)
Posted
技术标签:
【中文标题】未调用 iOS 推送通知服务扩展 (didReceive)【英文标题】:iOS Push notification service extension (didReceive) is not called 【发布时间】: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 和删除派生数据等方法也不起作用
【问题讨论】:
相关问题:***.com/q/66259849/7698092 【参考方案1】:我设法在 app target -> Build Phases -> Embed App Extensions
中解决了这个购买取消选择Copy only when installing
的问题
【讨论】:
任何解释,为什么你必须这样做才能让它工作?由于您的回答,我能够解决这个问题。谢谢 这可能是因为“仅在安装时复制”不会在您使用 xcode 构建应用程序时运行应用程序扩展,而仅在应用程序安装时运行。通过取消选择此标志,应用程序扩展始终运行。以上是关于未调用 iOS 推送通知服务扩展 (didReceive)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Flutter App 在 iOS 中未触发 UNUserNotificationCenterDelegate didReceive
应用程序未运行时未调用本地通知的 UNUserNotificationCenterDelegate didReceive 响应