从零做微信小程序(13):推广码生成,从小程序码到保存相册

15次阅读
没有评论

推广码不是生成一张图片就结束了。真正有价值的是:用户扫码进入小程序后,系统知道他从哪里来,并且保存图片到相册时不越过隐私授权边界。这篇把生成、绑定和保存串起来。

lifetruth.top

一、推广码的核心是来源关系

小程序码是带参数的入口,人话说就是“用户扫码时把一段来源信息带进小程序”。图片只是载体,真正要记录的是邀请人、被邀请人和首次进入时间。

如果只生成二维码,不保存扫码关系,后面无法判断邀请效果。第一版先记录一次可信绑定,不要一开始就设计复杂的多级奖励。

先记录来源,再讨论奖励。

推广关系也要符合平台规则,不要把普通分享包装成强制拉人或诱导传播。

二、云函数生成小程序码

云函数调用 `wxacode.getUnlimited` 生成小程序码,从当前用户身份得到邀请人 ID,把短参数放进 `scene`,再把图片保存到云存储。

`scene` 不要直接放手机号、微信号等敏感信息。它只保存短 ID 或随机码,真实关系留在数据库。

const scene = createInviteCode(inviterId);
const code = await wxacode.getUnlimited({
  scene, page: 'pages/index/index'
});
return saveToCloud(code, scene);

接口有参数长度、页面路径和调用频率限制,生成失败时要明确提示,不能拿空白图片显示成功。

三、扫码只在第一次绑定

用户扫码进入后,服务端解析 `scene`,确认邀请人不是自己,再检查当前用户是否已有来源。已经绑定过的用户不要因为再次扫码覆盖原邀请人。

如果用户尚未登录,可以先保存临时来源,登录后再绑定。匿名状态下不要直接计算有效邀请,避免重复计数。

绑定记录至少保存邀请人、被邀请人、来源码、首次进入时间和状态。

四、扫码和奖励是两件事

扫码只能说明用户进入过,不能证明他完成注册、发布帖子或购买会员。奖励条件应拆成“已扫码、已注册、已完成首笔订单”,每一步都可追溯。

同一种奖励对同一个被邀请人只能发一次。奖励记录要做幂等,不能靠页面按钮避免重复发放。

五、保存相册要配合隐私授权

调用 `wx.saveImageToPhotosAlbum` 涉及保存图片到用户设备。页面应说明用途,用户主动点击后再请求系统授权;拒绝时不循环弹窗,也不要影响无关功能。

wx.saveImageToPhotosAlbum({
  filePath,
  success: () => showToast('已保存'),
  fail: () => showToast('未获得相册权限')
});

如果图片来自云存储,要先下载到本地临时路径。第 4 篇已经讲过隐私协议和授权时机,这里必须保持协议、页面和审核说明一致。

保存图片的权限,不能被推广奖励绑架。

写在最后

推广码真正要解决的是来源追踪,而不是做一张漂亮图片。把扫码、绑定、奖励和保存相册拆开,既方便排错,也不会把隐私授权和增长目标混成一个按钮。

如果你接下来要做推广功能,先画一条时间线:扫码、登录、绑定、奖励和拒绝授权后分别发生什么。

你更看重推广码的分享数量,还是能被验证的有效转化?

正文完
 0
评论(没有评论)