V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wegeekxzs
V2EX  ›  前端开发

开放数据域、关系链数据、定向分享,三大利器实现小游戏社交玩法

  •  
  •   wegeekxzs · 2019-11-26 17:23:37 +08:00 · 2761 次点击
    这是一个创建于 1828 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为了让小游戏获得社交属性,我们曾介绍过如何利用开放数据域为小游戏添加好友排行榜的功能。现在,小游戏有更多社交玩法了。

    早前,微信小游戏在关系链数据能力的基础上,增加互动型托管数据,提供关系链互动能力,实现微信好友之间在小游戏内部的互动玩法。而定向分享则实现玩家在游戏内互动的同时,将小游戏定向分享给同玩好友以及可能感兴趣的非玩家好友。

    利用关系链互动能力和定向分享能力,能实现以下场景:

    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 技术交流群,除了技术交流之外,群内定期发布官方小程序云开发课程。欢迎小程序开发同好者进群交流,调戏勾搭群里的云开发大神~扫码即可获取进群方式。 在这里插入图片描述

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5403 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 01:21 · PVG 09:21 · LAX 17:21 · JFK 20:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.