有的时候,我们需要在一个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