跳到主要内容
版本:v7

开发指南

准备工作

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

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

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

// ShareActivity.java

import com.xd.sdk.sharing.XDGSharing;
import com.xd.sdk.sharing.base.SharePlatformType;

// ...

private void checkAppInstalled() {
boolean isInstalled = XDGSharing.isAppInstalled(ShareActivity.this, SharePlatformType.TapTap);
}

开始分享

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

// ShareActivity.java

import com.xd.sdk.sharing.XDGSharing;
import com.xd.sdk.sharing.base.ISharePlatformParam;
import com.xd.sdk.sharing.callback.XDGShareCallback;

import org.jetbrains.annotations.NotNull;

// ...

private void share() {
ISharePlatformParam shareParam = null; // TODO,根据实际分享参数进行构造
XDGSharing.share(ShareActivity.this, shareParam, new XDGShareCallback() {
@Override
public void onSuccess() {
// 分享成功
}

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

@Override
public void onFailed(int code, @NotNull String message) {
// 分享失败
}
});
}

QQ 分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.qq.QQShareParam;

// ...

QQShareParam shareParam = QQShareParam.newBuilder()
.setSceneType(QQShareParam.QQScene.SESSION) // QQ 聊天窗
// .setSceneType(QQShareParam.QQScene.TIMELINE) // QQ 空间
.setContentText("我是分享文案")
.setImageUrl("我是分享本地图片绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.setLinkUrl("我是分享链接")
.setLinkTitle("我是分享标题")
.setLinkSummary("我是分享描述")
.setLinkThumbUri("我是本地图片绝对路径链接缩略图")
// .setLinkThumbData(thumbData)
.build();

微信分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.wx.WeChatShareParam;

// ...

WeChatShareParam shareParam = WeChatShareParam.newBuilder()
.setSceneType(WeChatShareParam.WeChatScene.SESSION)
// .setSceneType(WeChatShareParam.WeChatScene.TIMELINE)
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setLinkUrl("我是分享链接")
.setLinkTitle("我是分享链接的标题")
.setLinkSummary("我是分享链接的描述")
.setLinkThumbUri("我是本地图片绝对路径链接缩略图")
// .setLinkThumbData(thumbData)
.build();

微博分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.sina.WeiboShareParam;

// ...

WeiboShareParam shareParam = WeiboShareParam.newBuilder()
.setContentText("我是分享文案 #我是分享话题# #我是分享话题2# #Hashtag#")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.setSuperGroupName("超话名称")
.setSuperGroupSection("超话板块名称")
.setSuperGroupExtras("超话额外参数")
.build();

小红书分享

说明

  • 小红书支持单张图片或者单个视频的分享,同时可以附带标题和正文内容。
  • 小红书正文内容支持话题标签,可附加在 ContentText 中,使用 “#” 符号前缀,注意前后空格即可。
  • iOS 平台上,成功跳到小红书 App 即认为分享成功,即使跳出后可能被拒绝分享。

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.xhs.XhsShareParam;

// ...

XhsShareParam shareParam = XhsShareParam.newBuilder()
.setTitle("我是分享标题")
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.build();

抖音分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.douyin.DouYinShareParam;

// ...

DouYinShareParam shareParam = DouYinShareParam.newBuilder()
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.build();

TapTap(国内版)分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.taptap.TapTapShareParam;

// ...

TapTapShareParam shareParam = TapTapShareParam.newBuilder()
.setTitle("我是分享标题")
.setContentText("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.setAppId("Tap App Id")
.setGroupLabelId("Tap Group Label Id")
.setHashtagIds("Tap Hashtag Ids")
.setFailUrl("https://www.taptap.cn")
.build();

Facebook 分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.facebook.FacebookShareParam;

// ...

FacebookShareParam shareParam = FacebookShareParam.newBuilder()
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享本地视频绝对路径")
.setLinkUrl("我是分享链接")
.setLinkSummary("我是分享链接的描述")
.build();

Line 分享

说明

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

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.line.LineShareParam;

// ...

LineShareParam shareParam = LineShareParam.newBuilder()
.setContentText("我是分享文案")
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setLinkUrl("我是分享链接")
.build();

TikTok 分享

说明

  • TikTok 支持单张图片或者单个视频的分享。
  • iOS 平台上,支持 TikTok 分享必须增加 Associated Domains 配置,请在和平台确定具体参数后自行配置,否则无法从 TikTok 跳回游戏。
  • iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
  • iOS 平台上,除了 videoId 以外的图片视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.tiktok.TikTokShareParam;

// ...

TikTokShareParam shareParam = TikTokShareParam.newBuilder()
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享视频")
.build();

Instagram 分享

说明

  • Instagram 支持单张图片或者单个视频的分享。
  • iOS Instagram 分享的回调在成功拉起 Instagram 应用时就触发成功的回调,没有拉起则返回失败。
  • iOS 平台上,除了 videoId 以外的图片视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.ins.InstagramShareParam;

// ...

InstagramShareParam shareParam = InstagramShareParam.newBuilder()
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享视频")
.build();

快手分享

说明

  • 快手支持单张图片或者单个视频的分享。
  • 支持快手和快手极速版。
  • iOS 平台上,成功跳到快手 App 即认为分享成功,即使跳出后可能被快手拒绝分享。

示例代码

// ShareActivity.java

import com.xd.sdk.sharing.impl.kwai.KuaiShouShareParam;

// ...

KuaiShouShareParam shareParam = KuaiShouShareParam.newBuilder()
.setImageUrl("我是分享图片的本地绝对路径")
// .setImageData(imageData)
.setVideoUrl("我是分享视频")
.build();