运行IntentsExtension时如何同步调试跳转后的主应用
iOS Intent Extension 唤起主应用同步调试方案
方案1:Xcode 动态附加进程
- 先运行扩展的Scheme,触发扩展逻辑直到执行
completion(INStartCallIntentResponse(code: .continueInApp, userActivity: userActivity))唤起主应用 - 点击Xcode顶部菜单栏
Debug->Attach to Process,在进程列表中找到你的主应用名称并选中,即可完成附加。附加后主应用的断点会正常触发,调试控制台也会显示主应用的日志输出。如果进程列表找不到主应用,可直接在搜索框输入主应用的Bundle ID或显示名称搜索。
方案2:预设等待主应用启动调试
如果需要捕获主应用被唤起初期的逻辑(比如application:continueUserActivity:restorationHandler:回调),可以用这个方案:
- 选中主应用的Scheme,点击Xcode顶部菜单栏
Product->Scheme->Edit Scheme - 切换到
Run标签的Info页,将Launch选项从Automatically修改为Wait for the executable to be launched - 保存配置后直接运行主应用的Scheme,此时Xcode会处于等待主应用启动的状态
- 正常触发扩展的调用流程,当扩展唤起主应用时,Xcode会自动附加到主应用进程,从启动阶段开始的所有断点和日志都可以正常捕获。
无断点日志查看方案
如果暂时不需要断点调试,仅需要查看主应用的日志,可以打开macOS自带的「控制台」应用,左上角选择你的测试设备,右上角搜索框输入主应用的Bundle ID,即可实时查看主应用的所有日志输出,包括NSLog和os_log的内容。
额外注意点
你当前代码中创建NSUserActivity的activityType使用的是NSStringFromClass(INSendMessageIntent.self),和你实际使用的INStartCallIntent不匹配,建议修改为NSStringFromClass(INStartCallIntent.self),避免主应用解析userActivity时出现异常。
内容的提问来源于stack exchange,提问作者johnny
相关产品推荐
相关产品推荐

