[iOS]在其它应用内打开自己的APP

[iOS]在其它应用内打开自己的APP

上一博文使用到了应用内跳转各类地图APP功能。那么,别人如何在应用内打开我们开发的APP呢?
查询了资料,发现功能很容易实现。

首先,给我们的APP添加一个URL Schemes。URL Schemes是苹果给出的用来跳转到系统应用或者跳转到其它应用的一种机制。


然后,给我们的APP实现UIApplicationDelegate的代理方法。若URL中有传递数据便在下面方法中处理。
// NS_DEPRECATED_IOS(2_0, 9_0)
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return YES;
}

// NS_DEPRECATED_IOS(4_2, 9_0)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return YES;
}

// NS_AVAILABLE_IOS(9_0)
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    return YES;
}
上面对我们APP的处理已经结束,下面只需要在其它APP中调用如下方法即可。
- (IBAction)openOtherAction:(id)sender {
    NSURL *url = [NSURL URLWithString:@"mapapp://"];
    // 判断是否安装APP
    if ([[UIApplication sharedApplication] canOpenURL:url]) {
        NSString *urlString = [[NSString stringWithFormat:@"mapapp://function/path?type=drive&from=目的地"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        url = [NSURL URLWithString:urlString];
        // 打开URL
        [[UIApplication sharedApplication] openURL:url];
    } else {
        // 提示
    }
}
iOS9之后,调用canOpenURL:需要在info中添加白名单。
以上。

另外,还可以在safari中打开我们的APP。
可以在地址栏输入“mapapp://”或者“mapapp://function/path?type=drive&from=目的地”,打开应用后代理方法中会收到地址栏输入的URL;
相关文章
相关标签/搜索