iOS 通过URL打开APP

平常我们都看到通过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鼓励下吧。