You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ShieldActionExtension中如何打开父应用?技术实现问询

在ShieldActionExtension中实现点击主按钮打开父应用

实现方案

要实现该功能,需通过自定义URL Scheme唤起父应用,具体分为两步:

  1. 配置父应用的URL Scheme

    • 打开父应用的Info.plist,添加URL types数组项,在数组内新增字典:
      • 设置URL Schemes为自定义唯一标识(比如myapp-unlock)
      • 设置URL Identifier为你的应用Bundle ID
  2. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 12:19:52