今天看啥  ›  专栏  ›  lmg4819

Universal Links实用教程

lmg4819  · 掘金  ·  · 2019-08-16 18:16
阅读 10

Universal Links实用教程

Universal Links(通用连接)

如果你的app支持通用链接,那么iOS 9用户点击链接到你的网站,可以准确地定位到到手机安装的你的APP应用程序,而不通过Safari去实现。如果用户手机没有安装你的APP应用程序,通过通用连接能利用一个链接到你的网站,而不用通过在Safari打开你的网站。

通用链接给你如下几个关键的好处

1. Unique.唯一性

不像自定义URL schemes协议头那样,通用的链接不能被其他应用程序声称,因为他们使用标准HTTP或HTTPS链接你的网站。

2. 安全

如果iOS用户安装了你的应用,应用程序启动(不是登陆)时就会检查你上传到web服务器json文件(apple-app-site-association),以确保你的网站允许应用程序打开url。只有你能创建和上传这个文件,所以专门配置的网站与你的应用程序连接之间是安全的。

3. 方便,自由性

触发通用连接时,如果用户没有安装你的应用程序,点击这个通用连接会打开Safari加载你的网站内容,这是用户所期望。

4. 简单

只需一个URL就能根据用户有没有安装你的APP,决定加载你的网站还是你的APP应用程序。

5. 私有性

其他应用程序可以与你的应用程序通信,而不需要知道你的应用程序是否在用户手机中安装。

添加支持通用链接的步骤

1.创建和上传apple-app-site-association文件

文件内容如下:

{
"applinks": {
        "apps": [],
        "details": [
            {
                "appID": "teamID.bundleId",
                "paths": ["/mall/app_download/app","/app_download/app"]
            },
            {
                "appID": "teamID.bundleId",
                "paths": ["/path/app_download/app","/app_download/app","*"]
            }
        ]
    }
}
复制代码

注意事项如下:

  1. details里面的内容可以为数组,也就是可以配置多个应用的Universal Links
  2. apple-app-site-association`文件名千万不能写错啊,没有后缀
  3. appID 的 格式为 teamID.bundleId形式
  4. paths配置,实际上就是限制哪些路径可以唤醒app,哪些路径不能唤醒app。一下为path规则:
    • 使用*配置,则整个网站都可以使用
    • 使用特定的URL,例如/wwdc/news/来指定某一个特殊的链接
    • 除了使用*来匹配任意字符,你也可以使用 ?来匹配单个字符,你可以在路径当中结合这两个字符使用,例如 /foo/*/bar/201?/mypage
    • 配置的paths路径,是区分大小写的

2.将这个文件上传到你的服务器,可以将这个文件放到服务器的根目录下,也可以放到.well-known这个子目录下。

注意事项如下:

  • 确保使用https://yourdomain.com/apple-app-site-association这个链接可以访问到,yourdomain.com为你的服务器域名。

  • 也可以使用苹果的验证网站,验证文件是否能被苹果请求到。如果是未上线的应用,使用验证网站时可能出现如下提示:

  • 出现该提示为apple-app-site-association文件配置正确。

  • 出现404错误码提示,则为apple-app-site-association文件未上传成功,或者使用https://yourdomain.com/apple-app-site-association路径无法访问。

3.配置app,然后在app里面添加代理方法

  1. app IDs 配置

  1. 项目配置

    在项目的Capablities中开启Associated domains,如下图:

注意事项:

  • domains可以添加多个,前缀必须为applinks:applinks:后为你的服务器的域名。
  • 服务器必须要支持https。
  1. 代码接收Universal Links唤醒

    在appdelegate中实现下面这个方法,当使用Universal Links唤醒app时就执行这个方法。

    -(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
    {
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
            NSURL *webUrl = userActivity.webpageURL;
            if ([webUrl.absoluteString containsString:@"?"]) {
                
            }
        }
        return YES;
    }
    复制代码
  2. 验证以上配置

    快捷验证,在备忘录中输入https://yourdomain.com/apple-app-site-association,长按这个链接,出现下图提示则配置成功。




原文地址:访问原文地址
快照地址: 访问文章快照