1.简介

建议大家先看看苹果官方文档Support Universal Links

Universal Links(通用链接)是iOS9.0出的新技术。如果我们的应用支持通用链接,那么就可以通过https链接来打开APP(手机中已经安装此APP),或者跳转到https链接(手机中没有安装此APP)。

简单说一下通用链接的特性

唯一性:不像自定义的schema链接,通用链接不会被其它的APP所使用。因为它使用标准的https链接到你自己的域名。【因为你的域名不会被其他人所使用】

安全性:当用户下载APP的时候,iOS会检查你上传到web服务器的文件以确保您的网站允许您的应用程序以其名义打开网址。因为只有本人有权利创建且上传该文件到服务器,所以网站和APP的关联是安全的。

灵活性:甚至在iOS设备没有安装你项目的时候通用链接也会正常工作。当设备没有安装APP的时候,点击通用链接会在Safari展示你网站的内容。

灵活性:一个通用链接可以同时作用于项目和网站中。

灵活性:其它APP可以在不知道你的APP是否安装的情况下与你的APP通信

2.使用条件

1.有一个注册的域名。

2.支持https请求,并且CA证书是有效的,这个需要与后端同事进行确认。

3.可上传一个json文件到web服务器

4.APP版本至少为iOS9及以上

5.Xcode版本为7以上

二、通用链接使用说明

首先我们先设置几个全局来方便大家理解

static NSString *webLink = @"test.com" //域名

static NSString *bundleID = @"com.test.bundle" //bundleID

static NSString *teamID = @"TEAMIDSHSAUX" //team ID [可登录Apple Developer查看]

1.Xcode配置

(1)首先是将Associated Domains打开,并填写我们的域名,前缀是applinks。etc.如果你的域名是test.com,则填上applinks:test.com,也就是applinks:你的域名




苹果iphone怎么连samba 苹果手机如何连接saiclink_python


(2)配置后会发现项目中多了一个APPNAME.entitlements文件


苹果iphone怎么连samba 苹果手机如何连接saiclink_java_02


同时开发者中心的Associated Domains也会变成启用状态


苹果iphone怎么连samba 苹果手机如何连接saiclink_java_03


2.创建apple-app-site-association文件

首先创建一个apple-app-site-association文件(注意是没有后缀的),其内容是json格式,官方示例如下

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "你的开发者teamID.你的项目的BundID",
                "paths": [ "*" ]
            }
        ]
    }
}

相关参数说明。

注意说明:一定要区分测试bundleID和你填写的开发者teamID是否是同一套 我当时出错就错在 bundleID用的测试的 而开发者账号却是用的正式的teamID导致怎么都不能吊起。

appID:由TeamID.BundleID组成。TeamID可在开发者中心查看,BundleID可在Xcode中查看。

paths:设定一个App的路径支持列表,只有这些指定的路径链接才会被App所处理。(paths是大小写敏感,*是通配符表示任意路径,一般填写这个就可以)

3.上传apple-app-site-association文件

将上面生成好的apple-app-site-association上传到web server

apple-app-site-association文件保存的位置

根目录下。etc.https://test.com/apple-app-site-association

.well-known文件夹下(推荐,苹果在iOS9.3更改了通用链接的请求文件的位置,但是仍然支持上面的路径)。在根目录新建.well-known文件夹(不要忘记前面的.)。etc.https://test.com/.well-known.apple-app-site-association

4.检查

(1)使用浏览器打开我们上传的文件路径,应该可以直接看到刚刚上传的json文件,或者是会自动下载到电脑,只要能下载下来应该就没有问题了。

(2)苹果也提供了一个官方网页供我们开发者来验证https://test.com/apple-app-site-association是否有效。验证地址:https://search.developer.apple.com/appsearch-validation-tool/

但是这个测试地址不知道为什么我的地址一直测试不过去 但是点击我的域名却可以调用起APP了。不明所以。

四、在App中进行处理

用户通过链接进入我们的App中,在AppDelegate是可以获取该链接的

///通过Universal Links 进入APP 获取链接
- (void)application:(UIApplication *)application userDidAcceptCloudKitShareWithMetadata:(CKShareMetadata *)cloudKitShareMetadata{
}