美文网首页
iOS APP之间的跳转方式

iOS APP之间的跳转方式

作者: LYPC_下里巴人 | 来源:发表于2018-12-05 16:35 被阅读92次

    APP之间的跳转方式
    1、URL scheme的方式
    Aapp跳Bapp:
    Aapp里面添加:

    image.png
    iOS 9之后要在info.plist文件添加白名单:
    image.png

    Bapp里面添加:

    image.png

    iOS 9之后要在info.plist文件添加白名单:


    image.png

    在Bapp里面打开Aapp的时候调用:

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"Aapp://?userId=123&userName=lypc"] options:@{@"userId":@"1232342"} completionHandler:^(BOOL success) {}];
    
    // Aapp://?userId=123&userName=lypc 带参数的形式
    

    也可以在safari里面直接打开:

    Aapp://
    

    Aapp会在AppDelegate文件中的以下方法中监测到被调用,并获取到传递的信息:

    /**
     *ios 9之后调用这个
     */
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
        NSLog(@"scheme:%@",[url scheme]); //scheme名字
        NSLog(@"query:%@",[url query]);//传递的参数
        NSLog(@"%@",options[UIApplicationOpenURLOptionsSourceApplicationKey]);//调用方app的bundle id
        return YES; // 如果由于某种原因应用程序无法打开,则返回NO
    }
    

    2、配置meta标签的格式:

    <meta charset="UTF-8" name="apple-itunes-app" content="app-id=1234567890, affiliate-data=myAffiliateData, app-argument=yourScheme://">

    这样添加meta标签后的网页,使用safari打开的时候,就会在顶部显示自己app的导航条。
    如果没有安装app点击能够跳转到appstore去下载,如果安装了app就能直接通过顶部的meta标签唤醒app了。

    3、Universal Links方式a跳转
    因为在微信、QQ里打开会禁止scheme方式打开app,苹果iOS 9推出了Universal Links方式刚好可以解决这一问题。
    使用方法:
    1、开启Xcode中的Associated Domains服务,添加一个Domains,格式一定要是:applinks:www.baidu.com这样的格式,以applinks:开头,自己的域名地址添加其后,再例如:applinks:fanyi.baidu.com/collection,使用的域名要支持https,

    image.png
    进入开发者中心 找到你的app IDs 配置该项目的Domains服务打开。

    AppDelegate里面实现如下方法用于接收 Universal Links方式的唤醒

    -(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    NSLog(@"userActivity : %@",userActivity.webpageURL.description);
    return YES;
    }

    2、让后台(自己能操作也管事),按照苹果的要求苹果官方要求,做一个名为apple-app-site-association的固定个数的json格式的文件,不能带后缀名,有的电脑设置的隐藏后缀名,这点需要注意, 把文件放到服务器的根目录下或者.well-known目录下。
    apple-app-site-association文件的内容示例:

    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "9JA89QQLNQ.com.apple.wwdc",
                    "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2015/*"]
                },
                {
                    "appID": "ABCD1234.com.apple.wwdc",
                    "paths": [ "*" ]
                }
            ]
        }
    }
    

    其中9JA89QQLNQ.com.apple.wwdc是teamID.bundleId组合的,给个参考,我的teamID是:xxxxxxx(这个东西去自己的开发者中心membership里面找到),我的bundleId就是:lsd.MissTalk.com,那我的appID就是xxxxxxx.lsd.MissTalk.com

    paths的设置:是用来设置哪些路径可以唤醒app哪些不可以唤醒app,使用配置,则整个网站都可以使用,使用?代表单个通配符,paths是区分大小写的。
    /wwdc/news/

    /wwdc/news/20*8/
    这个文件编写好之后 通过在网页打开https://aaaaaa.com/apple-app-site-association 其中aaaaaa.com是你的域名,
    当配置完支持了Universal Links方式,在其他app里面打开你的链接的时候 或多一项:在xxxapp中打开。

    快捷验证,在备忘录中输入https://aaaaaa.com/apple-app-site-association,长按这个链接,会出来一项在xxxapp中打开的选择

    相关文章

      网友评论

          本文标题:iOS APP之间的跳转方式

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