海外网页社交媒体分享

海外网页社交媒体分享

前言 在海外游戏活动的落地页中,需要集成社交分享功能,支持分享到多种主流的海外社交媒体平台(如 Facebook, X, Instagram, LINE, WhatsApp, Telegram 等),并且在分享时展示精心设计的“分享卡片”(Share Card)。 当然要部署这个应用那肯定少不了一台

前言

在海外游戏活动的落地页中,需要集成社交分享功能,支持分享到多种主流的海外社交媒体平台(如 Facebook, X, Instagram, LINE, WhatsApp, Telegram 等),并且在分享时展示精心设计的“分享卡片”(Share Card)。

当然要部署这个应用那肯定少不了一台高性能的服务器,让你更快速、更高效的使用,博主这边给大家推荐一个便宜又速度快的海外云服务器 VMRack他家有三条线路分别是 三网精品(电信: CN2 GIA/联通: CU9929/移动: CMIN2)、三网优化(电信163/联通10099/移动CMI 回程: 联通10099)、国际BGP,能满足绝大多数个人或中小企业的日常使用需求并且够买不需要实名和ICP备案。现在国际BGP的价格低至3.66$每月起!!!!

官网地址:https://www.vmrack.net/zh-CN

#分享示例

社媒分享卡片展示

Facebook

X. See what's happening

Instagram

#四要素

分享信息四要素:页面 url、标题、描述、分享图 url

写在网页 meta 属性中,通过浏览器自带分享功能 或 页面内点击分享,携带 meta 分享信息在社媒里生成分享卡片显示

<!-- 通用分享图 -->
<meta itemprop="image" content="当前语言分享图 url">
<!-- Open Graph 协议 -->
<meta property="og:type" content="website">
<meta property="og:site_name" content="xxx.com">
<meta property="og:title" content="当前语言标题">
<meta property="og:description" content="当前语言描述">
<meta property="og:url" content="当前语言页面 url">
<meta property="og:image" content="当前语言分享图 url">
<!-- twitter 分享 -->
<meta name="twitter:site" content="@xxx">
<meta name="twitter:title" content="当前语言标题">
<meta name="twitter:description" content="当前语言描述">
<meta name="twitter:url" content="当前语言页面 url">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="当前语言分享图 url">
<meta name="twitter:image:src" content="当前语言分享图 url">

Open Graph​ 是由 Facebook 推出的通用社交分享协议,用于将网页内容以富媒体卡片的形式分享到社交平台,大部分海外社媒都采用这种协议生成分享卡片

其他媒体分享是读取 Open Graph 元数据或默认配置的 title、description、通用分享图,不用额外配置

Twitter 分享的卡片(Twitter Cards)可以在推文中嵌入丰富的媒体信息,twitter:card 有如下取值:

  • summary:适合大多分享需求,展示标题、描述和缩略图

  • summary_large_image:类似前者,但显示一张大分享图

  • app:可以直接下载 app 的分享卡片

  • player:可以显示视频/音频/媒体的卡片

后两种就要配置其他相应 meta 属性才可实现,这里就不展开了

注意点 1:分享信息是写在 meta 属性里,也就是静态分享内容。js 动态修改不会生效,社媒只会读取页面首次加载的 meta 数据信息,因此一个 html 对应一种分享信息
但如果是服务端渲染的 html,可以在后端动态生成 meta 信息再生成对应 html,可实现动态分享的内容

注意点 2:首次分享内容时,Facebook 网络爬虫将抓取并缓存所分享网址的元数据。网络爬虫必须至少识别一次图片全貌,然后方能加以呈现。这表示第一个分享内容的用户无法看到呈现的图片
可以通过以下三种方式避免这种情况,从而在首次执行分享操作时呈现图片:

  1. 通过 分享调试器 预缓存图片:通过网址调试器运行网址,预先获取页面的元数据。此做法也可用于更新某段内容的图片

  2. 使用 图谱 API 预缓存图片:使用图谱 API 以编程方式对网址进行强制抓取,预先获取页面的元数据。此做法也可用于更新某段内容的图片

  3. 使用 og:image:widthog:image:height 开放图谱标签:使用这些标签可为网络爬虫指定图片尺寸,以便立即加以呈现,而无需异步下载和处理

注意点 3:Facebook 的网络爬虫会每隔 30 天自动更新链接元数据,若更改分享元数据信息,可以使用 分享调试器 进行强制刷新,否则要等待 30 天刷新
若更改分享图,必须更换新的分享图 url,否则图片不会刷新。此外不要移除旧图片,因为可能存在引用旧图片的动态

#点击分享

通常页面内有按钮可以支持点击拉起社媒分享操作,调用方法如下

// 分享到 Facebook
const facebookShare = () => {
  // 分享的页面地址,通常是当前页面
  const url = encodeURIComponent('https://xxx.com');
  const facebook = `https://www.facebook.com/sharer/sharer.php?u=${url}`;
  window.open(facebook, '_blank');
};

// 分享到 Twitter
const twitterShare = () => {
  // 分享文案内容,可以为空,咨询产品确定文案
  const text = '';
  // 分享的页面地址,通常是当前页面
  const url = encodeURIComponent('https://xxx.com');
  // 填写要 @ 的用户名,会显示 “via @用户名”,可以为空
  const via = '';
  const content = `text=${text}&url=${url}&via=${via}`;
  const twitter = `https://twitter.com/intent/tweet?${content}`;
  window.open(twitter, '_blank');
};

// 分享到 LINE
const lineShare = () => {
  // 分享的页面地址,通常是当前页面
  const url = encodeURIComponent('https://xxx.com');
  window.open(`https://social-plugins.line.me/lineit/share?url=${url}`, '_blank')
}

// 分享到 WhatsApp
const whatsappShare = () => {
  // 分享文案内容,可以为空,咨询产品确定文案
  const text = '';
  // 分享的页面地址,通常是当前页面
  const url = encodeURIComponent('https://xxx.com');
  window.open(`https://wa.me/?text=${text}${url}`, '_blank')
}

// 分享到 Telegram
const telegramShare = () => {
  // 分享文案内容,可以为空,咨询产品确定文案
  const text = '';
  // 分享的页面地址,通常是当前页面
  const url = encodeURIComponent('https://xxx.com');
  window.open(`https://t.me/share/url?url=${url}&text=${text}`, '_blank')

Ins 暂不支持按钮点击分享,可全屏遮罩提示通过浏览器自带的分享功能

端内分享安全与体验优化:通过 MSDK 原生分享规避风险

为了保障用户体验及避免内置浏览器内浏览第三方社媒信息的潜在风险,我们必须区分端外(标准浏览器)和端内(App 内置浏览器/WebView)的分享行为。

1.端外(标准浏览器)分享策略

  • 实现方式: 采用标准的网页分享方案(如 Open Graph 标签结合 Web Share API 或直接跳转)。

  • 行为: 用户完成分享后,允许停留在第三方社媒页面。

2. 端内(App/WebView)分享策略(强制要求)

  • 技术机制: 网页端需通过 JSBridge 机制,调用 App 原生 SDK(MSDK - Mobile Service Development Kit 或其他命名)的分享能力。

  • 用户流程:

    1. 用户在内置浏览器中点击分享按钮。

    2. JSBridge 捕获事件,并调用 App 的 MSDK 分享接口。

    3. MSDK 拉起一个原生(Native)分享面板/界面,展示 Facebook、X 等海外社媒选项。

    4. 用户选择特定媒体后,MSDK 直接唤醒对应的外部 App(如 Facebook App)进行分享。

  • 结果与优势:

    • 风险规避: 分享完成后,用户停留在外部 App 或自动返回到主 App,内置浏览器中不会加载第三方社媒的网页内容。

    • 体验提升: 利用原生能力,分享体验更流畅、更可靠。

总结

海外游戏活动页在 App 内置浏览器中打开时,需强制启用 MSDK 原生分享。前端通过 JSBridge 协议调用 App 的分享能力,直接唤醒对应的第三方 App 进行分享,严禁在内置浏览器内通过网页跳转的方式,造成用户停留在社媒网页的风险。分享图片的方式还用很多种,博主这里只是分享的博主自己用过的!!!!

评论