模拟器中的推送通知 - Xcode 11.4beta 不工作

Sar*_*ith 3 simulator apple-push-notifications ios ios-simulator

最近苹果也在模拟器中添加了推送通知。模拟器中未收到我现有的应用程序通知。

如何在模拟器中模拟推送通知?

模拟器支持模拟远程推送通知,包括后台内容获取通知。

参考:https ://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes

小智 6

你是对的。使用 Xcode 11.4:

Simulator 支持模拟远程推送通知,包括后台内容获取通知。(xcode 11.4 发行说明

您只需要将有效的 APNs 文件拖放到您的模拟器上。

但是,如果有人问为什么未调用 UNNotificationServiceExtension 的实例方法 didReceive(_:withContentHandler:) ,那是因为"mutable-content"未考虑该属性。

通知服务扩展在模拟推送通知中不起作用。不遵守可变内容键。(55822721)(xcode 11.4 发行说明

总的来说,这意味着平滑的开发用例,即使用模拟器在本地机器上轻松测试丰富的推送通知将不起作用!


lac*_*rin 5

模拟器支持模拟远程推送通知,包括后台内容获取通知...

苹果没有向模拟器添加推送通知,而是添加了对模拟推送通知的支持。所以这意味着您无法接收任何推送通知,您只能模拟它们。

您可以在模拟器部分下的Xcode Beta 发行说明中阅读有关此内容的更多信息。


Arv*_*ind 5

要测试远程推送,只需将 APNS 文件拖到目标模拟器上即可。此方法要求有效负载包含“Simulator Target Bundle”键。否则,您将收到此错误消息:

无效的推送通知:文件不包含有效的 JSON 负载或缺少模拟器目标包密钥。

因此,将“Simulator Target Bundle”添加到您的有效负载文件中:

{
    "aps" : {
        "alert" : {
            "title" : “Namaste”,
            "body" : “This is iOS development notification test“
        },
    },
    "Simulator Target Bundle": "com.sarunw.example-xcode-11-4"
}
Run Code Online (Sandbox Code Playgroud)

终端中的以下 simctl 命令将发送通知,并且由于命令中包含包标识符,因此文件中不需要“Simulator Target Bundle”:

xcrun simctl push <device> <bundle-identifier> <path-to-apns-file>
Run Code Online (Sandbox Code Playgroud)

<device>如果您只有一台设备在模拟器中运行,则可以“启动”。否则使用xcrun simctl list查看它们的列表,并复制要发送到的设备的 UUID。)