这一周的开发的邀请分红系统,差不多也完善到了70%的成度,正式上了线,投入了给用户使用,虽然还有一部分未完善进来,但还是做一次简单的复盘,从技术和用户体验上说起。
目标
为什么要做邀请?,还不是为了拉新、留存这两兄弟,前者可以为我们的产品引入更多的新用户,灌入更多的活水,产生更多的优质内容(...目前内容这一块暂时被砍掉了),实现更高的business value,后者可以驱动产品内核增长,改善产品体验,提高DAU指标,实现正向增长的价值。
同时引入分红机制,就是为了更好的激励老用户,通过个人渠道去拉取更多新用户进来,利用分红机制来让自己躺着也可以赚钱。
如何设计?
基于邀请的设计有很多种方案,邀请H5邀请链接、微信分享小程序注册、邀请码机制,之前的两种方案我们都尝试过了,但是转化效果最终不太理想,最终我们尝试了邀请码机制,此邀请码非彼邀请码,我们采取了淘口令类似的机制,新用户通过复制老用户的邀请码,即可完成自动绑定。整个效果图如下:
相比之前H5邀请链接更有效的缩短了转化路径,新用户复制邀请码便可直接与老用户建立师徒关系。
技术实现
明白了需求流程,开始从技术着手设计.
由于是邀请口令机制,所以新用户一定是已经在APP中存在用户身份了,我们只需要设计一张表,来建立邀请人与被邀请人的关系,先建立一张Invitations表.
Schema::create('invitations', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedInteger('user_id')->index()->comment('邀请人用户ID');
$table->unsignedInteger('be_inviter_id')->index()->comment('被邀请人ID');
$table->timestamp('invited_in')->nullable()->comment('验证成功后邀请时间');
$table->timestamps();
});
邀请关系表建立完成后,就需要给每位用户分配一个邀请码(唯一标识),可以生成uuid的方式生成一个唯一的邀请码,也可以直接根据用户的身份ID来推算出一个邀请码,最简单的方式就是利用base64来生成一个,编码和解码都比较快,而且不占用实体储存空间。
public static function encode($id)
{
return base64_encode($id);
}
public static function decode($code)
{
return base64_decode($code);
}
邀请码生成后,便需要提供一个接口给客户端进行调用解码验证的逻辑,整个逻辑就使用伪代码来实现.
$inviterCode = $request->get('inviter_code);
//验证邀请码合法 && 抛出异常提示
$this->invidatedInviterCode($inviterCode);
//解码
$inviterId = Invitation::decode($inviterCode);
//验证用户真实性...
//绑定邀请...
//触发相应奖励
这样,口令邀请系统就实现完了,下面开始来完善分红。
整个分红的处理流程如下:
当用户触发各种操作行为的时候,如浏览视频、打卡、点赞就会通过一个钩子来触发分红逻辑,这个触发就是要在每个操作被创建后触发,我们可以通过观察者模式或者监听器来实现,在Laravel项目我们使用的是观察者模式,整个伪代码逻辑如下。
public function created(Video $video)
{
$inviter = $user->myInviter;
if(!is_null($inviter)){
$inviterWallet = $inviter->wallet;
//计算视频收益
$reward = $this->computeReawrd($video);
//发放奖励
inviterWallet->makeIncome($reward,'视频浏览分红');
}
}
最后就实现了我们邀请分红逻辑的编写,当然面对实际情况中,还存在更多更复杂的处理流程,但是基本思路如下,包括更多的二三级邀请奖励业务逻辑也是如此。
用户体验
相对之前的h5链接和微信小程序都属于跳出的方式,在这个过程中很有可能无法进行直接转化,而且可以从容应对风险机制,尤其是微信、QQ的封锁,链接被封杀几率很大无法跳转,而文本内容可以通过服务端随时更换,大家只需复制打开APP即可完成绑定,操作性也比网页上填写手机号码要方便很多。
思路延伸
虽然基本的开发工作完成的差不多了,但是还有一些未完善下去,如下:
- 数据埋点(邀请触发次数,邀请页面查看次数、分红次数):数据越细化越能方便后溪整体分析
- 添加不确定因素,更诱人的奖励条件,邀请用户有几率获得5、10、20元现金红包.
- 邀请排行榜,只有看见有人成功吃到了螃蟹,才会有更多的用户,尝试追随。
在邀请这个功能上,如果限制太多,就会降低用户参与积极性,如果限制过少,则容易产生漏洞,在这中间还是得去产生一个平衡,至于把控到什么程度,还需要日后进一步的继续探知。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。