值得做的事情就是值得做对的事情。
前言
众所周知,App在推广拉新的时候,会设置拉新奖励,每成功邀请注册一位新用户,会获得一定的现金奖励。这不,我们也要做这种功能,故事就这么发生了。
正文
这种功能最开始是在注册的时候填写邀请码,完成注册后新用户和老用户数据绑定。
目前主流的方式是无邀请码注册,用户点击分享链接后,直接打开App(没有安装直接跳转到App Store
,下载完后打开App)注册就可实现数据绑定。
当然,我们也是采用后者的方式来实现。
无邀请码拉新国内的都好多SDK,一搜能让你挑花眼。我们的App主要面向是海外市场,所以SDK我们选用AppsFlyer
里面的OneLink
。
接入条件
1、已经接入过
AppsFlyer SDk
。
2、有AppsFlyer
后台管理账号,且必须有OneLink
模板的添加/修改权限。
开始对接
-
AppsFlyer后台管理配置
1、在管理后台首页,找到【互动】-> 【OneLink管理】,如图1:
2、点击功能图标按钮,选择添加OneLink
模版,模版添加后移除比较麻烦,建议认真操作。如图2:
3、填写事项介绍
-
模版名字:随意名字
- 子域名:这个很重要,目前iOS基本是用
Universal Link
(通用链接)来实现拉起App功能,这个子域名就是Universal Link
。
- 若用户未安装应用,没啥说的,直接跳转
App Store
。
- 若用户已安装应用,那就直接拉起App,要使用
Universal Link
,URL scheme
有点小落后了。
人家解释的很清楚,OneLink
会管理app-site-association
文件,团队ID在开发者账号
上可以查看。
填写完成之后直接创建模版。
4、模版创建完成后,需要创建链接,这个链接就是用户点击用来跳转的。
我们用的是自定义的,其他的估计也可以,可以自己试下,这个创建后可以删除,操作比较容易。
如果模版填写没有问题的话,点击创建后里面一直继续就行了,基本不用编写信息。
创建完成后会有这样的短链接:
把短连接给后端小伙伴就行了,到此
OneLink
管理后台已经操作完毕,剩下的就是原生的工作了。
-
原生项目配置
1、在项目中的Signing & Capabiilties
中 的 Associated Domains
添加刚才图4中配置的子域名:
2、在
AppDelegate
中设置deepLinkDelegate
AppsFlyerLib.shared().deepLinkDelegate = self
实现代理
extension AppDelegate {
func didResolveDeepLink(_ result: DeepLinkResult) {
XXPrint(">>>AppsFlyer DeepLinkResult:\(String(describing: result.deepLink?.deeplinkValue))")
if let code = result.deepLink?.deeplinkValue {
deeplinkValue = code
}
}
}
该代理会在在每次打开App的时候代用,可以和后端约定好,里面有很多默认字段,可以和后端约定好用哪个字段来标识邀请码
我们用的是
deeplinkValue
,约定好之后,那被邀请用户点击的链接就应该是:
短链?deep_link_value=邀请码
至此,所有开发的工作已经完成,测试去吧!!!
如果看着这就离开的Coder,放心,你还会回来的~~
大坑
生成好的邀请链接不要在Safari中打开,一定要在备忘录中,切记切记。原因是
OneLink
在海外市场好用,在国内不太好使,GitHub上有相应的问题。在模拟没有安装应用的时候,目前只有2种情况能拿到邀请码:
1、点击链接后,然后联机安装。
2、点击链接后,通过爱思助手
安装。
3、一定要科学上网
~!
总结
其实东西不多,当时对接的时候Safari
一直调不起App,就试了备忘录
,唉~跳转了。然后就一直纳闷,浏览器为啥不行。加上通用链接
项目配置本来就很简单,然后就想着是OneLink
后台配置问题,就开始各种修改OneLink
管理后台配置,然后一行一行的看人家文档,最后还是没有头绪,白白浪费两天时间。
后台在iOS开发群里面有位好大哥回复说,国内就不行,只能用备忘录,如果备忘录测试没有问题,那上线也就没有问题。
这。。。
后记
还是那句话,开发中如果一个问题卡了一天就赶紧求助。