本人亲测有效!更多交换可以家魏鑫:lixiaowu1129,公重好:iOS过审汇总,一起探究iOS技能!OC版本语言
起首在plist文件内里设置。
URL identifier 一样平常为反域名+项目名称 (尽大概包管少重复)
URL Schemes是一个数组。一个APP可以添加多个。该参数为跳转时利用的标识。
1:跳转safari比力简朴
NSString *iTunesLink = @"http://www.xxxx.com";[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];2:跳转回APP
safari按钮打开毗连(URL Scheme设置的参数)sxxxxk:// 之后会弹窗提示,确认要返回app,点击确定就启动APP。(ios9直接url跳转safari之后左上角有一个返回的小按钮,貌似不消做URL Scheme就可以实现。但是URL Scheme更强盛一些。可以传参数)
3:URL Scheme传参数
safari跳转回APP时,打开毗连 sxxxxk://?xxxx
APPDelegate.mm内里实现
- (BOOL)application UIApplication *)application openURL nonnull NSURL *)url sourceApplication nullable NSString *)sourceApplication annotation nonnull id)annotation { NSLog(@"url : %@", url); NSLog(@"scheme : %@", url.scheme); NSLog(@"query : %@", url.query); return YES;}跳回APP之后,调用该方法,输出为
url: sxxxxk://?xxxx
scheme: sxxxxk
query: xxxx
(safari跳回APP毗连背面添加?再添加参数xxx大概xxx1=1&xxx2=2)
Swift版本语言
新建两个项目 demo1 和 demo2。完成项目 demo1 跳转到项目 demo2
在项目 demo2 的 Info.plist 中添加字段 URL types -> URL Schemes,设置供别的app跳转利用的唯一URL demo2JumpUniqueKey(不要利用 _ ,否则会跳转失败)。
在项目 demo1的 Info.plist 中添加字段 LSApplicationQueriesSchemes, 范例设置为 Array,添加项目 demo2 中设置的URL demo2JumpUniqueKey。
项目 demo1 中跳转的方法
//不带参数的跳转//guard let urlLocal = URL(string: "demo2JumpUniqueKey:") else { return }//带参数跳转guard let urlLocal = URL(string: "demo2JumpUniqueKey://name=lisi,password=123"), UIApplication.shared.canOpenURL(urlLocal) else { print("跳转失败") return}UIApplication.shared.openURL(urlLocal)项目 demo2 中吸收项目 demo1 跳转传来的参数
如果存在 SceneDelegate 则利用 SceneDelegate.swift 的方法
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { guard let context = URLContexts.first else { return } //demo2JumpUniqueKey://name=lisi,password=123 print(context.url) //<UISceneOpenURLOptions: 0x600002cb26a0; sourceApp: com.swiftprimer.demo1; annotation: (null); openInPlace: NO> print(context.options)}如果不存在 SceneDelegate 则利用 AppDelegate.swift 的方法
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { //demo2JumpUniqueKey://name=lisi,password=123 print(url) return true}本文由mdnice多平台发布 |