iOS9上的Universal Link实现(教程)
1.Universal Link
理解为苹果官方支持deeplink就行了
2.通过点击HTTP链接启动APP
Web・iOS应用在支持Universal Link的前提下,当用户点击特点的链接时会自己起动应用
・App已经安装的前提下:直接启动App然后现实链接内容
・App没有安装的前提下:Web上继续显示链接内容
3.Universal Link的实现方法
首先需要准备一下内容
Web服务器
・独立的domain
・SSL证书
・被签名的JSON文件
iOS应用
・iOS9以上
・Xcode 7・iOS 9 SDK
・Capabilities
・AppDelegate的代理设置
3.1 Capabilities的设置
在Capabilities的设置中,设置`Associated Domains’的Domains内容

例:https://www.facebook.com/ -> applinks:facebook.com
注意:对于subdomain,www的有无要仔细考虑一下
3.2 apple-app-site-association文件的配置
apple-app-site-association文件一定要放在服务器的根目录下!!!!!!
首先要准备一下apple-app-site-association文件
{
"applinks": {
"apps": [],
"details": {
"TBEJCS6FFP.com.domain.App": {
"paths":[ "*" ]
}
}
}
}
paths中的内容为对应App启动的链接路径
全路径的时候使用“*”。
特定位置的时候需要指定具体内容,
["/wwdc/news/", /videos/wwdc/2015/*]
TBEJCS6FFP.com.domain.App这部分使用的是你的TeamID和Bundle Identifier
3.3 对apple-app-site-association文件的签名
我使用的是以下的方法对apple-app-site-association进行签名。
cat apple-app-site-association-unsigned.js | openssl smime -sign -inkey g01-server.key -signer g01-server.crt -certfile g01-dvcacert.cer -noattr -nodetach -outform DER > apple-app-site-association
3.4 App对应的开发
在AppDelegate.m文件中添加以下代码
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
NSLog(@"continueUserActiity enter");
NSLog(@"\tAction Type : %@", userActivity.activityType);
NSLog(@"\tURL : %@", userActivity.webpageURL);
NSLog(@"\tuserinfo :%@",userActivity.userInfo); NSLog(@"continueUserActiity exit");
restorationHandler(nil); NSHTTPCookieStorage *sharedHTTPCookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray *cookies = [sharedHTTPCookieStorage cookiesForURL:userActivity.webpageURL]; NSLog(@"COOKIE{name: %@", cookies);
return true;
}
如代码所示,我们可以获取到跳转链接的一些基本信息
URL内容,ActionType等都是可以获取并且在代码中进行修改的。
4.结果
通过以上的配置后,一个基础的Universal Link应用就开发结束了
点击对应的链接我们可以看到自己的App被成功启动
5.一些事实
相同的服务器不同的目录结构可能导致Universal Link不启动
应用和json文件同时更新时,json更新的部分可能会没有效果
如果需要使用我的服务器和app进行测试的同时可以私信我。
iOS9上的Universal Link实现(教程)的更多相关文章
- iOS9 Universal Link实现
先来贴几个比较全面的帖子,看完就差不多了. 1 iOS 9 通用链接(Universal Links) 帖子注意项非常重要,仔细阅读. 自己补充几点: 1 服务器上配置的json文件apple-a ...
- iOS 唤起APP之Universal Link(通用链接)
什么是Universal Link(通用链接) Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和 ...
- universal link使用
iOS9之后,苹果推出了universal link方案,该方案较url scheme有明显的改善.url scheme很难做到唯一. 而 universal link却是你自己控制的. 1.有一个H ...
- ios9怎么设置6位密码 ios9设置6位密码图文教程
在原来的 iOS 系统中,只有四位数字密码与复杂密码之分,而在 iOS9 系统中却多出了一个六位数字密码,那ios9怎么设置6位密码,今天小编就为大家带来ios9设置6位密码图文教程 在原来的 i ...
- github上最全的资源教程-前端涉及的所有知识体系【转】
github上最全的资源教程-前端涉及的所有知识体系[转自:蓝猫的博客] 综合类 综合类 地址 前端知识体系 http://www.cnblogs.com/sb19871023/p/3894452.h ...
- iOS 禁用`URL Scheme`和`Universal Link`(通用链接)
为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...
- 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!
对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...
- Windows OS上安装运行Apache Kafka教程
Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...
- Universal Link 笔记
如何实现Universal Link? 简单地说三步,1.把一个配置文件放在指定服务器根目录 2.在Xcode中设置AssociateDomain 3.安装app时,会根据Xcode中设置的Assoc ...
随机推荐
- Django生产环境的部署-Apache-mod_wsgi
httpd.conf配置 ServerSignature On ServerTokens Full Define APACHE24 Apache2.4 Define SERVER_BASE_DIR & ...
- win8 开启wifi
1,以管理员身份运行命令提示符,输入命令 netsh wlan set hostednetwork mode=allow ssid=networkname key=password后回车 其中ssid ...
- c# winform 隐藏tabcontrol标签
Apperarance 属性:Faltbuttons SizeMode属性:Fixed 各个TabPage的Text :空 ItemSize : Width=0;Height=1;
- Morgan stanley 电话面试
首先是聊项目, 不会涉及到具体的技术问题 1.C和C++的区别:C++里的RTTI 2.vector 和 list的区别 : casting operator ; smart pointer. 3.数 ...
- AppStore IPv6-only审核被拒原因分析及解决方案-b
自2016年6月1日起,苹果要求所有提交App Store的iOS应用必须支持IPv6-only环境,背景也是众所周知的,IPv4地址已基本分配完毕,同时IPv6比IPv4也更加高效,向IPv6过渡是 ...
- 设置UIButton的文字居右显示 去掉点击默认置灰效果
1.设置UIButton的文字居右显示 [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentRight]; ...
- SQL Server强制删除复制发布
原文地址:http://blog.csdn.net/leamonjxl/article/details/7352208 SQL Server 中 存在以前(系统还原前)的发布内容,使用鼠标->右 ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
- phpStorm 使用技巧大集合
之前整理了一部分使用技巧了,但是在实际操作中发现phpstorm的技巧实在是太多了,所以大部分都统一整理到这篇文字中 ,备用 插件1 1:phpstrom的插件Provides live edit H ...
- awsomeplayer结构认识
把这个搞明白,算是顿悟的一个真实例子.怎么也搞不懂的架构,突然就想明白了.不过这其实是一个思维的过程. 当然如果你想明白这些东西,至少要非常清楚一个概念:接口. 我只是一个半路出家的开发者,我真正明白 ...