iOS开发Swift

iOS 实现两个APP之间跳转

有的时候,我们需要在一个App中跳转到另一个App。

假设两个App, Test1 和 Test2,我们想要从 Test1 跳转到 Test2。

Test1:跳转方 Test2:被跳转方

  • 首先我们的设备上,必须要安装 Test1 和 Test2 两个App。

  • 在 Test2 注册自己的URL Scheme协议(唯一标识)
  • 在 Test1 项目里面设置白名单

其实白名单是在 iOS9.0 以后提出的,它就是一个数组,里面放的是其他app的URL Scheme名字,在iOS9以前是不需要设置的,可以直接用canOpenURL判断是否可以跳转,但是在iOS9.0之后如果不添加白名单, openURL 是无法判断判断是否可以跳转的。

设置白名单的方法,如果你要跳转其他的app,就要在自己的app的 info.plist 设置白名单,添加其他app的URL Scheme,白名单的字段是:LSApplicationQueriesSchemes, 下面我们在 Test1添加白名单

  • 在 Test1中添加跳转的代码。
import SwiftUI

struct ContentView: View {
    var body: some View {
        
        VStack {
            Text("Demo1")
                .padding()
            
            Button(action: {
                   let url = URL(string: "wechat://")
                   // 注意: 跳转之前, 可以使用 canOpenURL: 判断是否可以
                   if !UIApplication.shared.canOpenURL(url!) {
                       // 不能跳转就不要往下执行了
                       return
                   }

                if #available(iOS 10.0, *) {
                  
                      UIApplication.shared.open(url!, options: [:]) { (success) in
                           if (success) {
                                print("10以后可以跳转url")
                           }else{
                                print("10以后不能完成跳转")
                           }
                       }
                } else {
                       // Fallback on earlier versions
                       let success = UIApplication.shared.openURL(url!)
                       if (success) {
                             print("10以下可以跳转")
                       }else{
                             print("10以下不能完成跳转")
                       }
                 }

            }) {
                Text("go to demo2")
            }
        }
       
    }

}
  • 常用的白名单
微信
 wechat
 weixin

支付宝
 alipay
 alipayshare