跳到主要内容

开发指南

准备工作

接入前请确认您已经联系平台同事申请了需要的参数,并将其填写在 XDConfig.json 文件中。

对应平台的接入准备请参考 接入细节

检查是否安装对应平台的 APP

//SharePlatformType.QQ(0)
//SharePlatformType.WeChat(1)
//SharePlatformType.Weibo(2)
//SharePlatformType.DouYin(3)
//SharePlatformType.XHS(4)
//SharePlatformType.Facebook(5)
//SharePlatformType.Twitter(6)
//SharePlatformType.Line(7)
//SharePlatformType.TapTap(8)
boolean isAppInstalled = XDGSharing.isAppInstalled(GameActivity.this, SharePlatformType.QQ);

开始分享

分享模块只有一个统一的接口,不同平台的差异在于传入不同类型的参数。

XDGSharing.share(GameActivity.this, shareParam, new XDGShareCallback() {
/**
* 分享成功
*/
@Override
public void onSuccess() {

}

/**
* 分享取消
*/
@Override
public void onCancel() {

}

/**
* 分享失败
* @param code ShareConstants.Code.CODE_PARAM_INVALID(-1): 分享参数无效
* ShareConstants.Code.CODE_TARGET_PLATFORM_NOT_INSTALL(-3): 目标平台未安装
* ShareConstants.Code.CODE_SHARE_FAILED(-4): 通用分享错误,具体原因以 message 提示为准
* @param message 分享失败原因
*/
@Override
public void onFailed(int code, @NonNull String message) {

}
});

QQ 分享

说明

  • QQ 支持单张图片、单个视频、网页链接或者纯文本的分享,同时只能分享一种数据,SDK 会以图片 > 视频 > 链接 > 纯文本的优先顺序进行分享。
  • QQ 聊天窗分享链接,当分享对象为我的电脑时,只会显示网页链接,不会展示卡片。
  • iOS 平台上,QQ 分享的回调在成功拉起 QQ 应用时就触发成功的回调,没有拉起则返回失败。
  • iOS 平台上,除了 videoId 以外的视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。
  • Android 平台上,QQ 聊天窗仅支持「图片分享」和「链接分享」;QQ 空间仅支持「链接分享」和「发表说说、视频、图片」,同时设置图片或视频时会自动过滤文字。
  • 6.17.3 和 6.19.0 (不包含 6.18.0)开始支持设置分享链接的缩略图设置,图片大小请不要超过 64k。

示例代码

QQShareParam shareParam = QQShareParam.newBuilder()
.setSceneType(QQShareParam.QQScene.SESSION) // QQ 聊天窗
// .setSceneType(QQShareParam.QQScene.TIMELINE) // QQ 空间
.setContentText("我是分享文案")
.setImageUrl("我是分享本地图片绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.setLinkUrl("我是分享链接") // 分享链接时 Url 和 Title 必填,summary 可选
.setLinkTitle("我是分享标题")
.setLinkSummary("我是分享描述")
.setLinkThumbUri("我是本地图片绝对路径链接缩略图") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setLinkThumbData(thumbData) // 分享链接缩略图字节数组数据。与 linkThumbUri 二选一
.build();

微信分享

说明

  • 微信支持单张图片、网页链接或者纯文本的分享,同时只能分享一种数据,SDK 会以图片 > 链接 > 纯文本的优先顺序进行分享。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
  • Android 平台上,用户在微信界面直接返回微信给到的是成功回调;分享过程中手动切回游戏 SDK 会给到「分享取消」的回调。
  • 6.17.3 和 6.19.0 (不包含 6.18.0)开始支持设置分享链接的缩略图设置,图片大小请不要超过 64k。

示例代码

WeChatShareParam shareParam = WeChatShareParam.newBuilder()
.setSceneType(WeChatShareParam.WeChatScene.SESSION) // 微信聊天窗
// .setSceneType(WeChatShareParam.WeChatScene.TIMELINE) // 微信朋友圈
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setLinkUrl("我是分享链接") // 分享链接时 Url 和 Title 必填,summary 可选
.setLinkTitle("我是分享链接的标题")
.setLinkSummary("我是分享链接的描述")
.setLinkThumbUri("我是本地图片绝对路径链接缩略图") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setLinkThumbData(thumbData) // 分享链接缩略图字节数组数据。与 linkThumbUri 二选一
.build();

微博分享

说明

  • 微博支持单张图片、单个视频和纯文本的分享,可以支持图片加文本或者视频加文本的分享,不能同时包含图片和视频。
  • 微博正文内容支持话题标签,可附加在 ContentText 中,与抖音、小红书不同的是需要在标签前后添加 “#” 符号。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
  • 6.20.0 开始支持设置超话参数,超话需要和微博官方申请开通,有需要请联系平台同事。

示例代码

WeiboShareParam shareParam = WeiboShareParam.newBuilder()
.setContentText("我是分享文案 #我是分享话题# #我是分享话题2# #Hashtag#")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.setSuperGroupName("超话名称") // 带超话时必填
.setSuperGroupSection("超话板块名称") // 可选
.setSuperGroupExtras("超话额外参数") // 可选
.build();

小红书分享

说明

  • 小红书支持单张图片或者单个视频的分享,同时可以附带标题和正文内容。
  • 小红书正文内容支持话题标签,可附加在 ContentText 中,使用 “#” 符号前缀,注意前后空格即可。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。

示例代码

XhsShareParam shareParam = XhsShareParam.newBuilder()
.setTitle("我是分享标题")
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.build();

抖音分享

说明

  • 抖音支持单张图片或者单个视频的分享,同时可以附带正文内容。
  • 抖音正文内容支持话题标签,可附加在 ContentText 中,使用 “#” 符号前缀,注意前后空格即可。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
  • iOS 平台上,除了 videoId 以外的图片视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。

示例代码

DouYinShareParam shareParam = DouYinShareParam.newBuilder()
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.build();

TapTap(国内版)分享

说明

  • TapTap 支持单张图片或文本的分享,多个数据可以一起分享到 TapTap
  • TapTap 分享支持绑定的游戏模块包括游戏ID、论坛标签ID、话题(普通话题、超话、hashtag)ID、内容&标题(可默认填写),关于前三者 ID 的具体内容请咨询平台同事。
  • TapTap 在应用未安装无法拉起分享时会打开外部浏览器进入游戏详情页,打开的页面可以进行替换,有需要替换请咨询平台同事。
  • iOS 平台上,分享实现依赖粘贴板内容,所以当系统询问是否允许从粘贴板复制内容,需要选择允许粘贴才能正常分享及回调

示例代码

TapTapShareParam shareParam = TapTapShareParam.newBuilder()
.setTitle("我是分享标题")
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.setAppId("Tap App Id") // 必选
.setGroupLabelId("Tap Group Label Id") // 可选
.setHashtagIds("Tap Hashtag Ids") // 可选。可多个,以逗号分割,eg: 1,2,3
.setFailUrl("https://www.taptap.cn") // 可选,用来替换未装 TapTap 时拉起的浏览器链接,默认为游戏详情页,如果需要修改请联系平台同事
.build();

Facebook 分享

说明

  • Facebook 支持单张图片、单个视频和网页链接的分享,同时只能分享一种数据,SDK 会以图片 > 视频 > 链接的优先顺序进行分享。
  • iOS 平台上不支持视频的分享。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。

示例代码

FacebookShareParam shareParam = FacebookShareParam.newBuilder()
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setVideoUrl("我是分享本地视频绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/cache/AndroidShare/img_share_test.mp4
.setLinkUrl("我是分享链接") // 分享链接时 Url 必填,summary 可选
.setLinkSummary("我是分享链接的描述") // 分享链接的描述,对应 Facebook ShareLinkContent 的 quote 参数
.build();

Twitter 分享

  • Twitter 支持单张图片、网页链接和纯文本的分享,图片优先级大于链接,链接和纯文本同时存在时会被一起分享出去。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。

说明

示例代码

TwitterShareParam shareParam = TwitterShareParam.newBuilder()
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setLinkUrl("我是分享链接") // 分享链接
.build();

Line 分享

说明

  • Line 支持单张图片、网页链接和纯文本的分享,图片优先级大于链接,链接和纯文本同时存在时会被一起分享出去。
  • iOS 平台上,Line 分享的回调在成功拉起 Line 应用时就触发成功的回调,没有拉起则返回失败。
  • Android 平台上,Line 分享必须有客户端才能分享。

示例代码

LineShareParam shareParam = LineShareParam.newBuilder()
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径") // eg: /storage/emulated/0/Android/data/com.tds.sdkdemopro/files/Pictures/AndroidShare/img_share_test.png
// .setImageData(imageData) // 分享图片字节数组数据。与 imageUrl 二选一
.setLinkUrl("我是分享链接") // 分享链接
.build();