前段时间和朋友(@品味生活)一起搞 iOS9的通用链接,我主要做了前面官方文档翻译工作,后面的一些东西都是他在搞,整理也是他整理的。

他的博客原文地址:http://pinwei.blog.51cto.com/5452359/1734167

转载请注明 地址

一、 通用链接介绍

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 后保存。

2, 添加 Associated Domains 域:

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

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

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

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 是一个字符串的数组 明确着你的应用支持的通用链接和你的应用程序不支持的通用连接内容。

6, 内容如下例子

1
2
3
4
5
6
7
8
9
10
{
  "applinks": {
    "apps": [],
    "details": {
      "TBEJCS6FFP.com.domain.App": {
        "paths":[ "*" ]
      }
    }
  }
}

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

例子:

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

部分参考资料:
https://developer.apple.com/ios/download/ (AppleDeveloper)

http://www.cocoachina.com/ios/20150902/13321.html (Cocoachina)

http://www.jianshu.com/p/c2ca5b5f391f  (subvertwuxu 简书)

http://strivingboy.github.io/blog/2015/09/27/ios9 (github blog)

http://stackoverflow.com/questions/33391615/ios-9-universal-links-dont-work http://www.jackivers.me/blog/2015/9/17/list-of-universal-link-ios-9-apps(jack blog)

http://help.tune.com/marketing-console/ios-universal-links-with-tune/

iOS 9的 Universal Links 通用链接使用的更多相关文章

  1. iOS Universal Links(通用链接)

    公司的运维,发现最近大量的请求 /.well-known/apple-app-site-association这个文件,造成了大量的404,可是这是谁请求的呢? 其实是苹果从iOS9.3开始更改了通用 ...

  2. iOS 唤起APP之Universal Link(通用链接)

    什么是Universal Link(通用链接) Universal Link(通用链接)是Apple在iOS9推出的一种能够方便的通过传统HTTPS链接来启动APP的功能,可以使用相同的网址打开网址和 ...

  3. iOS 禁用`URL Scheme`和`Universal Link`(通用链接)

    为什么要禁用URL Scheme和Universal Link(通用链接) 通常我们APP中都会嵌套一些web页面,有时我们的web页面会被DNS劫持从而跳转到其他APP中:或者是某些APP的Univ ...

  4. iOS 9 的新功能 universal links

    什么是 universal links: (通用链接) 一种能够方便的通过传统 HTTP 链接来启动 APP, 使用相同的网址打开web page和 APP的方式. 第一点,链接打开网址 顾名思义 第 ...

  5. iOS 9学习系列:打通 iOS 9 的通用链接(Universal Links)

    在WWDC 2015 上, Apple 为 iOS 9 宣布了一个所谓 通用链接 的深层链接特性, 视频地址为 [无缝链接到您的 App].虽然它不是一个必须实现的功能, 但还是需要引起一些注意. 在 ...

  6. iOS 9 通用链接(Universal Links)

    什么是Universal Links? 在iOS9之前,对于从各种从浏览器.Safari中唤醒APP的需求,我们通常只能使用scheme.但是这种方式需要提前判断系统中是否安装了能够响应此scheme ...

  7. iOS通用链接(Universal Links)突然点击无效的解决方案

    接上文<微信中通过页面(H5)直接打开本地app的解决方案>已经把iOS搞定并且已经正常能跑了,突然就再也用不了了... 问题描述 测试告诉我,如果从微信打开App之后,点击App右上角的 ...

  8. 简单配置iOS的通用链接,迅速解决“universal link 校验不通过”问题!

    对于需要使用微信支付等功能的APP来说,对接微信提供的openSDK是不可缺少的一环.随着苹果iOS 13系统版本的安全升级,为此openSDK在1.8.6版本进行了适配.1.8.6之后的openSD ...

  9. iOS 微信打开第三方应用(Universal Links 和 URL Schemes)

    一.前言 项目中时常有这种需求, 是通过链接跳转到应用内部,现在iOS主流的方案有两个 Schema: 常用在于一个应用跳转到另一个应用内部,属于应用间的跳转.当然ios9以下,网页可以通过schem ...

随机推荐

  1. Linux下根据进程的名字杀死进程

    以前是写了一个bash,通过ps,grep 和awk配合搜索PID再kill掉进程.果然以前傻,不知道解决问题之前先google,原来直接就有相关的pkill -f "process_nam ...

  2. Python socket 客户端和服务器端

    connection, address = socket.accept() 调 用accept方法时,socket会时入“waiting”状态.客户请求连接时,方法建立连接并返回服务器.accept方 ...

  3. iOS 9之New UIKit for International User Interfaces

    金田 Apple一直是注重用户体验的典范,而此次在UI上面,更是做到极致.此次iOS 9的发布能完全支持阿拉伯语.希伯来语等书写和阅读方式为从右向左的语言环境.不仅仅是简单的基础文本,而是支持将界面翻 ...

  4. C#中判断字符串是否中文的方法

    public bool IsChinaString(string CString) { bool BoolValue = false; ; i < CString.Length; i++) { ...

  5. C# 同步/并发队列ConcurrentQueue (表示线程安全的先进先出 (FIFO) 集合)

    http://msdn.microsoft.com/zh-cn/library/dd267265(v=vs.110).aspx static void Main(string[] args) { // ...

  6. [LeetCode] 129. Sum Root to Leaf Numbers 解题思路

    Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...

  7. Centos6 httpd与tomcat整合发布

    有时候需要在Web入口地址中隐藏非80端口,而最常见的方案是整合httpd和tomcat ,下面是通过mod_jk实现httpd和tomcat整合的详细流程,希望对大家有所帮助. OS: CentOS ...

  8. Bonobos | IT桔子

    Trumaker | IT桔子 Trumaker trumaker.com

  9. java中小工具————UUID

    示例代码: package com.lky.test; import java.util.UUID; import org.junit.Test; /** * @Title: testUUID.jav ...

  10. java中post和get请求

    示例代码: package com.shareboxes.util; import java.io.BufferedReader; import java.io.IOException; import ...