平常我们都看到通过APP调起另外一个APP,譬如像QQ分享等,那我们能否通过网页URL打开APP呢?当然能!下面我们就来看看如何通过网页URL打开APP。
网页链接调起APP
- 首先我们在我们APP的Info.plist里新建一个URL Schemes.
当我们配置完上图所示的应用之后,我们就可以在浏览器里通过输入myApp://
调起我们的APP了。
现在APP虽然调起了,但我们怎么知道是谁调起了我们的APP,而且你看我们在上图中还写了一个多余的参数。如果我们可以知道调起我们APP的链接就好了,这样我们就可以根据链接里的参数跳转到特定的APP页面了。需要实现这个功能,我们只需要在AppDelegate
实现一个方法就行了(对于iOS10有不同的方法)。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
//for iOS10
NSLog(@"%@ == %@", url, options);
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
//for iOS9 or older version
NSLog(@"%@ == %@", url, sourceApplication);
return YES;
}
通过上面的方法,我们就可以知道是什么浏览器,通过什么链接来调起我们的APP了。
APP调起APP
我们在另外一个APP添加如下方法:
- (void)jump:(id)sender {
NSString *urlStr = @"myApp://teamleader.cn";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlStr]]) {
//可以调起APP
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
NSLog(@"调起成功");
} else {
//无法调起APP,打开AppStore
//itms-apps://itunes.apple.com/us/app/apple-store/idMY_APP_ID
urlStr = @"itms-apps://itunes.apple.com/cn/app/apple-store/id391945719";
// urlStr = @"https://itunes.apple.com/us/app/apple-store/id391945719";
//以上两种方式都是可以的
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
NSLog(@"调起失败");
}
}
这样我们就可以让其他的APP调起我们的APP了。并且在调起APP的时候传递了参数
。
Demo : iOS 通过URL打开APP
喜欢就给个star鼓励下吧。