iOS 如何调试 Push 和 Notification Service Extension

前言

阅读此文后,希望读者能够达成以下目标

  • 模拟器上 能通过模拟 Push 配置测试 Push 链接是否能正常跳转
  • 真机上 能通过 DeviceToken 模拟系统推送
  • 真机上 能够调试 Notification Service Extension

模拟器模拟 Push

  1. 将要推送的内容保存到一个名为 apns 后缀的文件
  2. 将该文件 拖拽 到模拟器中,模拟器将触发基于这个文件配置的推送事件

下面基于一个【打开 Airbnb 房源详情页的 Push】进行演示

  1. 准备一个后缀为 apns 文本文件

这个推送配置和普通推送配置不一样的地方在于,会多出一个 Simulator Target Bundle 的属性,值类型为 String,设置为 App 对应的 Bundle ID 即可

下面是 demo 文件的内容

json 复制代码
 {
    "Simulator Target Bundle": "com.airbnb.cn",
     "aps": {
         "alert": {
             "title": "myTitle",
             "body": "myMessage"
         },
         "badge": 1,
         "sound": "default"
     },
     "deep_link": "https://www.airbnb.cn/rooms/42904760"
 }
  1. 拖拽到已经安装到了airbnb App 的模拟器
  2. 点击推送测试唤起 App 并进行跳转

真机模拟 Push

  1. 下载一个推送工具,这里使用的是 Knuff

下载地址:github.com/KnuffApp/Kn...

  1. 准备好推送证书的 P12,双击 P12 文件导入 Keychain

注意:

  1. 沙盒证书(Sandbox)只能用于开发、调试
  2. 生产证书(Production)同时能用于开发、调试、生产

导入后在钥匙串可以看到该证书

  1. 打开 Knuff App 进行配置,点击 Choose(序号1) 选择证书,这里选择刚才导入的证书

Topic 非空代表证书是可用的,第三张图片对应的证书就是异常的

  1. 选择好环境,真机 debug 选择 Sandbox,产线调试选择 Production
  2. 填写设备的的 Device Token 即可进行推送 (可以通过运行项目在系统回调通过断点获取)
  3. 填写推送的 Playload ,填写完成即可点击【Push】按钮进行推送测试

Knuff 默认Push

json 复制代码
{
    "aps": {
        "alert": "Test",
        "sound": "default",
        "badge": 1
    }
}

这个结构是iOS 10之前的结构,测试可以直接用 我们看看iOS 10 之后的结构

json 复制代码
 {
     "aps": {
         "alert": {
             "title": "myTitle",
             "body": "myMessage"
         },
         "badge": 1,
         "sound": "default"
     },
     "deep_link": "https://www.airbnb.cn/rooms/42904760"
 }

真机 Debug Notification Service Extension

默认的推送是不经过 Notification Service Extension(NSE) 的,要想通知经过 NSE,需要在通知的内容中携带 "mutable-content": 1 才能触发 NSE,下面是一个 Push Playload 示例

css 复制代码
{
    "aps": {
        "mutable-content": 1,
        "alert": {
            "title": "myTitle",
            "body": "myMessage"
        },
        "badge": 1,
        "sound": "default"
    },
    "deep_link": "https://www.airbnb.cn/rooms/42904760"
}

具体步骤

  1. 选择 notification-service Target 将 NSE run 在 真机上
  2. 在 NSE 的方法上打上断点
  3. 给运行中的真机通过上面的 Knuff 工具发一条测试 Push
  4. App 收到消息后,将触发断点

扩展阅读

相关推荐
passerby60617 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了7 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅7 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅7 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅8 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment8 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅8 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊8 小时前
jwt介绍
前端
爱敲代码的小鱼8 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte9 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc