跳转到内容

社交(Unity)

FRVRSDK.Social 封装宿主渠道的分享面板和邀请选择器。两个动作:share(广播到玩家的动态 / 好友圈)和 invite(直接定向给具体好友)。

不是所有渠道都支持这些 —— 总是先检查。

FRVRSDK.Social.CanInvite(canInvite =>
{
    inviteButton.gameObject.SetActive(canInvite);
});

如果 canInvitefalse,把 UI 入口隐藏掉 —— 不要展示一个点了没反应的按钮。

封装期望接收图片的 base64 data URL。截到贴图、编码为 PNG、对字节做 base64,前缀加上 data-URL scheme:

string imageBase64 = "data:image/png;base64,"
    + System.Convert.ToBase64String(shareTexture.EncodeToPNG());

FRVRSDK.Social.Share(
    text:     "Beat my 42k in Fruit Sort FRVR!",
    image:    imageBase64,
    headline: "Share",
    cta:      "Play",
    result => Debug.Log("share result: " + result));

带结构化入口数据(让接收方玩家落到指定状态):

FRVRSDK.Social.Share(
    "Check this out!",
    imageBase64,
    "Headline",
    "Play Now",
    result => Debug.Log("share: " + result),
    "{\"deepLink\":\"daily_puzzle\",\"seed\":12345}");
参数类型必填说明
textstring正文 / 描述文字。
imagestring图片以 base64 data URL 形式提供(data:image/png;base64,…)。
headlinestring正文上方的简短标题(渠道支持时)。
ctastring行动号召按钮文案。
result 回调Action<string>对话框关闭时,带宿主返回的结果字符串触发。
entryPointDatastring(JSON)序列化后的 payload,接收方加入时通过 入口点 拿到。
FRVRSDK.Social.Invite(
    text:           "Come play with me!",
    image:          imageBase64,
    headline:       "Join",
    cta:            "Play",
    entryPointData: "{\"room\":\"abc\"}",
    result => Debug.Log("invite result: " + result));

宿主渠道会展示它原生的好友选择器;玩家完成或取消时,回调触发。

参数类型必填说明
textstring与图片一同展示的文案。
imagestring图片以 base64 data URL 形式提供(data:image/png;base64,…)。
headlinestring正文上方的简短标题(渠道支持时)。
ctastring行动号召按钮文案。
entryPointDatastring(JSON)序列化后的 payload,接收方通过 入口点 拿到。
result 回调Action<string>选择器关闭时,带宿主返回的结果字符串触发。

这是最常见的”share 返回空”bug。要让 EncodeToPNG() 产出非空字节,shareTexture 资源必须满足:

  • Read/Write Enabled: ON
  • Compression: None

大小建议:512×386 或 1024×768 都没问题。别用超大贴图 —— base64 payload 会被 POST 给宿主,序列化和传输的成本要你来付。

  • 分享 vs. 邀请的语义、完整平台支持列表(模板更新、好友图、实时在线):Web SDK 社交参考