UniversalLink通用链接梳理

2019-11-14  本文已影响0人  福利加班死

本文内容收集整理自网络,结合了项目中的情况

1.什么是Universal Link

iOS9 新引入的一个功能,是通过传统HTTP链接来启动App的技术,可以使用相同的网址打开网站和App。通过唯一的网址,就可以链接到App中具体的视图,不需要特殊的scheme。如果用户没有安装App则链接到对应的普通网页。无缝连接Web-App ,备忘录-App,信息-App之间的跳转。
(在iOS 9以前,我们从外部启动App都是通过URL Scheme实现跳转的,与scheme不同,Universal Link是系统级别的,可以突破微信或是其他第三方封杀;
无缝跳转,没有提示框弹出,没有安装App则链接到对应的普通网页,让用户体验提升一个级别)

特征

先决条件

Universal Link的基本运作流程

注意事项

2.实现步骤

1. 在开发者中心打开Associated Domains服务
20180102111723000.png
2. 在 Xcode 的 capabilities 里 添加域名
image
3. 配置apple-app-site-association文件
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "8A7VED9NUX.com.biyao.fu",
        "paths":[ "/product/*", "/design/*", "/order/*", "/market/*", "/account/*"]
      }
    ]
  }
}
4. 上传 apple-app-site-association 文件
5. 在 APP 里处理通用链接

我们在AppDelegate中实现如下代理方法:

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
    if([userActivity.activityTypeisEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *webpageURL = userActivity.webpageURL;
        ......     
    }
    return YES;
}

3.遇到的问题

由于苹果iOS 13系统版本安全升级,为此openSDK在1.8.6版本进行了适配。 1.8.6版本支持Universal Links方式跳转,对openSDK分享进行合法性校验。
在配置好Universal Link后,发现无法正确连接,每次分享都会出现二次跳转。


image

再来看下之前 apple-app-site-association 的配置,

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "8A7VED9NUX.com.biyao.fu",
        "paths":[ "/product/*", "/design/*", "/order/*", "/market/*", "/account/*"]
      }
    ]
  }
}

这种写法可以识别的Universal Link只有这种几种情况:

而直接访问https://www.domain.com/是不会命中Universal Link的,这也导致了微信无法识别
将根目录添加通配符:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "8A7VED9NUX.com.biyao.fu",
        "paths":[ "/product/*", "/design/*", "/order/*", "/market/*", "/account/*","*"]
      }
    ]
  }
}

就可以让直接访问根目录https://www.domain.com/的请求也命中,成为有效的Universal Link,解决微信的问题。

上一篇 下一篇

猜你喜欢

热点阅读