为了让小游戏获得社交属性,我们曾介绍过如何利用开放数据域为小游戏添加好友排行榜的功能。现在,小游戏有更多社交玩法了。
早前,微信小游戏在关系链数据能力的基础上,增加互动型托管数据,提供关系链互动能力,实现微信好友之间在小游戏内部的互动玩法。而定向分享则实现玩家在游戏内互动的同时,将小游戏定向分享给同玩好友以及可能感兴趣的非玩家好友。
利用关系链互动能力和定向分享能力,能实现以下场景:
1. 无需跳出游戏界面即可分享游戏
之前,用户要分享小游戏时,需要跳转到聊天列表,然后选择好友或群,再进行分享。这样的“三步走”让不少用户觉得麻烦。现在,有了定向分享能力,用户要点击分享按钮,无需跳出游戏界面,即可向好友“炫耀”战绩、邀请开黑、请求帮助等等。
并且,定向分享支持50个自定义场景值,这意味着,开发者可以针对不同场景定制分享文案,让用户分享变得更加省时省力。
2. 好友之间互赠游戏道具、互相点赞
你还记得那些年我们在QQ空间玩过的农场吗?QQ好友之间除了偷菜之外,还能够互相赠送牧草和金币,在游戏上体会到“相爱相杀”的滋味。现在,开发者可以运用关系链互动能力,实现好友之间互相点赞和赠送游戏道具。
发起互动后,还可以结合定向分享能力,把互动结果告诉好友,让用户在小游戏里继续增进彼此在现实中的友情。
3. 邀请未注册好友加入游戏,并获得奖励
在用户发起定向分享时,开发者可以结合关系链互动能力,通过开放数据域获得可能对游戏感兴趣的未注册好友名单(每次调用最多可获得5个好友)。用户便能直接邀请这些好友成为游戏新玩家,让分享不再成为纠结的事。
而且,定向分享还支持返回好友互动成功的回调结果,可对发起互动的用户发放道具奖励,激励玩家进行良性互动。例如, A 向C 分享 邀请加入游戏。C 进入游戏后,获得游戏道具奖励
那么,实现这些玩法的逻辑是怎样的呢?
为了让开发者获取关系链数据,同时避免被恶意使用,微信设计了开放数据域,一个封闭、独立的 JavaScript 作用域。小游戏入口是 game.js ,运行在主域;而开放数据域是需要在 game.json 中添加配置项 openDataContext 指定开放数据域的代码目录进行开启。
开放数据域与小游戏主域相互隔离,代码不能相互 require。开发者可以将玩家数据(等级、战绩等)托管到云端,开放数据域与托管数据之间可以自由读写,并且可以获取关系链数据。关于关系链数据和开放数据域,详细可参考文档:
https://developers.weixin.qq.com/minigame/dev/guide/open-ability/open-data.html
在开放关系链数据能力的基础上,新增互动性托管数据,提供关系链互动能力。关系链互动数据可以从小游戏主域中读取,并通过JSServer进行数据安全性校验。详细可参考文档:
https://developers.weixin.qq.com/minigame/dev/guide/open-ability/interactive-data.html
微信提供以下前端接口读写关系链互动数据:
- wx.getUserInteractiveStorage:读取当前用户关系链互动数
- wx.modifyFriendInteractiveStorage:修改当前用户好友的关系链互动数据
以上面提到的赠送道具给好友为例,提供以下参考代码:
wx.modifyFriendInteractiveStorage({
key: '1',
opNum: 1,
operation: 'add',
toUser: '', // 好友的 openId
title: '送你 10 个金币,赶快打开游戏看看吧', // 2.9.0 支持
imageUrl: 'image/xxx' // 2.9.0 支持
})
在定向分享方面,微信提供以下接口:
- wx.shareMessageToFriend(Object object):给指定的好友分享游戏信息
- wx.setMessageToFriendQuery:主域设置定向分享参数
P.S.我们最近建了个WeGeek技术交流群,除了技术交流之外,群内定期发布官方小程序云开发课程。欢迎小程序开发同好者进群交流,调戏勾搭群里的云开发大神~扫码即可获取进群方式。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。