通过Xcode 11.4的推送功能在模拟器上触发UNNotificationServiceExtension

9

Xcode 11.4 (beta)允许开发人员在模拟器上触发推送通知。 我目前通过以下命令行实现此操作:

xcrun simctl push [device] [my.bundle.identifier] payload.apns

然而,我还有一些使用UNNotificationServiceExtension的代码,它从负载的自定义字段中提取外部 URL 并加载图像。该图像随后会在通知弹出窗口中显示。不幸的是,使用给定的命令行无法调用该扩展程序。
我还尝试在命令行中使用扩展程序的 bundle 标识符,但那样根本没有任何作用。
我知道Xcode 11.4仍处于首个beta版本,但是否有人发现了使用此新功能触发通知服务扩展程序的方法?

请更新您的问题,附上您正在尝试发送的apns文件的内容。 - quellish
@quellish 在这种情况下,有效载荷并不重要。通知本身在模拟器上正确显示(然后没有图像),当将相同的有效载荷发送到真实设备时,扩展程序也可以正常工作。 - Jerrot
我无法通过将其拖放到模拟器中来触发NotificationServiceExtension。我正在使用最新的XCode版本。 - Kwnstantinos Nikoloutsos
2个回答

9

目前还不支持某些通知类型,包括服务扩展和VoIP。

编辑:自iOS 16模拟器起,在兼容的Mac上可以从APNS沙盒环境中获取真实推送通知。这使得比以前更多的扩展类型得到了支持。同时已有的本地负载机制仍然得到支持。


1
有人有这个信息的来源吗? - razorSharp
@razorSharp 由于作者本人曾经/正在作为苹果模拟器的开发人员之一工作,因此我认为他在这些事情上是一个可信赖的信息来源。 - Jerrot

1
从Xcode 14和iOS 16开始,你可以在沙盒环境下向模拟器发送推送通知。
Xcode 14发布说明 > 模拟器 > 新功能: https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes
你可以像在真实设备上一样调试ServiceExtension。在Xcode中,选择“调试”>“附加到进程”>找到你的ServiceExtension。然后再次发送推送,你的扩展程序上的断点将会起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接