美文网首页
APP基础功能的配置管理之URL Scheme和白名单

APP基础功能的配置管理之URL Scheme和白名单

作者: 花果山松鼠 | 来源:发表于2018-04-19 15:38 被阅读41次

    一、URL Scheme

    相信大家都知道 URL,例如 http://www.jianshu.com/就是一个URL。在 :// 之前的部分就称为 URL Scheme。
    也就是说 http://www.jianshu.com/ 的 URL Scheme 就是 http

    URL Scheme 就是一个可以让 app 相互之间可以跳转的协议

    1.打开Mail
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:frank@wwdcdemo.example.com"]]

    2.打开电话
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel:10086”]];

    3.打开SMS
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:10086”]];

    4.通过自定义 URL Scheme 向应用传递参数
    举例:支付宝的URL Schemealipay2018081200218976://safepay/?{“memo":{"result":"","ResultStatus":"6001","memo":"用户中途取消"},"requestType":"safepay"}

    二、白名单

    1.实际项目里用到的常见白名单。
    常见白名单.png
    2.自定义白名单。

    白名单一般是和URL Scheme结合使用的。

    比如app_A想打开app_B,app_B的URL Schemes是haha。 自定义白名单1.png 我们就需要在app_A里的info.plist添加白名单。 自定义白名单2.png

    废话不多说,直接上代码(app_A里写)

    - (void)clickBtn {
        
        NSString *urlString = @"haha://";
        // 若有中文传输需要进行转义
        NSString *customURL = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
        // 检查自定义 URL 是否被定义,如果定义了,则使用 shared application 实例来打开 URL
        if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]]) {
            // openURL: 方法启动应用并将 URL 传入应用,在此过程中,当前的应用进入后台
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
        } else {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error" message:[NSString stringWithFormat:@"No custom URL defined for %@", customURL] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
            [alert show];
        }
    }
    
    后记:
    1.每个app的 URL Scheme 都是不一样的,如果存在一样的 URL Scheme,那么系统就会响应先安装那个app的 URL Scheme,因为后安装的app的 URL Scheme 被覆盖掉了,是不能被调用的。
    2.所以这里存在一个漏洞。比如app_A想打开app_B,但是app_C的 URL Scheme和app_B的一样,而且它比app_B先安装。那就永远调不起app_B,除非将app_C卸载。
    3.所以自己公司的URLScheme取名时尽量复杂些,这样别人想调起你app的难度就大大增加了。
    

    相关文章:
    APP基础功能的配置管理之ATS
    APP基础功能的配置管理之屏幕旋转控制
    APP基础功能的配置管理之系统权限控制

    相关文章

      网友评论

          本文标题:APP基础功能的配置管理之URL Scheme和白名单

          本文链接:https://www.haomeiwen.com/subject/vxywkftx.html