一、 通用链接介绍

Apple 推出通用链接:一种能够方便的通过传统 HTTP 链接来启动 APP, 使 用相同的网址打开网站和 APP。

当你的应用支持通用链接,iOS9 之后 , 用户可以点击一个链接跳转到你的网站,并获得无缝重定向到您安装的应用程序,而无需通过 Safari 浏览器。如果你的应用不支持的话,点击链接将会用 Safari 来打开。

二、通用链接的优点

通用链接比自定义的URL链接有几处尤为突出的好处,具体来说,通用链接:

独特性:与自定义的URL链接相比,通用链接不能被其他的应用程序所访问,因为

它们使用的是标准的HTTP 或 HTTPS 链接到你的网站。

安全性:当用户安装应用程序,iOS会检查您已经上传到web服务器文件,以确

保您的网站允许你的应用程序能打开代表它的URL 文件,只要你创建并且上传该

文件,那么你的应用和服务器之间的关联是安全的。

灵活性:当你的应用程序没有被安装的时候,通用链接照样能够工作。当用户没有

安装你的应用程序,点击该链接,将会以用户所期望的以Safari的形式访问。

简单性:通用链接既能支持你的网站,又能支持你的应用

私有性:其他的应用程序能和你的应用程序通信,不管你的应用是否被安装。

传统例子:

传统的密码重置流程是这样的:

1, 您忘记了密码,让你点击“忘记密码”按钮,在应用程序l 输入您的电子邮件,并点击下一步

2, 请检查您的电子邮件,点击重置密码链接

3, Safari中的密码重置页面打开

4, 您输入新密码并保存

5, 切换回应用程序,并登录使用表示新密码

使用通用链接后:

随着通用的链接,我们可以从过程中完全删除 Safari 浏览器。 现在,用户可以重新 设置在应用程序的密码,允许应用程序来复位后也自动登录他们进来。 这是所有可能 的同时还具有重置密码的电子邮件的安全性,以确认身份。

它可以被用来大大提高以前烦人的工作流程的用户体验。

视频演示:http://t.cn/R4pxxB5 (利用“通用链接”改善“密码重置功能)

使用通用链接后有四种打开方式效果:

第一种:安装客户端后点击链接(检测应用是否安装,如果安装直接打开应用)

第二种:长按链接选择 Safari 中打开

第三种:长按链接选择在 XXX 中打开

第四种:删除应用后点击链接(检测应用是否安装,如果没有安装在 Safari 中 打开网址)

三、 通用链接的关键实现条件

有一个注册的域名

域名可通过 SSL 访问(应该是需要有效的证书)

支持上传一个 JSON 文件到域名

至少 iOS 9 beta 2 版本

至少 Xcode 7 beta 2

需要真机测试,模拟器不支持通用链接

web server 需要支持 https,客户端需要通告 https 访问,并且不支持任何重定向

四、 通用链接实现步骤

1, 开启 Associated Domains 域:

进入苹果Apple Developer --- Member Center - Certificates, Identifiers & Profiles – Identifiers - App IDs –Edit 然后开启打钩 Associated Domains 后保存。

wKioL1aUntixyjoQAACkJBawYLA561.png.jpg

2, 添加 Associated Domains 域:

说明:你的 APP 域名, 必须用 applinks: 前置它:还添加一些你可能 拥有的子域和扩展(www.domain.com, news.domain.com 等等)。

添加域名,点击Associated Domains的“+”添加前缀为applinks:的域名,如下图所示

作用:配置之后你的 APP 会自动从你的域名请求一个特殊的 JSON 文 件 apple-app-site-association。当你第一次启动 APP,它会从 https://domain.com/apple-app-site-association 下载这个文件。

操作:项目 targets->Capabilities->Associated Domains

wKioL1aUnxmQmwMwAADmz-ozCd0626.png.jpg

3, 上传 apple-app-site-association 文件到服务器的根目录:

注意事项(1)

1, paths 路径是大小写敏感的

2, paths 内容可明确哪些通用链接需要被处理,哪些不需要

3, NOT 使用:为了明确指出不被处理的链接,可增加 “NOT”在链接前面

例 如 "paths": [ "/wwdc/news/", "NOT /videos/wwdc/2010/", "/videos/wwdc/201?/"]

4, 你可以使用 * 明确所有的网页

5, 也可以使用一个明确的的 URL,例如 /wwdc/news/

6, 也可以追加 * 到你的 URL ,例如 /videos/wwdc/2015/* 也可以使用 * 来匹配任何字符,使用 ? 来匹配一个字符,可以在路径 中使用这种混搭的形式, 例如 /foo/*/bar/201?/mypage

注意事项(2)

1, “appID”组成部分:TeamID + BundleId TeamID

2, BundleId 一定要和 APP 的 BundleId 一致。

3, apple-app-site-association 文件不能带后缀

4, apple-app-site-association 文件需要上传到网站根目录

5, 每一个代表着应用的 字典,必须包含一个 appID 和 paths, appID 是teamID 和 bundleID,paths 是一个字符串的数组 明确着你的应用支持的通用链接和你的应用程序不支持的通用连接内容。

其中apps项必须对应一个空的数组。details项对应一个字典的数组,网站所能支持的每个app一个字典。

appID对应项由前缀和ID两部分组成,可以在developer.apple.com中的Identifiers→AppIDs中点击对应的App ID查看。

20160202201204186.jpg

paths对应域名中的path,用于过滤可以跳转到App的链接,支持通配符‘*’,‘?’以及‘NOT’进行匹配,匹配的优先级是从左至右依次降低。

6, 内容如下例子

{

"applinks": {

"apps": [],

"details": {

"TBEJCS6FFP.com.domain.App": {

"paths":[ "*" ]

}

}

}

}

服务器配置要求:

域名需要SSL证书,如果不支持HTTPS,则需要对apple-app-site-association进行SSL认证。认证命令如下:

服务器配置.png

服务器配置要求站点必须是youdomain.com/apple-app-site-association,请求头是‘application/pkcs7-mime’,返回HTTP码是200。

4, 在 APP 里处理通用链接:

例子:

为了在 APP 里支持通用链接, 你需要在 AppDelegate 里实现[application(_:continueUserActivity:restorationHandler:)]。

wKiom1aUn2ey90SoAAE2OLBb4KI250.png.jpg

一些注意的事项

5.1. apple-app-site-association不需要.json后缀。

5.2. 如果要对没有path的域名进行支持(如:www.163.com),在json文件的paths中用通配符’*’是不行的,需要在paths数组中加入’/’进行匹配。

5.3. 对json文件的请求仅在App第一次启动时进行,如果此时网络连接出了问题apple会缓存请求,等有网的时候再去请求,而实际测试抓包并没有请求故通用连接会失效。

5.4. paths匹配的优先级是从左至右依次降低,但需要明确,否则会出问题。比如"paths":["NOT /together/",""],在IOS9.2上path为/together/*都不会跳到App,但是在IOS9.0上会跳到。

苹果传pc用文件功能连接服务器url无效,iOS 9的 Universal Links 通用链接使用介绍相关推荐

  1. 苹果描述文件无法连接服务器,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...

    最近看到用户反映苹果游戏中心game center无法连接服务器出现白屏的情况,这是什么原因呢?今天小编就为大家带来解决方法,需要的朋友可以一起看看! 苹果game center白屏或者无法连接服务器 ...

  2. Android之解决PC浏览器上传表单文件到手机服务器read数据错误导致有时候下载到手机的文件打开文字错乱问题

    1 .问题 手机客户端app通过java socket写了一个服务器,然后PC端通过浏览器访问服务端显示上传页面(这些资源都在手机端),然后其中有一个功能是PC端上传文件到手机服务器,然后把这个文件下 ...

  3. 使用putty连接并上传和下载文件到linux服务器

    目录 一.连接到linux 二.上传和下载文件 putty下载地址:https://putty.en.softonic.com/?ex=MOB-575.6 安装完后会看到如下的目录文件 一.连接到li ...

  4. iOS13文件的连接服务器

    前言:用了一段时间之后不得不说这个功能挺好用的,只用本地局域网就能完成,基本上就不用QQ和U盘传文件了,而且5.0g无线网下传输速度还是挺快的,下面记录一下怎么搞 前提:必须在同一个局域网络下 1. ...

  5. ssh连接服务器FTP传不了文件,ssh连接服务器FTP传不了文件

    ssh连接服务器FTP传不了文件 内容精选 换一换 Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接,连接示例图如图1所示.Atlas 200 DK连接Ubunt ...

  6. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  7. 手机连接服务器数据库文件,手机连接服务器数据库文件夹

    手机连接服务器数据库文件夹 内容精选 换一换 GaussDB(DWS)支持使用gs_dump工具导出某个数据库级的内容,包含数据库的数据和所有对象定义.可根据需要自定义导出如下信息:导出数据库全量信息 ...

  8. icloud连接服务器时出现问题_ios13 ipad/iphone与windows 连接传输文件显示连接服务器用户或密码无效解决方法...

    ios 13 中ipad/iphone 可以通过文件共享传输文件,效果不错.以下是建立的方法. 进击的555:如何在电脑和Ipad平板之间高效互传?​zhuanlan.zhihu.com 奈何连接时一 ...

  9. 手机访问服务器中的数据库文件,手机连接服务器数据库文件在哪里

    手机连接服务器数据库文件在哪里 内容精选 换一换 通过PostgreSQL客户端连接实例的方式有非SSL连接和SSL连接两种,其中SSL连接通过了加密功能,具有更高的安全性.绑定弹性公网IP并设置安全 ...

最新文章

  1. 比特币现金(BCH)是5月的货币之王
  2. OFDM专题之子载波间干扰问题(一)
  3. MyISAM与InnoDB的索引实现
  4. Linux网络编程——I/O复用之poll函数
  5. 使用前端框架Foundation 4来帮助简化响应式设计开发
  6. 怎么让手机变成震动器_详解iPhone 手机标配的两种技术:线性马达和3Dtouch,有多好用?...
  7. 【性能优化】 之 RAC架构性能优化
  8. FactroyBean方式配置bean
  9. 大数据实效_全流程监督 让大数据督查取得实效
  10. 动态生成Repeater
  11. 小程序wx.uploadFile 显示errMsg: uploadFile:fail Error: Parse Error
  12. (转) RabbitMQ学习之spring整合发送同步消息(注解实现)
  13. 饭卡 01背包 DP
  14. VMWare12安装CentOS7操作系统并搭建GitLab环境【1】
  15. python实用小工具之一:BMFont位图导出脚本
  16. 枪毙ctfmon.exe 恢复你的默认输入法
  17. DIY智能战车制作教程,开启你的造车之旅
  18. 机器学习(聚类七)——层次聚类的优化算法
  19. 【运筹学】线性规划数学模型 ( 线性规划三要素 | 一般形式 | 标准形式 | 标准形式转化 | 可行解 | 最优解 | 基 | 基向量 | 基变量 | 非基变量 ) ★★
  20. 离散型特征的处理方法

热门文章

  1. 360集团算法工程师校招面经
  2. 1650显卡能带动144hz吗_GTX1660TI相当于1070,完全带不动144Hz显示器?
  3. (基于安卓app开发的毕业设计)智能手机图片管理.(附源码+论文)
  4. iPhone与iPad开发实战——iOS 经典应用剖析视频--观看地址
  5. Java实现发送邮件功能
  6. Linux下帝国CMS详细安装与使用教程
  7. 小型鸡尾酒推荐系统运行记录(github项目)
  8. airtable mysql_airtable(airtable中国版)
  9. HTML5 手机与PC的浏览器
  10. JMeter 控制并发数