跳到主要内容
版本:v3

内嵌动态开发指南

本文介绍如何在游戏中加入 TapTap 内嵌动态。使用内嵌动态功能需依赖 TapTap 登录,需要导入TapMoment 模块。

SDK 获取

信息

假设你已经在 快速开始 部分完成了 SDK 初始化,可以通过 下载 获得 TapSDK,添加 TapMoment 模块:

"dependencies":{
...
// 内嵌动态
"com.taptap.tds.moment":"https://github.com/TapTap/TapMoment-Unity.git#3.16.1",
}

设置回调

设置回调以获取动态的状态变化。

TapMoment.SetCallback((code, msg) => {
Debug.Log(code + "---" + msg);
});

回调方法中 code 表示事件类型,现支持的回调类型如下:

回调回调值说明
CALLBACK_CODE_PUBLISH_SUCCESS10000动态发布成功
CALLBACK_CODE_PUBLISH_FAIL10100动态发布失败
CALLBACK_CODE_PUBLISH_CANCEL10200关闭动态发布页面
CALLBACK_CODE_GET_NOTICE_SUCCESS20000获取新消息成功
CALLBACK_CODE_GET_NOTICE_FAIL20100获取新消息失败
CALLBACK_CODE_MOMENT_APPEAR30000动态页面打开
CALLBACK_CODE_MOMENT_DISAPPEAR30100动态页面关闭
CALLBACK_CODE_CLOSE_CANCEL50000取消关闭所有动态界面(弹框点击取消按钮)
CALLBACK_CODE_CLOSE_CONFIRM50100确认关闭所有动态界面(弹框点击确认按钮)
CALLBACK_CODE_LOGIN_SUCCESS60000动态页面内登录成功
CALLBACK_CODE_SCENE_EVENT70000场景化入口回调

获取新消息

定时调用获取消息通知的接口,有新信息时可以在 TapTap 动态入口显示小红点,提醒玩家查看新动态。

TapMoment.FetchNotification();

获取消息通知的结果会在本文刚开始设置的回调中返回,codeCALLBACK_CODE_GET_NOTICE_SUCCESS20000)表示获取成功,CALLBACK_CODE_GET_NOTICE_FAIL20100)表示获取失败。 获取成功时,msg 为新消息数量,0 表示没有新消息。

提示

为了方便玩家查看好友动态、游戏公告等,我们建议将 TapTap 动态入口放在显眼的位置,每分钟调用 1 次获取消息通知的接口。

获取消息通知时,如果没有新消息(msg0),那么游戏需要清除界面上的小红点。 同样,打开 TapTap 动态页面后,游戏也需要清除界面上的小红点。

显示动态页面

在游戏中显示 TapTap 动态页面,在这个页面,玩家不仅可以查看动态,还能发布新动态。

TapMoment.Open(Orientation.ORIENTATION_LANDSCAPE);
备注

打开动态页面时,请先屏蔽游戏自身的声音,以免干扰动态内的视频声音。

如需要动态能支持横竖屏随设备自动旋转,需要游戏自身能支持横竖屏。

如前所述,打开动态页面后别忘了清除动态页面入口处的小红点。

动态页面的背景图可以配置,步骤如下图所示。 背景图需要人工审核后才能生效,请预留充足的时间。

场景化入口

开发者可以结合游戏场景绘制入口,玩家打开入口跳转到指定的页面。使用前需要在开发者中心后台完成场景化入口配置

var sceneDic = new Dictionary<string, object>() { { TapMomentConstants.TapMomentPageShortCutKey, sceneId } };
// sceneId 为开发者中心后台创建场景化入口后生成的「入口 ID」
TapMoment.DirectlyOpen(Orientation.ORIENTATION_DEFAULT, TapMomentConstants.TapMomentPageShortCut, sceneDic);

参数说明

参数说明
orientation打开方向
page固定为 TapMomentConstants.TapMomentPageShortCut
Dictionary其中 TapMomentConstants.TapMomentPageShortCutKey 固定,第三个参数为需要跳转的页面 id

场景化入口回调格式说明

SDK 回调结构

字段名值类型required说明
sceneId字符串场景化入口 ID
eventType字符串枚举的事件类型,如 VIEW,FORWARD,VOTE 等
eventPayload字符串根据类型自定义的 JSON 字符串
timestamp整数unix 时间戳,ms

事件类型

eventTypeeventPayload (未序列化)说明
READY{}已成功落地,将在 dom 挂载时触发(获取数据之前)
REPOST{}转发
VOTE{ isCancel: boolean }点赞(含是否取消),仅帖子本身
FOLLOW{ isCancel: boolean }关注(含是否取消),仅帖子本身
COMMENT{}评论,仅帖子本身

关闭动态页面

玩家可以在动态页面退出。 但在特定场景下,游戏可能需要主动关闭动态页面。

比如,玩家排位等待结束,准备进入对局时提示玩家关闭动态页面,玩家确认后关闭。

TapMoment.Close("提示", "匹配成功,进入游戏");

用户的选择会通过回调返回:

  • CALLBACK_CODE_CLOSE_CANCEL(50000),表示玩家点了「取消」,选择不关闭动态页面。
  • CALLBACK_CODE_CLOSE_CONFIRM(50100),表示玩家点了「确认」,选择关闭动态页面。

如果需要直接关闭动态窗口,不弹出二次确认框:

TapMoment.Close();

一键发布

信息

这是可选功能,请根据项目需求决定是否在游戏中加入这一功能。

我们推荐游戏让玩家直接在动态页面发布新动态。 不过,SDK 也提供了发布图文动态的 API,以支持「一键发动态」等需求。 图文动态包括单张或多张图片及相应的文字内容。

string content = "我是描述";
string[] images = {"imgpath01","imgpath02","imgpath03"};
TapMoment.Publish(Orientation.ORIENTATION_LANDSCAPE, images, content);
信息

玩家在动态页面可以发布图文动态和视频动态。 「一键发布」只支持发布图文动态。

国际化

内嵌动态支持设置语言:

TapCommon.SetLanguage(TapLanguage.AUTO);

支持如下语言:

namespace TapTap.Common
{
public enum TapLanguage
{
AUTO = 0, // 自动
ZH_HANS = 1, // 简体中文
EN = 2, // 英文
ZH_HANT = 3, // 繁体中文
JA = 4, // 日文
KO = 5, // 韩文
TH = 6, // 泰文
ID = 7, // 印尼语
}
}

「自动」会尝试根据系统语言设置语言,如果系统语言不在上述支持的语言之中,那么会根据 SDK 初始化时配置的区域设置语言。 区域为中国大陆时会设置为简体中文,否则会设置为英文。

单纯的内嵌动态初始化

这里 SDK 获取及初始化,仅供使用 单纯的 TapTap 登录 的开发者参考。

  1. 请先 下载 TapSDK,并添加相关依赖。内嵌动态功能依赖 TapLoginTapCommonTapMoment 模块。

TapSDK Unity v3.7.1 及更高版本还需要添加 com.leancloud.storage 模块。Android SDK 及 iOS SDK 不需要额外增加依赖。

"dependencies":{
"com.taptap.tds.login":"https://github.com/TapTap/TapLogin-Unity.git#3.16.1",
"com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#3.16.1",
"com.taptap.tds.moment":"https://github.com/TapTap/TapMoment-Unity.git#3.16.1",
"com.leancloud.storage": "https://github.com/leancloud/csharp-sdk-upm.git#storage-0.10.18",
}
  1. 请确认完成了 单纯 TapTap 登录的初始化

  2. 完成内嵌动态功能的初始化,示例如下:

// 适用于中国大陆
TapMoment.Init(string clientID);

// 适用于其他国家或地区 isCN 为 true 表示中国大陆,false 表示其他国家或地区
TapMoment.Init(string clientID, boolean isCN);

参数说明

参数描述
clientIDTapTap 开发者中心对应游戏的 Client ID。
  1. 使用本篇文档中提到的其他接口。