跳到主要内容

Android 分享功能

调用带有 Unity SDKUnreal Engine SDKFriendReqInfo 数据结构的 SendMessageShare 方法来实现 Android 的分享功能。

有关回调信息,请参见 回调

Facebook

注意

2019年6月10日 起,Share to Messenger SDK 不再支持新应用集成。然而,现有业务仍可访问 SendMessage 方法以分享链接至 Messenger。

由于 Facebook 网页游戏和 Facebook Gameroom 平台已不再接受新游戏的提交,Player Network SDK 已停止支持使用 SendMessage 方法来发送邀请。

Facebook 支持以下分享模式:

  • Messenger 分享:分享到 Facebook Messenger。
  • Feed 分享:分享到 Facebook 动态。
  • Gaming 分享:为游戏服务专用,游戏必须启用 Login for Gaming 才能使用此功能。

可用 SendMessageShare 将以下内容分享到 Facebook:

  • SendMessage:链接,支持 Messenger 分享
  • Share:链接,支持 Feed 分享
  • Share:图片,支持 Feed 和 Gaming 分享
  • Share:视频,支持 Feed 分享
注意

Facebook SDK V4.22.0 起,TitleDescriptionCaptionImagePath 字段在分享链接时不再生效。

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需本地安装 Messenger 应用。

参数:

  • Type
  • Link:URL
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.facebook.com/link";
INTLAPI.SendMessage(reqInfo, INTLChannel.Facebook);
Image: Facebook send link

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • Link:URL
  • ExtraJson(可选) - hashtag
    • 将各标签设置为 "#value",仅突出显示第一个 "#"
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.facebook.com/link";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
INTLAPI.Share(reqInfo, INTLChannel.Facebook);
Image: Facebook share link

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
    • 图片大小不能超过 12MB
    • 在线图片不会保存到本地
  • ExtraJson(可选) - hashtag
    • 将各标签设置为 "#value",仅突出显示第一个 "#"

要使用 Gaming 分享模式,可在 ExtraJson 中添加 \"mode\":1 属性。使用 Gaming 分享模式时不能添加标签。

var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
INTLAPI.Share(reqInfo, INTLChannel.Facebook);

Feed 分享示例:
Image: Facebook Classic mode

Gaming 分享示例:
Image: Sharing for Gaming

Share:视频

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_VIDEO
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • MediaPath:视频路径,视频大小不能超过 50MB
  • ExtraJson(可选) - hashtag
    • 将各标签设置为 "#value",仅突出显示第一个 "#"
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_VIDEO;
reqInfo.MediaPath = "/path/to/video";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
INTLAPI.Share(reqInfo, INTLChannel.Facebook);
Image: Facebook Gaming mode

Garena

要将玩家内容分享到 Garena 所支持的子渠道,可在调用 SendMessageShare 方法时,将渠道名称和渠道所需参数传递给 FriendReqInfo 数据结构的 ExtraJson 属性。支持的子渠道包括 Garena、Facebook 和 LINE。

在线图片在分享到 Garena 所支持的子渠道后,不会保存到本地存储中。

ExtraJson备注
subChannelGarena 子渠道名称
mediaTagName根据游戏需求传入的额外参数或者任意空字符串
caption分享内容的说明

子渠道 Garena

可用 SendMessage 将以下内容分享到子渠道 Garena:

  • SendMessage:文本
  • SendMessage:链接
  • SendMessage:图片

SendMessage:文本

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT
玩家需安装并已登录 Garena 应用。

参数:

  • Type
  • Title:标题
  • Description:文本内容
  • ThumbPath:缩略图路径
  • ExtraJson - subChannel, mediaTagName
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Title = "INTL share";
reqInfo.Description = "Hello, long time no see";
reqInfo.ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Garena\",\"mediaTagName\":\"me\"}";
INTLAPI::SendMessage(friendInfo, "Garena");

Garena 不支持 Player Network 的邀请类型,但可以通过文本消息发送邀请,将 mediaTagName 设置为 room ID。

当好友点击邀请时,游戏将打开且 mediaTagName 的值会在 OnAuthBaseResultEvent 中通过 ret.ExtraJsongame_data 传递。随后好友加入房间。

代码示例:

public void OnAuthBaseResultEvent(INTLBaseResult baseRet)
{
if(baseRet.MethodId == (int)INTLMethodID.INTL_AUTH_WAKEUP)
{
// Listen to the team invitation callback
}
}

响应示例:

{
"RetCode":0,
"RetMsg":"Success",
"MethodId":109,
"ThirdCode":-1,
"ThirdMsg":"",
"ExtraJson":"{\"params\":\"{\\\"platform\\\":\\\"1\\\",\\\"from_open_id\\\":\\\"f9aed405b81abfbdfeb305c431335ca3\\\",\\\"open_id\\\":\\\"9317b7044e2feaeff33d1feac2de33b4\\\"}\",\"game_data\":\"33\"}"
}

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需安装并已登录 Garena 应用。

参数:

  • Type
  • Link:URL
  • Title:标题
  • Description:描述
  • ExtraJson - subChannel, mediaTagName, caption
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
reqInfo.Title = "INTL share";
reqInfo.Description = "Hello, long time no see";
reqInfo.ExtraJson = "{\"subChannel\":\"Garena\",\"mediaTagName\":\"me\",\"caption\":\"New Strait Times\"}";
INTLAPI::SendMessage(friendInfo, "Garena");

SendMessage:图片

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需安装并已登录 Garena 应用。

参数:

  • Type
  • ImagePath:图片路径
  • ExtraJson - subChannel, mediaTagName
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Garena\",\"mediaTagName\":\"me\"}";
INTLAPI::SendMessage(friendInfo, "Garena");

子渠道 Facebook

可用 Share 将以下内容分享到子渠道 Facebook:

  • Share:文本
  • Share:链接
  • Share:图片
注意

Facebook SDK V4.22.0 起,TitleDescriptionCaptionImagePath 字段在分享链接时不再生效。

Share:文本

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • Description:文本内容
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "Hello, long time no see";
reqInfo.ExtraJson = "{\"subChannel\":\"Facebook\"}";
INTLAPI::Share(friendInfo, "Garena");

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • Link:URL
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
reqInfo.ExtraJson = "{\"subChannel\":\"Facebook\"}";
INTLAPI::Share(friendInfo, "Garena");

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需本地安装 Facebook 应用。

参数:

  • Type
  • ImagePath:图片路径,图片大小不能超过 12MB
  • ExtraJson - subChannel, mediaTagName
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Facebook\",\"mediaTagName\":\"me\"}";
INTLAPI::Share(friendInfo, "Garena");

子渠道 LINE

可用 SendMessageShare 将以下内容分享到子渠道 LINE:

  • SendMessage:链接
  • SendMessage:图片
  • Share:链接
  • Share:图片

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需本地安装 LINE 应用而无需登录 Garena。

参数:

  • Type
  • Link:URL
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
reqInfo.ExtraJson = "{\"subChannel\":\"Line\"}";
INTLAPI::SendMessage(friendInfo, "Garena");

SendMessage:图片

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需本地安装 LINE 应用而无需登录 Garena。

参数:

  • Type
  • ImagePath:图片路径
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Line\"}";
INTLAPI::SendMessage(friendInfo, "Garena");

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需本地安装 LINE 应用而无需登录 Garena。

参数:

  • Type
  • Link:URL
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
reqInfo.ExtraJson = "{\"subChannel\":\"Line\"}";
INTLAPI::Share(friendInfo, "Garena");

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需本地安装 LINE 应用而无需登录 Garena。

参数:

  • Type
  • ImagePath:图片路径
  • ExtraJson - subChannel
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Line\"}";
INTLAPI::Share(friendInfo, "Garena");
Image: Garena LINE share link

Instagram

可用 Share 将以下内容分享到 Instagram 动态、故事和消息:

  • Share:图片
  • Share:视频
注意

Instagram 分享功能需要 iOS 15.1 或更高版本。更多详情,请参见 Instagram 应用商店页面

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需本地安装 Instagram 应用。

参数:

  • Type
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
    • 推荐格式:JPEG(640 x 640 像素)
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "/path/to/image";
INTLAPI.Share(reqInfo, INTLChannel.Instagram);

Share:视频

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_VIDEO
玩家需本地安装 Instagram 应用。

参数:

  • Type
  • MediaPath:视频路径,可提供本地视频路径或在线 URL
    • 格式:MP4
    • 最短时长:3秒,最长时长:10分钟
    • 最小尺寸:640 x 640 像素
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_VIDEO;
reqInfo.MediaPath = "/path/to/video";
INTLAPI.Share(reqInfo, INTLChannel.Instagram);

Kakao

调用 SendMessage 方法前,需先在 Kakao Developer 上注册自定义消息模板。自定义的消息模板可在 Android 和 iOS 版本之间使用,详见 消息模板

  1. 进入 Message Template Builder

    图片:Kakao 消息模板生成器

  2. 根据需要添加或删除模板组件。

    图片: Kakao 消息模板组件

  3. 使用 User Argument 动态填充消息内容。例如,当选择 自定义 图片时,将内容传递为 {"${KEY}":"{VALUE}"}SendMessage 方法中。

    图片:动态填充消息内容

有关 Kakao 错误码的信息,请参见 Error code

可用 SendMessage 将以下内容分享到 Kakao:

  • SendMessage:文本
  • SendMessage:链接
  • SendMessage:图片
  • SendMessage:邀请
ExtraJson备注
template_id固定字段,设置为文本消息模板 ID
title模板中的 User Argument,格式应与 ExtraJson 中的文本或 URL 内容匹配

SendMessage:文本

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT
玩家需通过 Kakao 渠道登录。

参数:

  • Type
  • User:收件人 OpenID
  • ExtraJson - template_id, ${title}
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.User = ""; // openid
reqInfo.ExtraJson = "{\"template_id\":\"72374\", \"${title}\":\"This is a text message\"}";
INTLAPI.SendMessage (reqInfo, INTLChannel.KaKao);

文本信息模板示例:

图片:Kakao 文本信息模板

注意

发送链接消息时,请前往 App Settings > Platform 并在 Web 平台中注册 URL 域名。

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需通过 Kakao 渠道登录。

参数:

  • Type
  • User:收件人 OpenID
  • ExtraJson - template_id, ${title}
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.User = ""; // openid
reqInfo.ExtraJson = "{\"template_id\":\"72374\", \"${title}\":\"This is a text message\"}";
INTLAPI.SendMessage (reqInfo, INTLChannel.KaKao);

SendMessage:图片

注意

Kakao 必须能够访问图片的在线 URL,否则图片将无法在消息中显示。

图片的用户参数为 ${image_path},将图片路径传递给 req_info.ImagePathreq_info.ThumbPath。Player Network SDK 将验证图片是否在线。

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需通过 Kakao 渠道登录。

参数:

  • Type
  • User:收件人 OpenID
  • ImagePath:图片路径,必须是在线图片的 URL
  • ExtraJson - template_id, ${title}
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.User = ""; // openid
reqInfo.ImagePath = "http://*****"; // Image URL
reqInfo.ExtraJson = "{\"template_id\":\"72374\", \"${title}\":\"This is a text message\"}";
INTLAPI.SendMessage (reqInfo, INTLChannel.KaKao);

图片信息模板示例:

图片:Kakao 图片信息模板

预览部分显示了发送消息的样式。图片消息包含图片和文本。

SendMessage:邀请

注意

玩家只能邀请非游戏好友,且不能向同一好友发送多个邀请。

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_INVITE
玩家需通过 Kakao 渠道登录。

参数:

  • Type
  • User:收件人 OpenID
    • 传入空字符串,邀请仅适用于非游戏好友
  • ImagePath(可选):图片路径,必须是在线图片的 URL
  • ExtraJson - template_id, ${title}
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_INVITE;
reqInfo.User = ""; // openid
reqInfo.ImagePath = "http://*****"; // Image URL
reqInfo.ExtraJson = "{\"template_id\":\"72374\", \"${title}\":\"This is a text message\"}";
INTLAPI.SendMessage (reqInfo, INTLChannel.KaKao);

LINE

可用 SendMessage 将以下内容分享到 LINE:

  • SendMessage:文本
  • SendMessage:图片

SendMessage:文本

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT

参数:

  • Type
  • Description:文本内容
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "INTL services";
INTLAPI.SendMessage(reqInfo, INTLChannel.Line);

SendMessage:图片

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE

参数:

  • Type
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
INTLAPI.SendMessage(reqInfo, INTLChannel.Line);

错误码

void CheckThirdCode(INTLAuthResult result)
{
if(result.RetCode == 9999)
{
switch(result.ThirdCode):
{
case 5:
//LineSDKInternalErrorCodeInvalidTokenType
break;
case 2:
//LineSDKInternalErrorCodeMissingConfiguration
break;
case 2001:
// Error happens in the underlying `URLSession`.
break;
default:
// Unknown error code
break;
}
}
}
错误码说明
SUCCESS登录成功
CANCEL用户取消
AUTHENTICATION_AGENT_ERROR用户取消权限认证
SERVER_ERROR服务器错误
NETWORK_ERRORSDK 连接不到 LINE 平台
INTERNAL_ERROR未知错误

更多详情,请参看 Handling errors

QQ

QQ 支持以下分享模式:

  • QQ 好友分享:分享给 QQ 好友或群组,使用 SendMessage 方法。
  • QZone 分享:分享到 QZone,使用 Share 方法。

可用 SendMessageShare 将以下内容分享到 QQ:

  • SendMessage:链接
  • SendMessage:图片
  • Share:文本
  • Share:链接
  • Share:图片
  • Share:视频

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
  • Link:URL
  • ThumbPath:缩略图路径
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
reqInfo.Title = "INTL test";
reqInfo.Description = "INTL link sending test";
reqInfo.ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
INTLAPI.SendMessage(reqInfo, INTLChannel.QQ);
Image: QQ send link

SendMessage:图片

调用 SendMessage 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.Title = "INTL test";
reqInfo.Description = "INTL description";
reqInfo.ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
INTLAPI.SendMessage(reqInfo, INTLChannel.QQ);

Share:文本

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "INTL text sending test";
INTLAPI.Share(reqInfo, INTLChannel.QQ);

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
  • Link:URL
var reqInfo = new INTLFriendReqInfo ();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Title = "INTL share";
reqInfo.Description = "INTL description";
reqInfo.Link = "https://www.google.com";
reqInfo.ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
INTLAPI.Share(reqInfo, INTLChannel.QQ);
Image: QQ share link

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
var reqInfo = new INTLFriendReqInfo ();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.Description = "INTL description";
reqInfo.ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
INTLAPI.Share(reqInfo, INTLChannel.QQ);

Share:视频

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_VIDEO
玩家需安装并已登录 QQ 应用。

参数:

  • Type
  • Title:标题,最多30个字符
  • Description:描述,最多40个字符
  • MediaPath:视频路径,必须是本地视频路径
    • 普通用户,视频大小不能超过 100MB
    • 黄钻用户,视频大小不能超过 1GB,超过 1GB 则报错
var reqInfo = new INTLFriendReqInfo ();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_VIDEO;
reqInfo.Title = "Game Video";
reqInfo.Description = "Golden moment";
reqInfo.MediaPath = "http://v.qq.com/cover/5/53x6bbyb07ebl3s/n0013r8esy6.html";
reqInfo.ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
INTLAPI.Share(reqInfo, INTLChannel.QQ);
Image: QQ share video

System

原生的 Android 系统分享功能支持分享文本信息和图片,还支持自定义分享界面。

分享

每种分享类型都有自己的必填参数,例如文本分享的 Description。如果输入了与功能无关的参数,如文本分享的 LinkImagePath,则无关参数将被忽略。

回调只显示系统分享页面是否成功打开,而不显示分享是否成功

功能必填参数
Share:文本Description
Share:链接Description
Link
Share:图片ImagePath

自定义分享界面

游戏可以通过调用 Share 方法来自定义系统分享界面,其中的 ExtraJson 使用以下参数设置:

  • rule:
    • 0 = 使用默认系统设置
    • 1 = Include,只显示 containsmatch 中列出的应用
    • 2 = Exclude,不显示 containsmatch 中列出的应用
  • contains:要包含的应用名称列表,和 match 一起使用
  • match:要匹配的应用包名列表,和 contains 一起使用

代码示例:

{
"rule":0,
"contains":[
"whatsapp",
"twitter"
],
"match":[
"com.facebook.katana"
]
}
注意

Android 10 及以上版本,自定义分享界面存在两个问题:

  • Include 最多显示3个应用,源代码限制为 ChooserActivity #MAX_EXTRA_INITIAL_INTENTS = 2。这是由于各厂商以各种方式自定义 Android 系统所导致的,Huawei 系统和 Xiaomi 系统则不受限制。

  • Exclude 只有在 AndroidManifest 中配置的包名可以被排除。当合并第三方渠道插件时,与插件相对应的应用包名将被添加到配置中。如需添加其他排除应用包名,建议业务根据下文示例将其添加到配置中。

    <queries>
    <package android:name="com.vkontakte.android" />
    </queries>

上报系统分享事件

Player Network SDK 上报所选渠道的系统分享事件,业务可在 DD平台 查询相应的数据报表 insight_1000_system_share。当查找报表时,业务可以过滤关键字,例如 QQ,Facebook,VK 等。

关键字段:

  • name:回调名称,例如 vk:com.vkontakte.android.sharing.SharingExternalActivity
  • package_name:频道包名,例如 QQ 的 com.tencent.mqq

Twitter

可用 Share 将以下内容分享到 Twitter:

  • Share:文本
  • Share:链接
  • Share:图片

要将文本和链接类型的 Android 游戏内容分享到 Twitter,玩家无需在设备上安装 Twitter 应用,游戏可使用系统浏览器打开 Twitter 页面,玩家登录后即可分享。但是,如果玩家希望分享图片,则必须在设备上安装并登录 Twitter 应用。

如果玩家拥有多个 Twitter 账号,并在游戏中分享内容前切换了登录账号,则游戏还是会使用之前的账号进行分享。要解决这个问题,可在调用 Share 时在 ExtraJson 中添加 \"login_first\":1 属性,让 Twitter 在每次分享前重新授权(不会改变游戏的当前登录状态),确保内容分享到当前的账号。

当玩家在短时间内重复分享同样的文本或链接时,Twitter 可能会返回 403 错误。

分享文本

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT

参数:

  • Type
  • Description:文本内容
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "Hello, long time no see";
INTLAPI.Share(reqInfo, INTLChannel.Twitter);

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK

参数:

  • Type
  • Link:URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
INTLAPI.Share(reqInfo, INTLChannel.Twitter);

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需安装并已登录 Twitter 应用。

参数:

  • Type
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "/path/to/image";
INTLAPI.Share(reqInfo, INTLChannel.Twitter);

VK

可用 Share 将以下内容分享到 VK:

  • Share:文本
  • Share:链接
  • Share:图片

Share:文本

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT

参数:

  • Type
  • Description:文本内容
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "Hello, long time no see";
INTLAPI.Share(reqInfo, INTLChannel.VK);

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK

参数:

  • Type
  • Link:URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
INTLAPI.Share(reqInfo, INTLChannel.VK);

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE

参数:

  • Type
  • ImagePath:图片路径,可提供本地图片路径或在线 URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "/path/to/image";
INTLAPI.Share(reqInfo, INTLChannel.VK);

WhatsApp

可用 Share 将以下内容分享到 WhatsApp:

  • Share:文本
  • Share:链接
  • Share:图片
  • Share:视频
注意

分享文本或链接时,无论实际结果如何 Share 将会立即返回成功。

Image: WhatsApp Android

Share:文本

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_TEXT
玩家需安装并已登录 WhatsApp 应用。

参数:

  • Type
  • Description:文本内容
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_TEXT;
reqInfo.Description = "Hello, long time no see";
INTLAPI.Share(reqInfo, "WhatsApp");

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_LINK
玩家需安装并已登录 WhatsApp 应用。

参数:

  • Type
  • Link:URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_LINK;
reqInfo.Link = "https://www.google.com";
INTLAPI.Share(reqInfo, "WhatsApp");

Share:图片

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_IMAGE
玩家需安装并已登录 WhatsApp 应用。

参数:

  • Type
  • ImagePath:图片路径
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_IMAGE;
reqInfo.ImagePath = "/path/to/image";
INTLAPI.Share(reqInfo, "WhatsApp");

Share:视频

调用 Share 方法,并将 Type 设置为 INTLFriendReqType.Friend_REQ_VIDEO
玩家需安装并已登录 WhatsApp 应用。

参数:

  • Type
  • MediaPath:视频路径,可提供本地视频路径或在线 URL
var reqInfo = new INTLFriendReqInfo
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_VIDEO;
reqInfo.MediaPath = "/path/to/video";
INTLAPI.Share(reqInfo, "WhatsApp");

回调