ShieldActionExtension中如何打开父应用?技术实现问询
在ShieldActionExtension中实现点击主按钮打开父应用
实现方案
要实现该功能,需通过自定义URL Scheme唤起父应用,具体分为两步:
配置父应用的URL Scheme
- 打开父应用的
Info.plist,添加URL types数组项,在数组内新增字典:- 设置
URL Schemes为自定义唯一标识(比如myapp-unlock) - 设置
URL Identifier为你的应用Bundle ID
- 设置
- 打开父应用的
在ShieldActionExtension中添加唤起逻辑
替换原有代码中// TODO how to open the main app的部分,实现调用URL Scheme打开父应用:
override func handle(action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void) { switch action { case .primaryButtonPressed: // 构造父应用的唤起URL guard let appURL = URL(string: "myapp-unlock://") else { completionHandler(.close) return } // 唤起父应用 openURL(appURL) completionHandler(.defer) case .secondaryButtonPressed: completionHandler(.close) @unknown default: fatalError() } }
关键说明
- 自定义URL Scheme需保证唯一性,避免与其他应用冲突
- 返回
.defer可让Shield界面保持,直到父应用完成解锁操作后再处理后续逻辑 - 若URL构造失败,可根据需求调整
completionHandler返回值(比如.close直接关闭Shield界面)
内容的提问来源于stack exchange,提问作者user6682222
相关产品推荐
相关产品推荐

