iOS Universal Link(通用链接)

说明

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

简介

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

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

官方文档点击

集成步骤

  1. Xcode中开启Associated Domains
  2. Associated Domains中配置支持的Domains(域名)
  • 注: Domain必须以applinks:开头
    iOS Universal Link(通用链接)_第1张图片
    `Xcode`中配置`Associated Domains`.png
  • 如上面配置过后, 任何以app.cuiyuhe.com开头的URL请求都可以被拦截.
  1. Bundle ID开启Associated Domains
iOS Universal Link(通用链接)_第2张图片
`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即可得到:
    iOS Universal Link(通用链接)_第3张图片
    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中打开提示, 即代表成功:
    iOS Universal Link(通用链接)_第4张图片
    配置成功截图

其它

测试配置的文件 apple-app-site-association官方测试URL

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

你可能感兴趣的:(iOS Universal Link(通用链接))