iOS Universal Link(通用链接)

作者: cyh老崔 | 来源:发表于2017-05-22 23:17 被阅读661次

    说明

    此系列共有两篇文章, 如需要实现微信跳转到app功能, 阅读过此篇文章后, 可再查看此文章: iOS Universal Link 结合第三方实现微信唤起app

    简介

    Universal Link, 中文是通用链接. 可以通过http(s)来唤醒App.优点:

    1. 用原生的webView来打开用户浏览的文章链接
    2. 个人认为, 利用此技术可以实现Deep Link

    <a href="https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2">官方文档点击</a>

    集成步骤

    1. Xcode中开启Associated Domains
    2. Associated Domains中配置支持的Domains(域名)
    • <em>注:</em> Domain必须以applinks:开头
      `Xcode`中配置`Associated Domains`.png
    • 如上面配置过后, 任何以app.cuiyuhe.com开头的URL请求都可以被拦截.
    1. Bundle ID开启Associated Domains
    `bundle id`的配置.png
    1. 配置固定格式的一个json文件, 此文件命名为apple-app-site-association.
    • App运行时会下载此文件.此文件用来链接与App通信.
    • 此文件必须放在https server的根路径, 或.well-known路径下.
    • 所谓https, 即最终这个文件的下载路径必须是https开头的路径
      格式如下:
    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID": "9JA89QQLNQ.com.apple.wwdc",
                    "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
                },
                {
                    "appID": "49LBJ5Y459.com.cuiyuhe.move",
                    "paths": [ "*" ]
                }
            ]
           }
    }
    

    解释:

    • 只需要更改details数组中的值即可, 官方说可配置不超过20-30个.
    • 第一个字典值是官方示例
    • [ "*" ] 表示拦截任何路径, 任何之前配置的, 以app.cuiyuhe.com开头的URL请求
    • appID 格式为 TeamID.BundleID. TeamID登录开发者apple id即可得到:
      TeamID.png

    代码中的相关支持

    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity 
    restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
        
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
            NSURL *toURL = userActivity.webpageURL;
            NSString *urlString = toURL.absoluteString;
            NSString *srcHost = toURL.host;
            if ([srcHost isEqualToString:@"app.cuiyuhe.com"]) {
                
            } else {
               
            }   
        }
        return YES;
    }
    
    

    测试是否成功

    1. 重新下载证书, 因为之前修改了证书Associated Domains属性
    2. 在手机备忘录中输入测试链接, 如:
      http://app.cuiyuhe.com/api/v1/post/133662/
      长按有 在xx中打开提示, 即代表成功:
      配置成功截图

    其它

    测试配置的文件 apple-app-site-association 的 <a href="https://search.developer.apple.com/appsearch-validation-tool/">官方测试URL</a>

    • 注: 我的App尚未发布时测试错误如下, 不知是不是有延迟:
      测试错误
    以上为我使用Universal Link的总结.

    相关文章

      网友评论

        本文标题:iOS Universal Link(通用链接)

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