开发指南
准备工作
接入前请确认您已经联系平台同事申请了需要的参数,并将其填写在 XDConfig.json 文件中。
对应平台的接入准备请参考 接入细节。
检查是否安装对应平台的 APP
- Android
- iOS
- Unity
- UE
//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);
#import <XDGCommonSDK/XDGSharing.h>
// XDGSharePlatformTypeQQ = 0,
// XDGSharePlatformTypeWeChat = 1,
// XDGSharePlatformTypeWeibo = 2,
// XDGSharePlatformTypeDouYin = 3,
// XDGSharePlatformTypeXHS = 4,
// XDGSharePlatformTypeFacebook = 5,
// XDGSharePlatformTypeTwitter = 6,
// XDGSharePlatformTypeLine = 7,
// XDGSharePlatformTypeTapTap = 8
if ([XDGSharing isAppInstalled:XDGSharePlatformTypeQQ]) {
// QQ 已安装
} else {
// QQ 未安装
}
// public enum XDGSharePlatformType {
// QQ = 0,
// WeChat = 1,
// Weibo = 2,
// DouYin = 3,
// XHS = 4,
// Facebook = 5,
// Twitter = 6,
// Line = 7,
// TapTap = 8
// }
bool isAppInstalled = XDGSharing.IsAppInstalled(XDGSharePlatformType.QQ);
#include "XDGShare.h"
enum class ESharePlatformType : uint8
{
QQ = 0,
WeChat = 1,
Weibo = 2,
DouYin = 3,
XHS = 4,
Facebook = 5,
Twitter = 6,
Line = 7,
TapTap = 8
};
if (FXDGSharing::IsAppInstalled(ESharePlatformType::QQ))
{
/** QQ 已安装 */
}
else
{
/** QQ 未安装 */
}
开始分享
分享模块只有一个统一的接口,不同平台的差异在于传入不同类型的参数。
- Android
- iOS
- Unity
- UE
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) {
}
});
[XDGSharing shareWithParam:shareParam completionHandler:^(NSError * _Nullable error, BOOL cancel) {
if (cancel) {
// 用户取消分享
} else if (error) {
// 分享失败
// code: -1 参数错误
// -2 未初始化
// -3 应用未安装
// -4 通用错误
NSLog(@"分享失败,code: %ld message: %@", error.code, error.localizedDescription);
} else {
// 分享成功
}
}];
XDGSharing.Share(shareParam, new XDGShareCallback {
OnSuccess = () => {
Debug.Log("分享成功");
},
OnFailed = (code, message) => {
Debug.Log("分享失败");
},
OnCancel = () => {
Debug.Log("分享取消");
}
});
FXDGSharing::Share(ShareParam,
FSimpleDelegate::CreateLambda([]()
{
/** 分享成功 */
}),
FSimpleDelegate::CreateLambda([]()
{
/** 分享取消 */
}),
FXDGError::FDelegate::CreateLambda([](const FXDGError& Error)
{
/** 分享失败 */
UE_LOG(LogTemp, Warning, TEXT("分享失败, code: %lld, message: %s"), Error.Code, *Error.Msg);
}));
QQ 分享
说明
- QQ 支持单张图片、单个视频、网页链接或者纯文本的分享,同时只能分享一种数据,SDK 会以图片 > 视频 > 链接 > 纯文本的优先顺序进行分享。
- QQ 聊天窗分享链接,当分享对象为我的电脑时,只会显示网页链接,不会展示卡片。
- iOS 平台上,QQ 分享的回调在成功拉起 QQ 应用时就触发成功的回调,没有拉起则返回失败。
- iOS 平台上,除了 videoId 以外的视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。
- Android 平台上,QQ 聊天窗仅支持「图片分享」和「链接分享」;QQ 空间仅支持「链接分享」和「发表说说、视频、图片」,同时设置图片或视频时会自动过滤文字。
- 6.17.3 和 6.19.0 (不包含 6.18.0)开始支持设置分享链接的缩略图设置,图片大小请不要超过 64k。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGQQShareParam *param = [XDGQQShareParam new];
param.sceneType = XDGShareSceneTypeSession; // 聊天窗口
// param.sceneType = XDGShareSceneTypeTimeline; // QQ 空间
param.contentText = @"纯文本内容";
param.linkUrl = @"网页链接"; // 分享链接时 Url 和 Title 必填,summary 可选
param.linkTitle = @"网页链接标题";
param.linkSummary = @"网页链接副标题";
param.linkThumbURI = @"图片在本地沙盒中的路径"; // v6.17.3 支持
// param.linkThumbData = thumbImageData; // 图片的 NSData 格式 v6.17.3 支持
param.videoId = @"视频在相册中的 assert local Identifier";
// param.videoUrl = @"视频在本地沙盒中的路径";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; // 图片的 NSData 格式
XDGQQShareParam shareParam = new XDGQQShareParam {
SceneType = XDGQQShareParam.Session, // 聊天窗口
// SceneType = XDGQQShareParam.Timeline, // QQ 空间
ContentText = @"纯文本内容",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), // 图片转换成 PNG 格式
LinkTitle = "网页链接标题",
LinkUrl = "网页链接",
LinkSummary = "网页链接副标题",
LinkThumbUri = "图片路径", // v6.17.3 支持
// LinkThumbData = thumbScreenshotTex?.EncodeToPNG(), // 图片转换成 PNG 格式 v6.17.3 支持
VideoUrl = "iOS 视频在相册中的 assert local Identifier;Android 本地视频绝对路径"
};
FSharePlatformParam_QQ Param;
Param.Scene = EShareScene_QQ::Session; // 聊天窗口
Param.Scene = EShareScene_QQ::Timeline; // QQ 空间
Param.Content = TEXT("我是分享文案");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.VideoUrl = TEXT("Android: 我是分享本地视频绝对路径, iOS: 视频在本地沙盒中的路径");
Param.LinkUrl = TEXT("我是分享链接"); // 分享链接时 Url 和 Title 必填,summary 可选
Param.LinkTitle = TEXT("我是分享链接标题"); // 只支持Session
Param.LinkSummary = TEXT("我是分享链接描述"); // 只支持Session
Param.LinkThumbURI = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径"); // 缩略图
Param.LinkThumbData = ImageBuffer; // 缩略图 与 LinkThumbURI 二选一
微信分享
说明
- 微信支持单张图片、网页链接或者纯文本的分享,同时只能分享一种数据,SDK 会以图片 > 链接 > 纯文本的优先顺序进行分享。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
- Android 平台上,用户在微信界面直接返回微信给到的是成功回调;分享过程中手动切回游戏 SDK 会给到「分享取消」的回调。
- 6.17.3 和 6.19.0 (不包含 6.18.0)开始支持设置分享链接的缩略图设置,图片大小请不要超过 64k。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGWeChatShareParam *param = [XDGWeChatShareParam new];
param.sceneType = XDGShareSceneTypeSession; // 聊天窗口
// param.sceneType = XDGShareSceneTypeTimeline; // 朋友圈
param.contentText = @"纯文本内容";
param.linkUrl = @"网页链接"; // 分享链接时 Url 和 Title 必填,summary 可选
param.linkTitle = @"网页链接标题";
param.linkSummary = @"网页链接副标题"; // 在分享到朋友圈时不会显示
param.linkThumbURI = @"图片在本地沙盒中的路径"; // v6.17.3 支持
// param.linkThumbData = thumbImageData; // 图片的 NSData 格式 v6.17.3 支持
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; // 图片的 NSData 格式
XDGWeChatShareParam shareParam = new XDGWeChatShareParam {
SceneType = XDGWeChatShareParam.Session, // 聊天窗口
// SceneType = XDGWeChatShareParam.Timeline, // 朋友圈
ContentText = "纯文本内容",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), // 图片转换成 PNG 格式
LinkTitle = "网页链接标题",
LinkUrl = "网页链接",
LinkSummary = "网页链接副标题",
LinkThumbUri = "图片路径", // v6.17.3 支持
// LinkThumbData = thumbScreenshotTex?.EncodeToPNG() // 图片转换成 PNG 格式 v6.17.3 支持
};
FSharePlatformParam_WeChat Param;
Param.Scene = EShareScene_WeChat::Session; // 聊天窗口
Param.Scene = EShareScene_WeChat::Timeline; // 朋友圈
Param.Content = TEXT("我是分享文案");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.LinkUrl = TEXT("我是分享链接");
Param.LinkTitle = TEXT("我是分享链接标题");
Param.LinkSummary = TEXT("我是分享链接描述"); // 只支持Session
Param.LinkThumbURI = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径"); // 缩略图
Param.LinkThumbData = ImageBuffer; // 缩略图 与 LinkThumbURI 二选一
微博分享
说明
- 微博支持单张图片、单个视频和纯文本的分享,可以支持图片加文本或者视频加文本的分享,不能同时包含图片和视频。
- 微博正文内容支持话题标签,可附加在 ContentText 中,与抖音、小红书不同的是需要在标签前后添加 “#” 符号。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
- 6.20.0 开始支持设置超话参数,超话需要和微博官方申请开通,有需要请联系平台同事。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGWeiboShareParam *param = [XDGWeiboShareParam new];
param.contentText = @"我是分享文案 #我是分享话题# #我是分享话题2# #Hashtag#";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
param.videoUrl = @"视频在本地沙盒中的路径";
param.superGroupName = @"超话名称"; // 需要带超话的话则必需
param.superGroupSection = @"超话板块名称"; // 可选
param.superGroupExtras = @"超话额外参数"; // 可选
XDGWeiboShareParam shareParam = new XDGWeiboShareParam {
ContentText = "我是分享文案 #我是分享话题# #我是分享话题2# #Hashtag#",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
VideoUrl = "视频路径",
SuperGroupName = "超话名称", // 需要带超话的话则必需
SuperGroupSection = "超话板块名称", // 可选
SuperGroupExtras = "超话额外参数" // 可选
};
FSharePlatformParam_Weibo Param;
Param.Content = TEXT("我是分享文案 #我是分享话题# #我是分享话题2# #Hashtag#");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.VideoUrl = TEXT("Android: 我是分享本地视频绝对路径, iOS: 视频在本地沙盒中的路径");
Param.SuperGroupName = TEXT("超话名称"); // 需要带超话的话则必需
Param.SuperGroupSection = TEXT("超话板块名称"); // 可选
Param.SuperGroupExtras = TEXT("超话额外参数"); // 可选
小红书分享
说明
- 小红书支持单张图片或者单个视频的分享,同时可以附带标题和正文内容。
- 小红书正文内容支持话题标签,可附加在 ContentText 中,使用 “#” 符号前缀,注意前后空格即可。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGXHSShareParam *param = [XDGXHSShareParam new];
param.title = @"标题";
param.contentText = @"我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag";
param.videoId = @"视频在相册中的 assert local Identifier";
// param.videoUrl = @"视频在本地沙盒中的路径";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
XDGXHSShareParam shareParam = new XDGXHSShareParam {
ContentText = "我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
Title = "标题",
VideoUrl = "iOS 视频在相册中的 assert local Identifier;Android 本地视频绝对路径",
};
FSharePlatformParam_XHS Param;
Param.Title = TEXT("我是分享标题");
Param.Content = TEXT("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.VideoUrl = TEXT("Android: 我是分享本地视频绝对路径, iOS: 视频在本地沙盒中的路径");
Param.VideoId = TEXT("iOS: 视频在相册中的 assert local Identifier");
抖音分享
说明
- 抖音支持单张图片或者单个视频的分享,同时可以附带正文内容。
- 抖音正文内容支持话题标签,可附加在 ContentText 中,使用 “#” 符号前缀,注意前后空格即可。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
- iOS 平台上,除了 videoId 以外的图片和视频资源会以游戏的身份请求相册的权限保存在相册中以完成分享流程,且不会主动删除,需要用户自行操作。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGDouYinShareParam *param = [XDGDouYinShareParam new];
param.contentText = @"我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag";
param.videoId = @"视频在相册中的 assert local Identifier";
// param.videoUrl = @"视频在本地沙盒中的路径";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
XDGDouYinShareParam shareParam = new XDGDouYinShareParam {
ContentText = "我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
VideoUrl = "iOS 视频在相册中的 assert local Identifier;Android 本地视频绝对路径",
};
FSharePlatformParam_DouYin Param;
Param.Content = TEXT("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.VideoUrl = TEXT("Android: 我是分享本地视频绝对路径, iOS: 视频在本地沙盒中的路径");
Param.VideoId = TEXT("iOS: 视频在相册中的 assert local Identifier");
TapTap(国内版)分享
说明
- TapTap 支持单张图片或文本的分享,多个数据可以一起分享到 TapTap
- TapTap 分享支持绑定的游戏模块包括游戏ID、论坛标签ID、话题(普通话题、超话、hashtag)ID、内容&标题(可默认填写),关于前三者 ID 的具体内容请咨询平台同事。
- TapTap 在应用未安装无法拉起分享时会打开外部浏览器进入游戏详情页,打开的页面可以进行替换,有需要替换请咨询平台同事。
- iOS 平台上,分享实现依赖粘贴板内容,所以当系统询问是否允许从粘贴板复制内容,需要选择允许粘贴才能正常分享及回调
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGTapTapShareParam *param = [XDGTapTapShareParam new];
param.appId = @"Tap App Id"; // 必须
param.groupLabelId = @"Tap group label Id"; // 可选
param.hashtagIds = @"Tap Hashtag Ids"; // 可选。可多个,以逗号分割,比如 1,2,3
param.title = @"我是分享标题"; // 可选
param.contentText = @"我是分享内容"; // 可选
param.imageUrl = @"图片在本地沙盒中的路径"; // 可选
// param.imageData = imageData; // 图片的 NSData 格式
param.linkUrl = @"https://www.taptap.cn"; // 可选,用来替换未装 TapTap 时拉起的浏览器链接,默认为游戏详情页,如果需要修改请联系平台同事
XDGTapTapShareParam shareParam = new XDGTapTapShareParam() {
AppId = "Tap App Id", // 必须
GroupLabelId = "Tap group label Id", // 可选
HashtagIds = "Tap Hashtag Ids", // 可选。可多个,以逗号分割,比如 1,2,3
Title = "我是分享标题", // 可选
ContentText = "我是分享内容", // 可选
ImageUrl = "图片路径", // 可选
// ImageData = screenshotTex?.EncodeToPNG(), // 可选,图片 PNG 格式
FailUrl = "https://www.taptap.cn", // 可选,用来替换未装 TapTap 时拉起的浏览器链接,默认为游戏详情页,如果需要修改请联系平台同事
};
FSharePlatformParam_TapTap Param;
Param.Title = TEXT("我是分享标题"); // 可选
Param.Content = TEXT("我是分享文案 #我是分享话题 #我是分享话题2 #Hashtag"); // 可选
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径"); // 可选
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.AppId = TEXT("Tap App Id"); // 可选
Param.GroupLabelId = TEXT("游戏论坛的论坛标签 ID"); // 可选
Param.HashTagIds = TEXT("活动或者 hastTag ID, 逗号分割"); // 可选
Param.FailUrl = TEXT("https://www.taptap.cn"); // 可选,用来替换未装 TapTap 时拉起的浏览器链接,默认为游戏详情页,如果需要修改请联系平台同事
Facebook 分享
说明
- Facebook 支持单张图片、单个视频和网页链接的分享,同时只能分享一种数据,SDK 会以图片 > 视频 > 链接的优先顺序进行分享。
- iOS 平台上不支持视频的分享。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGFacebookShareParam *param = [XDGFacebookShareParam new];
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
param.linkUrl = @"网页链接"; // 分享链接时 Url 必填,summary 可选
param.linkSummary = @"网页链接副标题";
XDGFacebookShareParam shareParam = new XDGFacebookShareParam {
ContentText = contentInput.text,
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
LinkUrl = "网页链接",
LinkSummary = "网页链接副标题",
VideoUrl = "Android 本地视频绝对路径"
};
FSharePlatformParam_Facebook Param;
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.VideoUrl = TEXT("Android: 我是分享本地视频绝对路径");
Param.LinkUrl = TEXT("我是分享链接"); // 分享链接时 Url 必填,summary 可选
Param.LinkSummary = TEXT("我是分享链接描述");
Twitter 分享
- Twitter 支持单张图片、网页链接和纯文本的分享,图片优先级大于链接,链接和纯文本同时存在时会被一起分享出去。
- iOS 平台上,如果用户在分享后选择留在游戏外或者手动切换回游戏,SDK 不会有分享回调。
说明
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGTwitterShareParam *param = [XDGTwitterShareParam new];
param.contentText = @"纯文本内容";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
param.linkUrl = @"网页链接";
XDGTwitterShareParam shareParam = new XDGTwitterShareParam {
ContentText = "纯文本内容",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
LinkUrl = "网页链接",
};
FSharePlatformParam_Twitter Param;
Param.Content = TEXT("我是分享文案");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.LinkUrl = TEXT("我是分享链接");
Line 分享
说明
- Line 支持单张图片、网页链接和纯文本的分享,图片优先级大于链接,链接和纯文本同时存在时会被一起分享出去。
- iOS 平台上,Line 分享的回调在成功拉起 Line 应用时就触发成功的回调,没有拉起则返回失败。
- Android 平台上,Line 分享必须有客户端才能分享。
示例代码
- Android
- iOS
- Unity
- UE
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();
XDGLineShareParam *param = [XDGLineShareParam new];
param.contentText = @"纯文本内容";
param.imageUrl = @"图片在本地沙盒中的路径";
// param.imageData = imageData; 图片的 NSData 格式
param.linkUrl = @"网页链接";
XDGLineShareParam shareParam = new XDGLineShareParam {
ContentText = "纯文本内容",
ImageUrl = "图片路径",
// ImageData = screenshotTex?.EncodeToPNG(), 图片 PNG 格式
LinkUrl = "网页链接",
};
FSharePlatformParam_Line Param;
Param.Content = TEXT("我是分享文案");
Param.ImageUrl = TEXT("Android: 我是分享本地图片绝对路径, iOS: 图片在本地沙盒中的路径");
Param.ImageData = ImageBuffer; // 与 ImageUrl 二选一
Param.LinkUrl = TEXT("我是分享链接");