OC学习49:App内打开URL的方法

张建 lol

前言

iOS 系统由于其 Sandbox的安全机制,系统内各App之间不能共享信息;官方给出了一些方案 URL Scheme/Universal Link 等以解决 App 之间的通信

原生App之间的跳转

原生App间的相互跳转,也可以称为白名单App间的跳转,常见用法是第三方分享、登录、支付等,假设有 AppAAppB 两个应用,实现 AppA 启动 AppB 的,有两种方案:

  • 第一种方法:URL Scheme

  • 第二种方法:Unversal Link

  1. URL Scheme
  • AppB 注册到手机系统中,应用 AppB -> Target -> Info -> URL Types 自定义一个 URL Schemes 如:schemeb

  • AppA 中将 AppB 列入 白名单,AppA -> Target -> Info.plist 中添加 Queried URL Schemes

  • AppA 启动 AppB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (void)clickBtn{
/*
如果想跳转到AppB指定页面。URL中添加指定页面的路径:例如:schemeb://home
*/
NSURL * scheme_b = [NSURL URLWithString:@"schemeb://"];
if ([[UIApplication sharedApplication] canOpenURL:scheme_b]) {
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:scheme_b
options:@{} completionHandler:^(BOOL success) {

}];;
}else {
[[UIApplication sharedApplication] openURL:scheme_b];;
}
}else {
NSLog(@"未找到b应用");
}
}
  • AppB中接收到AppA的URL进行处理,App处于后台和未启动要分别处理

    • AppB 未启动时,在 didFinishLaunchingWithOptions 中接收 URL,并做处理

    • AppB 在后台时,AppDelegate 中会调用 openURL 方法

1

  1. Unversal Link

原生App与系统App间的跳转

原生App和网页间的跳转

  • Post title:OC学习49:App内打开URL的方法
  • Post author:张建
  • Create time:2023-05-25 13:24:36
  • Post link:https://redefine.ohevan.com/2023/05/25/OC/OC学习49:App内打开URL的方法/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.