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

如何用Swift实现打开旧iOS应用TVFy时启动全新iOS应用?

实现旧iOS应用TVFy自动启动新应用的Swift方案

因为新旧应用是独立Bundle ID和Apple账号,核心是利用iOS的URL Scheme来实现应用间跳转,以下是完整的实现步骤和代码:

1. 配置新应用的URL Scheme

在新应用的Xcode项目中:

  • 进入 Targets -> 对应新应用Target -> Info 标签页
  • 找到 URL Types 区域,点击加号添加一个URL Scheme
  • 填写一个唯一的Scheme(建议用反向域名格式避免冲突,比如 com.yourcompany.tvfy-new)

2. 旧应用中添加跳转逻辑

在旧应用的启动入口(AppDelegate 或 SceneDelegate,根据iOS版本选择)中添加以下代码:

第一步:定义常量

// 新应用的URL Scheme,和新应用配置的一致
private let newAppScheme = "com.yourcompany.tvfy-new://"
// 新应用的App Store下载链接,替换为实际链接
private let newAppStoreLink = "https://apps.apple.com/cn/app/[新应用名称]/[App ID]"

第二步:实现跳转检查函数

private func openNewAppOrNavigateToStore() {
    guard let newAppURL = URL(string: newAppScheme) else { return }
    
    // 检查新应用是否已安装
    if UIApplication.shared.canOpenURL(newAppURL) {
        // 打开新应用
        UIApplication.shared.open(newAppURL, options: [:]) { success in
            if success {
                // 成功打开后可选择退出旧应用(按需使用)
                exit(0)
            }
        }
    } else {
        // 未安装则引导到App Store
        guard let storeURL = URL(string: newAppStoreLink) else { return }
        UIApplication.shared.open(storeURL, options: [:])
    }
}

第三步:在启动方法中调用函数

  • 若使用 AppDelegate(iOS 12及以下):
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    openNewAppOrNavigateToStore()
    return true
}
  • 若使用 SceneDelegate(iOS 13+):
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let _ = (scene as? UIWindowScene) else { return }
    openNewAppOrNavigateToStore()
}

3. 关键配置:旧应用Info.plist添加白名单

必须在旧应用的 Info.plist 中添加 LSApplicationQueriesSchemes 数组,将新应用的URL Scheme加入,否则 canOpenURL 会返回false:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>com.yourcompany.tvfy-new</string>
</array>

可选方案:Universal Links(更优雅的跳转)

如果需要更安全、无弹窗的跳转体验,可以使用Universal Links:

  • 配置新应用的Associated Domains,添加 applinks:yourdomain.com
  • 在你的域名根目录或 .well-known 目录放置 apple-app-site-association 文件,指定新应用的Bundle ID和路径规则
  • 旧应用中直接跳转新应用的关联域名链接,若用户未安装新应用,链接会自动打开网页(可在网页中引导到App Store)

注意事项

  • exit(0) 用于退出旧应用,苹果官方虽不推荐强制退出,但如果需求是完全切换到新应用,可按需使用,确保调用前无未完成的异步任务
  • 测试时需确保新应用已安装在测试设备上,且URL Scheme配置完全匹配
  • URL Scheme需保证唯一,避免与其他应用冲突

内容的提问来源于stack exchange,提问作者komalc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:55:24