iOS 分享功能
调用带有 Unity SDK 或 Unreal Engine SDK 的 FriendReqInfo
数据结构的 SendMessage 或 Share 方法来实现 iOS 的分享功能。
有关回调信息,请参见 回调。
Facebook
自 2019年6月10日 起,Share to Messenger SDK 不再支持新应用集成。然而,现有业务仍可访问 SendMessage
方法以分享链接至 Messenger。
由于 Facebook 网页游戏和 Facebook Gameroom 平台已不再接受新游戏的提交,Player Network SDK 已停止支持使用 SendMessage
方法来发送邀请。
Facebook 支持以下分享模式:
- Messenger 分享:分享到 Facebook Messenger。
- Feed 分享:分享到 Facebook 动态。
- Reels 分享:分享到 Facebook Reels。
- Gaming 分享:为游戏服务专用,游戏必须启用 Login for Gaming 才能使用此功能。
可用 SendMessage
和 Share
将以下内容分享到 Facebook:
- SendMessage:链接,支持 Messenger 分享
- Share:链接,支持 Feed 分享
- Share:图片,支持 Feed 和 Gaming 分享
- Share:视频,支持 Feed 和 Reels 分享
自 Facebook SDK V4.22.0 起,Title
、Description
、Caption
和 ImagePath
字段在分享链接时不再生效。
SendMessage:链接
- Unity
- Unreal Engine
调用 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);
调用 SendMessage
方法,并将 Type
设置为 UINTLFriendReqType::kReqLink
。
玩家需本地安装 Messenger 应用。
参数:
Type
Link
:URL
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqLink;
reqInfo.Link = "https://www.facebook.com/link";
UINTLSDKAPI::SendMessage(reqInfo, EINTLLoginChannel::kChannelFacebook);

Share:链接
- Unity
- Unreal Engine
调用 Share
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_LINK
。
玩家需本地安装 Facebook 应用。
参数:
Type
Link
:URLExtraJson
(可选) -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);
调用 Share
方法,并将 Type
设置为 UINTLFriendReqType::kReqLink
。
玩家需本地安装 Facebook 应用。
参数:
Type
Link
:URLExtraJson
(可选) -hashtag
- 将各标签设置为 "#value",仅突出显示第一个 "#"
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqLink;
reqInfo.Link = "https://www.facebook.com/link";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
UINTLSDKAPI::Share(reqInfo, EINTLLoginChannel::kChannelFacebook);

Share:图片
- Unity
- Unreal Engine
调用 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);
调用 Share
方法,并将 Type
设置为 UINTLFriendReqType::kReqImage
。
玩家需本地安装 Facebook 应用。
参数:
Type
ImagePath
:图片路径,可提供本地图片路径或在线 URL- 图片大小不能超过 12MB
- 在线图片不会保存到本地
ExtraJson
(可选) -hashtag
- 将各标签设置为 "#value",仅突出显示第一个 "#"
要使用 Gaming 分享模式,可在 ExtraJson
中添加 \"mode\":1
属性。使用 Gaming 分享模式时不能添加标签。
FINTLFriendReqInfo reqInfo ;
reqInfo.Type = (int32)UINTLFriendReqType::kReqImage,
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
UINTLSDKAPI::Share(reqInfo, EINTLLoginChannel::kChannelFacebook);
Feed 分享示例:
Gaming 分享示例:
Share:视频(Feed)
- Unity
- Unreal Engine
调用 Share
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_VIDEO
。
玩家需本地安装 Facebook 应用。
参数:
Type
MediaPath
:视频路径,视频大小不能超过 50MBExtraJson
(可选) -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);
调用 Share
方法,并将 Type
设置为 UINTLFriendReqType::kReqVideo
。
玩家需本地安装 Facebook 应用。
参数:
Type
MediaPath
:视频路径,视频大小不能超过 50MBExtraJson
(可选) -hashtag
- 将各标签设置为 "#value",仅突出显示第一个 "#"
FINTLFriendReqInfo reqInfo ;
reqInfo.Type = (int32)UINTLFriendReqType::kReqVideo,
reqInfo.MediaPath = "/path/to/video";
reqInfo.ExtraJson = "{\"hashtag \":\"#value\"}";
UINTLSDKAPI::Share(reqInfo, EINTLLoginChannel::kChannelFacebook);

Share:视频(Reels)
- Unity
- Unreal Engine
调用 Share
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_VIDEO
。
玩家需本地安装 Facebook 应用。
参数:
Type
MediaPath
:视频路径,视频大小不能超过 50MBExtraJson
:share_to_reels
、hashtag
share_to_reels
: 设置为 Truehashtag
(可选): 将各标签设置为 "#value",仅突出显示第一个 "#"
var reqInfo = new INTLFriendReqInfo();
reqInfo.Type = (int)INTLFriendReqType.Friend_REQ_VIDEO;
reqInfo.MediaPath = "/path/to/video";
reqInfo.ExtraJson = "{\"share_to_reels\":true, \"hashtag \":\"#value\"}";
INTLAPI.Share(reqInfo, INTLChannel.Facebook);
调用 Share
方法,并将 Type
设置为 UINTLFriendReqType::kReqVideo
。
玩家需本地安装 Facebook 应用。
参数:
Type
MediaPath
:视频路径,视频大小不能超过 50MBExtraJson
:share_to_reels
、hashtag
share_to_reels
: 设置为 Truehashtag
(可选): 将各标签设置为 "#value",仅突出显示第一个 "#"
FINTLFriendReqInfo reqInfo ;
reqInfo.Type = (int32)UINTLFriendReqType::kReqVideo,
reqInfo.MediaPath = "/path/to/video";
reqInfo.ExtraJson = "{\"share_to_reels\":true, \"hashtag \":\"#value\"}";
UINTLSDKAPI::Share(reqInfo, EINTLLoginChannel::kChannelFacebook);
Garena
要将玩家内容分享到 Garena 所支持的子渠道,可在调用 SendMessage
或 Share
方法时,将渠道名称和渠道所需参数传递给 FriendReqInfo
数据结构的 ExtraJson
属性。支持的子渠道包括 Garena、Facebook 和 LINE。
在线图片在分享到 Garena 所支持的子渠道后,不会保存到本地存储中。
ExtraJson | 备注 |
---|---|
subChannel | Garena 子渠道名称 |
mediaTagName | 根据游戏需求传入的额外参数或者任意空字符串 |
caption | 分享内容的说明 |
子渠道 Garena
可用 SendMessage
将以下内容分享到子渠道 Garena:
- SendMessage: 文本
- SendMessage:链接
- SendMessage:图片
SendMessage:文本
- Unity
- Unreal Engine
调用 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.ExtraJson
的 game_data
传递。随后好友加入房间。
代码示例:
public void OnAuthBaseResultEvent(INTLBaseResult baseRet)
{
if(baseRet.MethodId == (int)INTLMethodID.INTL_AUTH_WAKEUP)
{
// Listen to the team invitation callback
}
}
调用 SendMessage
方法,并将 Type
设置为 UINTLFriendReqType::kReqText
。
玩家需安装并已登录 Garena 应用。
参数:
Type
Title
:标题Description
:文本内容ThumbPath
:缩略图路径ExtraJson
-subChannel
,mediaTagName
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqText;
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\"}";
UINTLSDKAPI::SendMessage(reqInfo, "Garena");
Garena 不支持 Player Network 的邀请类型,但可以通过文本消息发送邀请,将 mediaTagName
设置为 room ID。
当好友点击邀请时,游戏将打开且 mediaTagName
的值会在 OnAuthBaseResultEvent
中通过 ret.ExtraJson
的 game_data
传递。随后好友加入房间。
代码示例:
// INTLAuthBaseResult callback
void INTLSDKAPIObserverImpl::OnAuthBaseResult_Implementation(FINTLBaseResult ret)
{
if(ret.MethodId == kMethodIDAuthWakeUp)
{
// 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:链接
- Unity
- Unreal Engine
调用 SendMessage
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_LINK
。
玩家需安装并已登录 Garena 应用。
参数:
Type
Link
:URLTitle
:标题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
方法,并将 Type
设置为 UINTLFriendReqType::kReqLink
。
玩家需安装并已登录 Garena 应用。
参数:
Type
Link
:URLTitle
:标题Description
:描述ExtraJson
-subChannel
,mediaTagName
,caption
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqLink;
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\"}";
UINTLSDKAPI::SendMessage(reqInfo, "Garena");
SendMessage:图片
- Unity
- Unreal Engine
调用 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");
调用 SendMessage
方法,并将 Type
设置为 UINTLFriendReqType::kReqImage
。
玩家需安装并已登录 Garena 应用。
参数:
Type
ImagePath
:图片路径ExtraJson
-subChannel
,mediaTagName
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqImage;
reqInfo.ImagePath = "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png";
reqInfo.ExtraJson = "{\"subChannel\":\"Garena\",\"mediaTagName\":\"me\"}";
UINTLSDKAPI::SendMessage(reqInfo, "Garena");
子渠道 Facebook
可用 Share
将以下内容分享到子渠道 Facebook:
- Share:文本
- Share:链接
- Share:图片
自 Facebook SDK V4.22.0 起,Title
、Description
、Caption
和 ImagePath
字段在分享链接时不再生效。
Share:文本
- Unity
- Unreal Engine
调用 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");
调用 SendMessage
方法,并将 Type
设置为 UINTLFriendReqType::kReqText
。
玩家需本地安装 Facebook 应用。
参数:
Type
Description
:文本内容ExtraJson
-subChannel
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqText;
reqInfo.Description = "Hello, long time no see";
reqInfo.ExtraJson = "{\"subChannel\":\"Facebook\"}";
UINTLSDKAPI::Share(reqInfo, "Garena");
Share:链接
- Unity
- Unreal Engine
调用 Share
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_LINK
。
玩家需本地安装 Facebook 应用。
参数:
Type
Link
:URLExtraJson
-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
方法,并将 Type
设置为 UINTLFriendReqType::kReqLink
。
玩家需本地安装 Facebook 应用。
参数:
Type
Link
:URLExtraJson
-subChannel
FINTLFriendReqInfo reqInfo;
reqInfo.Type = (int32)UINTLFriendReqType::kReqLink;
reqInfo.Link = "https://www.google.com";
reqInfo.ExtraJson = "{\"subChannel\":\"Facebook\"}";
UINTLSDKAPI::Share(reqInfo, "Garena");
Share:图片
- Unity
- Unreal Engine
调用 Share
方法,并将 Type
设置为 INTLFriendReqType.Friend_REQ_IMAGE
。
玩家需本地安装 Facebook 应用。
参数:
Type
ImagePath
:图片路径,图片大小不能超过 12MBExtraJson
-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");