赞
踩
由donnywals于2020年2月12日发布
多年来,我们在测试推送通知时不得不使用物理设备。 借助Xcode 11.4,Apple终于为开发人员提供了在iOS Simulator上测试推送通知所需的工具。 我假设您已经知道如何向您的应用程序添加推送通知。 如果您以前从未向应用程序添加过推送通知,那么我将发布一篇帖子,介绍如何在没有第三方服务的情况下设置和测试推送通知。 该帖子应该使您所有人都可以跟随该帖子。
Xcode附带了几个命令行工具,可让您直接从macOS的终端运行测试,构建和其他任务。 如果您已安装Xcode,它将在首次启动时自动安装命令行工具。 如果您已按照我的指南安装了多个Xcode版本,请运行xcversion select 11.4,确保选择Xcode 11.4或更高版本,并用要使用的Xcode版本替换11.4。 这样做将确保Xcode命令行工具指向正确的工具链。
当您运行iOS 13.4或更高版本的模拟器时,发送推送通知所需要做的就是apns通知有效负载。 有效负载应类似于以下内容:
- {
- "Simulator Target Bundle": "com.donnywals.SilentPushDemo",
- "aps": {
- "alert": {
- "title": "Push on the simulator",
- "subtitle": "So cool...",
- "body": "This notification is going to show up in the simulator!"
- }
- }
- }
推送通知的格式与将其从服务器发送到设备时的格式相同。 唯一的例外是“模拟器目标捆绑包”顶级密钥。 从生产服务器发送的推送通知中不应存在此密钥。 要发送此推送通知,可以运行以下终端命令:
xcrun simctl push booted test_push.apns
这将向所有已启动的模拟器发送测试推送通知。 传递给该命令的最后一个参数是包含测试推送通知的文件的路径。 在这种情况下,这是一个名为test_push.apns的文件,该文件作为我从中运行命令的文件存在于目录中。
可以从文件中省略“模拟器目标捆绑包”,但是终端命令会略有不同:
xcrun simctl push booted <your-bundle-identifier> test_push.apns
如果您的应用程序的捆绑包标识符未包含在有效负载中,则需要在命令中指定接收应用程序的捆绑包标识符。 确保用接收应用程序的捆绑包标识符替换<your-bundle-identifier>。
如果您不习惯使用命令行发送测试推送,也可以将测试推送通知直接拖动到模拟器,以将其立即传递到特定的模拟器。
执行此操作时,请确保您的文件具有.apns作为扩展名,并且必须包含``Simulator Target Bundle''顶级密钥,以便模拟器知道哪个应用程序应该接收您的测试推送。
在模拟器中测试推送通知的功能是iOS开发人员长期以来一直想要的功能,我认为Apple终于为我们提供了这一功能真是太好了。 尤其是因为他们通过将所有内容都保留在要开发的计算机上而使流程变得如此简单。
如果要测试从服务器实际生成和发送的通知,则仍然需要使用物理设备,因为模拟器目前尚不支持真正的远程通知。 但是,我认为这是朝正确方向迈出的重要一步,我相信我会定期使用此功能。
译自:https://www.donnywals.com/testing-push-notifications-in-the-simulator-with-xcode-11-4/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。