APP唤起跳转

18 9月
  • 唤起自己APP
  • 唤起其他APP
  • Universal Link

唤起自己APP

APP的唤起和跳转通过URL Scheme来实现,常见的web页面是http(s)://,微信是weixin://,对于APP同样如此,先要为你的APP配置Scheme。

点击项目名,进入Info tab,点击【URL Types】的【+】号,在【URL Schemes】里添加即可,例如添加为:testApp。

配置完,可以在浏览器里输入为APP配置的Scheme试一下,例如testApp://,看能不能唤起。

唤起其他APP

唤起其他APP前可以先用canOpenURL判断一下是否安装过这个APP,安装过了直接唤起,否则就跳转到Apple store推荐用户安装。

但不是所有APP都支持被检查是否安装过的,需要在项目的Info.plist中添加字段LSApplicationQueriesSchemes,可以设为Array类型,将需要检查的APP的scheme作为值添加进去,常见的微信,QQ都应该被添加进去。如果跳过这步,即Info.plist里没有将目标APP的scheme添加进去的话,canOpenURL方法将一直返回false。

最后用UIApplication提供的openURL方法唤起其他APP:

-(void) viewClick {
    NSURL *urlScheme = [NSURL URLWithString:@"testScheme://"];
    
    BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:urlScheme];
    
    [[UIApplication sharedApplication] openURL:urlScheme options:nil completionHandler:^(BOOL success) {
        NSLog(@"");
    }];
}

Universal Link

从IOS9开始提供了Universal Link,它可以将原先自定义的scheme换成http(s)通用链接,这样也能规避原先两个APP定义了相同scheme的风险。

在浏览器的地址栏里输入Universal Link,默认是打开h5页面。在非浏览器里(例如记事本里)输入Universal Link,默认是唤起APP打开页面。

要用Universal Link,需要证书,端代码,后台一起实现。

端上,点击项目名,进入Capabilities tab,开启【associated Domains】

由于Universal Link具有唤起APP的能力,所以例如Safari,微信等常用APP是禁用Universal Link的。因为如果要访问h5页面,通常是APP内通过webview打开h5页面,这样能保证用户仍旧停留在APP内。如果使用由于Universal Link,就会唤起其他APP,用户就跳走到其他APP内了,造成用户的流失。

发表评论

邮箱地址不会被公开。 必填项已用*标注