转载

iOS上如何实现邀请好友帮抢票功能?

近期,如何实现更加便捷的邀请好友帮抢票成为了各类抢票app拉新、促活的有效方案,而目前主流社交平台无非就是微信、微博、QQ,所以如何运用好这三个平台,合理规划分享内容与app相关联就显得尤为重要。

仔细思考后问题确定为如何通过分享一个链接给好友,好友点击后能够直接回到app去操作,确定好这一方案后就开始找市场上有没有已经成熟的解决方案,经过一些搜索,对比后找到下面这样一个demo,先给大家看一下QQ里的效果图:

iOS上如何实现邀请好友帮抢票功能?

看到这个demo之后就确定了这就是我们需要的解决方案,于是就开始研究这个东西是怎么实现的?又是一番疯狂搜索,从前端网页到客户端配合实现,发现这其中还是有很多技术实现和需要注意的地方。

OS客户端上使用的新技术Universal Link(下文简称 ul)。单是这个ul的实现就有很多条件的限制,具体的大家可以参考苹果官方对ul的说明:

https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html (如果不能放链接就改成自行谷歌Universal Link)

简单的可以总结为以下几点:

1.你需要有一个https的安全域名;

2.需要在该域名的指定目录下放一个可以直接访问的指定格式的文件;

3.需要iOS客户端的证书开启对应的功能并在客户端里配置好对应的URL。

下面将详细介绍一下所做的这些繁琐的配置都会用在什么阶段?有什么作用?

首先,我们来说一下这个https的域名,对于我们的app来说,这个域名要具有唯一性、安全性、灵活性等等,那么这些是什么意思呢?唯一性,可以理解为我们app的另一个身份标识,就像scheme一样,我们要确保一个特殊的scheme来打开我们的app,所以我们也要确定一个域名来打开我们的app。

而安全性就是要使用https安全协议,这一点很重要,如果你的域名不支持https,那么很有可能无法打开app。对于灵活性,这就是苹果的iOS系统处理的问题了,简单来说就是如果我们安装了app,那么这个域名打开的地址将会自动唤起我们的app,否则iOS系统会直接使用Safari打开对应的链接地址。除此之外,这个域名还可以做更多定制化的东西,这里不作赘述。

下面,我们来说一下这个指定格式的文件以及它应该存放的路径。我们先不说这个文件是干什么用,或者什么地方用,我们先来看一下这个文件是什么样的格式。

iOS上如何实现邀请好友帮抢票功能?

上面是苹果官方对这个文件定义的示例,可以看到这是一个json文件,但文件名只是’apple-app-site-association’不带任何后缀,也不用指定格式。

这里需要特别说明一下,这个文件里的’applinks’和其中的‘apps’务必保持与上图中一致,即使’apps’是一个空数组,也要让它就是个空数组!重点是’details’数组里的每一个字典,每一个字典对应上述域名下的一个路径,只有在这里写了的路径才能打开app,不过值得庆幸的是这里可以使用类似于正则的方式做匹配。说到这里我就要说一下上面那个demo对应的这个特殊文件里的内容了,详见下图:

iOS上如何实现邀请好友帮抢票功能?

可以看到其实demo使用的这个文件’details’里就只写了一个通配符的路径,那么这样的话也就是说app里配置的这个域名下面所有的路径都可以打开对应的app,我想他们是为每一个app分配了一个特殊的域名吧(纯属猜测,哈哈哈)。

现在这个指定格式的文件已经了解了,那么这个文件要放在哪里呢?从上面的苹果官方文档中我们知道,这个特殊的文件要放到上述https域名的根目录或者其名为’.well-known’这个特殊的子目录下,并且,重点是这个文件访问不能有任何的重定向操作,也就是说一定要通过‘https:///apple-app-site-association’或者‘https:///.well-known/apple-app-site-association’就能够直接访问到该文件。

最后,做好上面的准备工作之后下面就是客户端的配置了。首先证书的配置,这个没什么好说的,只要创建证书的时候打开对应的开关就好了。其次,需要在Xcode里的’Capabilities’里开启’Associated Domains’,并使用上述域名,按固定格式:’applinks:’配置好,最终示例截图如下:

iOS上如何实现邀请好友帮抢票功能?

好了,到这里为止,可以解释一下上面那个特殊文件是怎么使用的了,那么在我们开发app的时候,只要这里配置了对应的’domains’,iOS系统在安装app的时候app下载完成之后,开始安装之前,会做多一步操作,就是去访问这里配置的所有域名下面(包括其特殊的子路径)是否有上述特殊文件存在,如果有将会自动下载到app内,并将该特殊文件里申明的内容注册到iOS系统中,以便在iOS系统里访问对应域名的时候能够检测是否有对应的app存在并使用app打开。

那么这里就有两个坑要提醒大家了,第一,如果上面的特殊的文件使用了重定向,会导致即使客户端配置正确,那么也无法在下载安装app的时候正常获取该文件;第二,前面那个问题还是可以避免的,但是如果恰恰在你下载安装app的时候,用作ul的域名服务器抽风,导致ul文件获取失败,那么即使你的app运行一切正常,ul功能也无法使用,并且,坑爹的是这种情况没有补救措施,只能删掉重装,希望苹果将来能修复这个问题,给出补救策略吧。

经过了一段又一段挣扎之后,总算是大概搞清楚这个东西要怎么玩了,不过,不要高兴的太早,我有一个好消息和一个坏消息,你们要先听哪一个??好吧,那我就先说坏消息吧,最近,国内最大社交平台——微信,已经开始着手封堵ul了,从微信6.6.0版本开始所有ul全部失效,再也不能达到右上角那个图的效果了,心里真的是一万头草泥马奔腾而过。但是!!但是我还有好消息啊,经过我苦苦摸索,发现最开始提到的demo中以及很好的解决了这个问题,具体是什么样的呢?请看下图:

iOS上如何实现邀请好友帮抢票功能?

微信里增加了一个引导页面,引导用户如何打开app,这也是挺不错的应对方案,希望将来他们能有更好的方案,更好的场景拓展。

正文到此结束
Loading...