iOS 通用连接Universal Links的实现

Universal Links是什么?简单说就是通过连接打开App的通道。
官方连接

实现

  • 1、必须支持https的域名

  • 2、登录苹果开发者后台,把需要添加Universal LinksIdentifiers的项目打开通道开关

image.png
  • 3、打开项目,添加Associated Domains,并点+配置域名,且前缀必须是appkinks:
image.png
  • 4、桌面创建一个文件夹,并在终端cd到该文件目录下,然后输入命令:touch apple-app-site-association创建一个苹果严格要求的命名格式的文件,且没有任何后缀,并复制黏贴下面的代码:
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "teamID.bundleID",
                "paths": [ "*" ]
            }
        ]
    }
}

参数说明

appID:开发者账号的teamID.项目的bundleID(注意:两个ID是用.拼接的)
paths:需要显示“打开”悬浮窗的页面路径,如果需要在指定页面显示,则需要修改这个参数为指定的页面的路径,否则直接使用通配符就好,如代码中写的

验证

  • 1、文件生成后,放到项目中Associated Domains配置的域名的根目录下。

  • 2、手机安装App后,在浏览器中输入域名,就可以看到页面中显示了“打开”的悬浮窗,苹果会自动验证我们放在根目录下的文件是否有效,并且App会自动从我们的服务器上下载这个文件,如果手机上没有安装这个App,那么浏览器中显示的页面是不会有“打开”的悬浮窗。

  • 3、点击“打开”按钮,成功唤起了App;在微信中打开我们的域名,发现没有“打开”按钮,没事,一般都会试一下通过浏览器打开,点一下发现直接唤起App了,说明这就OK了,完活儿。

  • 4、如果浏览器中没有显示“打开”的悬浮窗,也可以用测试工具试一下自己的域名是否配置成功(这个工具有点奇怪,每次都得loading很长时间才行,但是我的网络又没有问题),直接输入配置的域名,点Test URL就好。

image.png
  • 5、通过Universal Links唤起App后,如果有传参数的话,在项目中如何获取呢?只需要在appdelegate中添加下面的方法就行了,如下:
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler{
    
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
        NSLog(@"url = %@",url.absoluteString);
    }
    
    return YES;
    
}

全剧终

你可能感兴趣的:(iOS 通用连接Universal Links的实现)