IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> IOS Universal Link (通用链接)配置和使用 -> 正文阅读

[移动开发]IOS Universal Link (通用链接)配置和使用

        Universal Link 是 iOS9 推出的一项功能,使你的应用(微信,微博等)可以通过传统的HTTPS链接来启动APP,而不是使用 scheme 的方式。
       如何理解Universal Link(通用链接)
       Universal Link(通用链接):看起来就是一条普通的https链接,当然是我们在该链接域名根目录配置过的一个链接,也可以在该链接中放置对应的H5页面。当用户的点击该链接,只要手机中安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。对用户来说则是一个无缝跳转的过程。
       Universal Link(通用链接)的应用场景

使用Universal Link(通用链接)可以让用户在Safari浏览器或者其他APP的webview中拉起相应的APP,也可以在APP中使用相应的功能,从而来把用户引流到APP中。比如淘宝当在Safari浏览器中进入淘宝网页点击打开APP则会使用Universal Link(通用链接)来拉起淘宝APP。
微信支付和微信分享等和微信相关的都已经使用了Universal Link进行跳转,这可能是一个趋势,我们必须了解该技术.
开始配置Unuversal Links:
一.在苹果开发者中心配置 Associated Domains
1.Certificates, Identifiers Profiles
2.Identifiers
3.勾选 Associated Domains (AppID在开发中心创建之初是默认勾选支持Associated Domains了的。如果你没有勾选,在你更改为支持Associated Domains之后你需要重新下载描述文件并导入,因为描述文件是关联了AppID的)
请添加图片描述
二.配置JSON文件
我们需要配置一个JSON文件,此为关键步骤.
创建一个空白文件(必须纯文本,命名为apple-app-site-association,去除后缀名,不能包含后缀名)。这里建议让后台人员或者运维工程师在其本地创建,避免文件传输时,文件自动被更改格式、后缀自动添加等问题。
文件里面的内容如下

     {
                "applinks": {
                "apps": [],
                "details": [
                {
                   "appID": "xxxxxxx.bbbbbb",
                   "paths": [ "*" ]
               }
        ]
    }
}

说明:1.xxxxxxx表示苹果账号的团队ID,苹果的团队ID去你自己的开发者中心复制(TeamID 可以从开发者中心 -> Membership 中获 取)。
2.bbbbbb表示项目的BundleID。
3.这个JSON文件中的appID其实由你的团队ID(TeamID)和BundleID拼接而成.
4.paths:设定你的app支持的路径列表,只有这些指定的路径的链接,才能被app所处理。星号代表了可识别域名下所有链接,一般是使用的星号,星号为通配符号.
5.apps:是限制只能在这几个app中使用, 基本是不填写,所以是空数组.
6.paths除了[ “" ]这样设置,也还可以加一个斜杠,这是为了处理一些问题,如写成这样"paths": ["/”]
PS : 据说可先配置微信开放平台和QQ互联平台,我当时没有这样做过,是先调试通了通用链接再去申请的微信平台,时间紧的网友可以一试,如果被微信拒绝了别来找我,成功了请在下面留个言,谢谢~
如果上传人员给你的访问路径是:
https://www.baidu.com/.well-known/apple-app-site-association 或
https://www.baidu.com/apple-app-site-association则:
微信开放平台的Universal Link填写是:https://www.baidu.com/app/
QQ互联平台的Universal Link填写是:https://www.baidu.com/qq_conn/22222222/ ("/qq_conn/22222222/*"需要根据QQ互联平台设置,22222222是QQ互联后台对应应用的APPID。)
三.上传JSON文件
配置好了文件,就让运维人员将文件上传到域名所对应的根目录或者.well-known目录下,这是为了苹果能获取到你上传的文件。上传完后,让上传人员给你一个访问路径,先访问一下,看看是否能够获取到。其实现在已经建议上传到.well-known目录下了,上传人员给你的访问地址你在PC端的浏览器或者手机的Safari浏览器访问,会提示下载该文件,你点击同意下载,下载下来是你的那个文件内容,并且内容没有乱码,说明正确,不行要重新检查上传。
四.在Xcode开发工具配置Associated Domains
在其中的Domains中填入你想支持的域名,必须以applinks:为前缀,如:applinks:domain
如果上传人员给你的访问路径是:
https://www.baidu.com/.well-known/apple-app-site-association 或
https://www.baidu.com/apple-app-site-association
则Domains中填入:applinks:www.baidu.com
配置好后run起来。
请添加图片描述
这里你可以看到,这个Associated Domains是可以添加多个的。
五.验证我们的通用链接是否生效
1.使用我们的苹果手机备忘录。先在Xcode中配置好了Associated Domains,苹果开发者中心也配置好,导入描述文件,然后将App安装到你的手机真机上。最后在你的手机真机的备忘录中输入你的链接,点击你备忘录中的链接能直接打开你手机上的App,或者长按备忘录的链接,出现“在“xxxx”中打开”对话框,点击对话框也可以打开你的App即为成功.
请添加图片描述

2.使用iPhone的Safari浏览器。在浏览器中输入链接,输入过后,往下滑,顶部会出现“提示条”,提示“在“xxxxx”App中打开”,然后点击右侧的“打开”,如果能打开你的App,即为成功.

这里发生过一个小事故,我在Safari浏览器中输入链接的时候,往下拉一直不出现此提示条,就很纳闷。虽然上面的几个链接在备忘录中都可以打开我们的App,但是在浏览器中不都是可以出现提示条的。经过我不断的尝试我在https://class.xxxx.com/app/输入浏览器才出现提示条,也就是我在后面加了一个"/app/",才出现提示条,这可能和后台或者运维的配置有关,网上的其他通用链接教程,是没有我这一步的,也没有遇见谁提及到了此处.
请添加图片描述
3.使用苹果官方的检测通用链接的网址.地址是:https://search.developer.apple.com/appsearch-validation-tool/
这玩意其实是有点坑的,你将你的链接输入进去,不报红就可以了。检测的到的话,会出来你App的名字,logo图标啥的,我之前的App可以检查到,新编写的项目死活检查不到,还以为哪里搞错了,结果硬着头皮申请了微信分享,测试,上架AppStore过后,结果还是检查不到,但是功能都是完全正常的,卡在这里卡了好久,一直检测不到,你说坑不坑.
六.代码. 跳转回 APP 的处理
当点击某个链接,直接可以进我们的app了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。
我们需要在工程里的实现AppDelegate里对应的方法.上述配置和验证工作都完成过后,在Appdelegate中注入相关代码

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSString *urlStr = userActivity.webpageURL.absoluteString;
        if ([urlStr isEqualToString:@"https://class.xxxxxxxx.com/app/apple-app-site-association"]) {//这里好像也可以使用链接的其他写法比如:class.xxxxxxxx.com这样就行,没有实验过.
            return  YES;
        }
    }
    return [self UMApplication:application continueUserActivity:userActivity restorationHandler:restorationHandler];// 这里其实是我封装了友盟的相关东西.
    
}

七.注意事项
注意事项我只是总结了我遇到的问题,欢迎大家补充.
1.手机上必须安装你需要跳转的应用并配置Associated Domains,才能验证成功.
2.Universal Link必须要求跨域,如果不跨域,就不会跳转(iOS 9.2之后的改动).
3.服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association
4.只有当前webview的URL域名,与跳转目标URL域名不一致时,Universal Link(通用链接)才生效。
5.域名必须需要为可以访问的,必须使用https://有效证书托管文件,并且没有重定向.
6.域名最好不要与 app 接口域名一样,这与微信分享有关.
7.文件的URL应符合以下格式:https:///.well-know/apple-app-site-association

八.微信的要求
说白了,现在的通用链接都是给鹅厂产品搞的,比如微信和QQ,贼烦.

1.Universal Links必须支持https
2.Universal Links配置的paths不能带query参数
3.微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符**/*** (这一条来自其他教程,没有实验过,不过我在做微信分享的时候通用链接是以"/app/“结尾的,JSON文件是”/*"作为的paths值,原作者可能表达的是这个意思)

下面这张图是微信官方申请的时候要求截图:请添加图片描述

4.通用链接代替了原白名单式的跳转方式,但是微信还是要求了我们配置了白名单,相当于两者都配置了。不理解其意。

5.如果要做微信分享啥的,加上这个吧.
请添加图片描述
当然info下面的URL Types你还是要搞的。
请添加图片描述

好的,问题是小细节有点多

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:23:57  更:2021-10-09 16:25:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:48:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码