`

universal link

    博客分类:
  • ios
 
阅读更多

什么是Universal Links?

在iOS9之前,对于从各种从浏览器、Safari中唤醒APP的需求,我们通常只能使用scheme。但是这种方式需要提前判断系统中是否安装了能够响应此scheme的app,并且这种方式在微信中是被禁用了的。

Universal Links是iOS9推出的一项功能,使你的应用可以通过传统的HTTP链接来启动APP(如果iOS设备上已经安装了你的app,不管在微信里还是在哪里), 或者打开网页(iOS设备上没有安装你的app)。

下面简单说下怎么使用Universal Links,具体的可以看官方的说明文档

怎么使用Universal Links

1.先决条件:你必须有一个域名,且这个域名需要支持https。

2.需要在开发者中心做配置:找到对应的App ID,在Application Services列表里有Associated Domains一条,把它变为Enabled就可以了。


配置App ID支持Associated Domains

3.打开工程配置中的Associated Domains,在其中的Domains中填入你想支持的域名,必须以applinks:为前缀。


配置项目中的Associated Domains

4.创建一个json格式的文件,苹果将会在合适的时候,从我们在项目中填入的域名请求这个文件。这个文件名必须为apple-app-site-association,没有后缀名:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "9JA89QQLNQ.com.apple.wwdc",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
            },
            {
                "appID": "ABCD1234.com.apple.wwdc",
                "paths": [ "*" ]
            }
        ]
    }
}

说明:

appID:组成方式是 teamId.yourapp’s bundle identifier。如上面的 9JA89QQLNQ就是teamId。登陆开发者中心,在Account - Membership里面可以找到Team ID。

paths:设定你的app支持的路径列表,只有这些指定的路径的链接,才能被app所处理。星号的写法代表了可识别域名下所有链接。

这篇博客里有很多其他公司的例子,可以参考一下。

5.上传该文件到你的域名所对应的根目录或者.well-known目录下,这是为了苹果能获取到你上传的文件。上传完后,自己先访问一下,看看是否能够获取到,当你在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件。

验证

在iOS设备中的备忘录中输入App能识别的链接,然后直接点击此链接,就会直接跳转到你的app了。或是长按,在出现的弹出菜单中第二项是在’XXX’中打开,这也代表着成功:


出现菜单

或是你将要测试的网址在safari中打开,在出现的网页上方下滑,可以看到有在”XX”应用中打开


出现菜单

在微信的网页浏览器中也是可以的,虽然微信屏蔽了所有的scheme方式跳转到其它app,但是Universal Links是由系统直接处理的,微信屏蔽不了,这也就实现了从微信跳转到我们的app。

苹果为了方便开发者,提供了一个网页来验证我们编写的这个apple-app-site-association是否合法有效,进入验证网址进行验证:


验证链接

进入app后的处理

现在用户点击某个链接,直接可以进我们的app了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。
我们需要在工程里的 AppDelegate 里实现方法

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
    {
        NSURL *url = userActivity.webpageURL;
        if (url是我们希望处理的)
        {
            //进行我们的处理
        }
        else
        {
            [[UIApplication sharedApplication] openURL:url];
        }
    }

    return YES;
}

好了先说到这里,如果遇到什么问题可以详细看官方的说明文档

欢迎关注  和我的专题:iOS技术交流,查看更多好文章。

分享到:
评论

相关推荐

    iOS 通用链接(Universal Link)配置详解

    iOS 通用链接(Universal Link)配置 什么是通用链接? 通用链接是iOS9推出的一项新功能,如果你的应用(app)支持通用链接(Universal Link)之后,iOS用户能够在点击网页的链接的时候无缝的重定向到已经安装的app...

    iOS防止在WKWebView中打开Universal Link的方法

    防止在WKWebView中打开Universal Link的方法 文章地址:https://kunnan.blog.csdn.net/article/details/119813220

    iOS 微信 唤醒客户端失败&注册失败&需要UniversalLink 的解决方案

    + (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink; 其中 universalLink 微信开发者Universal Link 所以更细之后 友盟和shareSDK 等三方登录托管平台都需要相关的配置 参考:微信官网...

    DwightChan#GitBookNote#00222-iOS 唤起APP之Universal Link(通用链接)1

    上传完后,先访问一下,看看是否能够获取到,当你在浏览器中输入这个文件链接后,应该是直接下载apple-app-site-association文件代码中的相关支

    P30TIP Universal Link Checker-开源

    通用文件共享站点的链接检查器。 像快速共享、超级上传、轻松共享、存入文件等等! 由 P30TiP.COM 编写和设计

    ios中Deep Linking实例分析用法

    在 iOS 中,deep linking 实际上包括 URL Scheme、Universal Link、notification 或者 3D Touch 等 URL 跳转方式。应用场景比如常见的通知,社交分享,支付,或者在 webView 中点击特定链接在 app 中打开并跳转到...

    iOS Universal Links 使用方法

    配置文件 文件名:apple-app-site-association { applinks:{ apps:[], details:[ { appID:teamID.bundleID, paths:[*] } ] } } paths说明: 填写:”/customer/” 当用户点击网址”你的域名/customer/list...

    USB30 Universal Serial Bus 3.0 Specification pdf it is free

    724 Link Command Usage for Flow Control, Error Recovery, and Power Management7-15 7241 Header Packet Flow Control and Error Recovery 7-15 72411 Initialization7-15 72412 General Rules of LGOOD_n and ...

    USB 3.1 Link Layer Test Specification.pdf

    Universal Serial Bus 3.1 Link Layer Test Specification

    iOSProject:为iOS App收集了一些演示的iOS项目,使用Objective-C

    近期更新RSA加密解密iOS UniversalLink通用链接演示(任意浏览器和WebView打开App)GitHub上的简书: 博客:电子邮件: | | || | | || | || | |如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新...

    wechatLoginDemo.zip

    swift 5.1 WechatOpenSDK (1.8.7.1)微信登录继承demo封装 包含真实项目 app ID, universal link,app Secret供大家学习使用,请用xcode 12.4版运行项目选择真机运行

    wechatLoginOCDemo.zip

    ios oc WechatOpenSDK (1.8.7.1)微信登录继承demo封装 包含真实项目 app ID, universal link,app Secret供大家学习使用,请用xcode 12.4版运行项目选择真机运行

    dwc_ether_mac10_100_universal.docx

    The DesignWare® Ethernet MAC 10/100 Universal intellectual property (IP) core implements the link layer of an Open System Interconnection (OSI) Ethernet system. The silicon-proven Ethernet MAC ...

    WebController:快速WKWebView:grinning_face_with_smiling_eyes:

    从网站上的DeepLink或UniversalLink接收到应用程序的架构后,就可以打开该应用程序。 要求 用Swift 5编写的WebController 。兼容iOS 9.0+ 安装 椰子足 WebController可通过。 要安装它,只需将以下行添加到您的...

    Universal Serial Bus 3.0 Specification.pdf

    3.1.1.2 Link Layer........................................................................3-3 3.1.1.3 Protocol Layer.................................................................3-3 3.1.1.4 Hubs......

    浅谈Html5页面打开app的一些思考

    1. 需求 ...之后的步骤以安卓手机为例子介绍,目前ios9版本之后的系统不需要我们H5做这些判断app是否安装的流程(ios9之后可以通过提供一个通用链接(Universal link),做到没有安装app提示打开苹果应用

    cordova-plugin-wechat:Cordova插件,微信SDK的JS版本

    使用它之前,你需要配置通用链接服务,并注意经过universallink安装插件时变量,否则将无法正常工作。 如果您不想使用新版本的功能,则可以回退到3.0.0之前的版本科尔多瓦插件微信Cordova插件,微信SDK的JS版本特征...

    Universal-USB-Installer

    (UUI) Universal USB Installer ?009-2012 Lance http://www.pendrivelinux.com This Open Source tool falls under the GNU General Public License Version 2 Source Code is made available at time of download,...

Global site tag (gtag.js) - Google Analytics