为了账号安全,请及时绑定邮箱和手机立即绑定

如何生成邀请码?让你不再为此心烦!

标签:
Sass/Less

类似“APP  邀请注册有奖”这类带有邀请机制的活动,是  APP  的重要推广手段之一,在百度以“APP  邀请注册有奖”为关键字搜索,可以搜索到了近  600  多万条结果。所以如何生成邀请码也困扰着一些人,今天我们就来谈谈如何生成邀请码。

首先我认为邀请码需要有以下特性:

1、唯一性,不能出现两个场景下生成一样的邀请码。

2、不规律性,至少在字面上不能猜出规律来。

3、高效性,生成邀请码的算法不能太过复杂,或者太消耗性能。

思路:

理论上用时间戳生成的数字串基本上是唯一的,如果经过一定规则的打乱顺序,然后进行字母映射的话,字面上的规律还是不怎么可能直接看出来的。但是时间戳有一个不好的地方,就是长度太长了,当前我想要使用的场景下,邀请码推荐是生成6位的,6位用完了才会去使用更长的。此外,对于长度短的随机算法,出现冲突,去重的过程不管从空间上还是时间上去解决都一定程度上消耗性能。

所以,我希望找到一个算法,能每次都直接生成长度优先在6位,而且唯一的邀请码。

当然,凭空直接生成邀请码肯定会冲突,生成邀请码这里可以输入一个唯一的依据。比如说,我使用了当前是第几个邀请码。

这样就类似于,y=f(x),输入的x是整数序列1、2、3、4......,输出的y是一段优先为6位的邀请码。但是f函数的映射不是事先生成好的,这样的话会占空间,这里希望是在线生成。

步骤:

网上找了一些很好的混淆规律的点,比如:数字转36进制包含字母的串(然后把36进制中映射的字母和数字顺序打乱)、数字顺序按照一定规则打乱等。于是我按照了以下步骤生成邀请码。

步骤一(打乱数字顺序):首先输入的序列x是唯一的,假设我的邀请码最短长度MIN_LENGTH是6,那么我先把x转成长度至少为6的数字串,不足6位的高位补0。然后,对低6位按照一定规则进行打乱,比如固定的交换第4位和第5位,然后交换第1位和第3位等。让再次生成的数字串不是连续的。(当然此处的打乱长度可以不一定是6位,但是邀请码是6位的话,数字串6位长度不会超过邀请码的长度)

步骤二(32进制乱序编码):由步骤一生成的乱序数字串进行32进制乱序编码,为什么选取32进制?因为保留了a、b、c、d四个字母在后续步骤中做随机补全。

步骤三(随机补全):因为步骤二保留了a、b、c、d四个关键字母,而且生成的字符串s不一定达到了MIN_LENGTH长度6。那么就用关键字母补全剩余的位数,而且是随机选取补全到字符串中的随机位置。最终生成长度优先为6位的邀请码。(后续x越大的时候,邀请码会超过6位,但是基本上高位可能会基本上某段区间是一样的,不过规律还是比较不明显的)

 

采用  Shareinstall  的方案,可以把用户邀请码参数直接“安装”到  APP  中,免得用户再输入邀请码,有奖邀请注册的活动在用户不知不觉间就能够有效开展下去。

shareinstall  的技术原理是让用户在安装  APP  时,自动将邀请码传递给用户,用户在打开应用后,通过后台处理邀请码,来实现免填邀请码的安装。

:“APP  邀请注册有奖”这类带有邀请机制的活动,是  APP  的重要推广手段之一。但填写邀请码,一直是用户非常厌烦的操作,甚至会导致用户的流失,跳过这个步骤,能为用户带来的极大的方便,提高了用户体验。



点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消