iOS收藏ios 知识小集iOS 开发~项目常用,经典内容收集

iOS 通用链接(UniversalLinks)+ 分享功能的一

2017-08-16  本文已影响1406人  海边的1984_

引子:

你有没有想过为你的用户减少一道操作?

什么是通用链接?

通用链接是iOS9出的一个特性,他能让用户通过链接直接打开你的APP。经常配合分享功能,让用户快速进入到我们的APP里面。
APP的两大引流功能 --> 分享+推送,个人认为应该在这上面多下功夫。分享功能至少要能将对你们APP感兴趣的用户引入到APP,但是我很失望的看到很多APP没有做到这一点,就更别提使用通用链接来跳过微信对URL Schemes的屏蔽。

分享功能市场上常见APP的做法

low:简书,爱奇艺,美食节。

点击分享到微信里面分享 ->网页->APPStore。最为关键为APP引流都没有做到。

WechatIMG5.jpeg WechatIMG6.jpeg WechatIMG7.jpeg

medium:哔哩哔哩。

点击分享到微信里面分享 ->微信浏览器->浏览器safari->APP。虽然这个做到了,但是并没有引导用户打开浏览器,然后进入APP。这里要说明的就是微信的浏览器将URL Schemes屏蔽掉了,所以这里只能借助浏览器中转一下。这种是比较常见的做法,我之前的应用就是这种做法。

high: 知乎,即刻。

点击分享到微信里面分享 ->微信浏览器->APP。直接跳转,非常方便。这就是我今天要讲的通用链接。

WechatIMG11.jpeg WechatIMG12.jpeg

开工实现

前提条件:通用链接其实很容易实现,坑全部在下面这两个条件上了。

q1:能够通过 SSL 访问域名。(即支持https://访问,用谷歌浏览器打开网页就能测试出来,下面就是支持https的。


WechatIMG13.jpeg

q2:支持上传一个无后缀文件到你的域名解析的服务器的.well-known文件下面,并且能通过链接直接访问并且下载。

如果你们的后台服务器是支持SSL的,直接将文件丢在根目录下面,然后配置一下iis的MIME的权限(因为iis默认不支持无后缀的文件,所以访问不到)。
如果你们后台服务器的域名还不支持SSL,那么先去腾讯云,阿里云去购买证书,然后到iis下面去安装这个证书。

上面两项我坑了好久,因为服务器经验不是很足,这里也只能给你们指出关键坑。如果上面两个准备好了,其他的就很轻松了。

1.登录APPDevelop

https://developer.apple.com/

2.开启对应的AppIDsAssociated Domains服务

WechatIMG14.jpeg WechatIMG15.jpeg

3.编辑对应的Provisioning Profiles,并且重新下载双击安装

WechatIMG17.jpeg

4.打开Xcode项目,开启项目的Associated Domains,这时候会看到左边目录下多出了一个文件,这是正常的。

WechatIMG18.jpeg

5. 编写一个无后缀的apple-app-site-association(我已经放在demo的文件下面,你们可以自行参考)

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "47P6T6SYNE.com.zzyg.travelnotes",
                "paths": [ "/botaochen/*"]
            }
        ]
    }
}

appID里面47P6T6SYNE是项目的TeamID,com.zzyg.travelnotes是项目的BundleID

WechatIMG19.jpeg

说明一下这里的details里面是不同的链接方式都能进入到APP里面,这样开发者可以通过控制details里面的paths来进行不同页面不同模块的跳转。
比如我可以通过:https://www.icarusli.com/botaochen/123
访问APP,https://www.icarusli.com是域名 botaochen/* “*”可以是任何字符串。

给一个其他成熟公司的通用链接文件是怎么写的,可以参考一下

5.将apple-app-site-association文件上传到服务器的.well-known文件夹下面。

6.验证文件是否合格

苹果验证网站
域名+“apple-app-site-association”进行验证(有时候这里校验也不是很准确)
https://www.icarusli.com/apple-app-site-association

7.测试一下通用链接是否生效。

WechatIMG21.jpeg

如果出现下面第二项就成功了。

8.后续和APP的交互

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    if ([userActivity.activityType isEqualToString: NSUserActivityTypeBrowsingWeb]) {
        NSURL *url = userActivity.webpageURL;
    }
    return YES;
}

利用这个代理,能够捕捉通过通用链接进入APP的时机,以及通用链接上面附带的信息。

通用链接实际上还是比较好实现的,看步骤都不难,如果能注意到我最开始说的两个问题就没什么好说的了,其他的就是按部就班。

文章demo

既然说到了分享,下一篇文章会讲讲我们APP的分享之后的交互(进入到APP之后怎么进行页面跳转)。

主要问题是当从浏览器进入APP之后,触发APPDelegate的时候,TabbarController还没有创建,这时候推页面肯定是推不出来的。

上一篇下一篇

猜你喜欢

热点阅读