分享

简介: 分享

点击分享唤起App自带分享组件,点击分享外链可以唤起App进入指定页面

唤起分享组件 vipkid://sharetitle,desc,imgUrl,link必须传,为空时会显示null

const shareToFacebook = (params) => {
  const desc = encodeURIComponent(params.desc);
  const title = encodeURIComponent(params.title);
  const imgUrl = encodeURIComponent(params.imgUrl);
  const link = encodeURIComponent(params.link);
  let url = `vipkid://share?title=${title}&desc=${desc}&imgUrl=${imgUrl}&link=${link}`;
  window.location.href = url;
};

1、第一种:分享出去的链接直接跳转到落地页

handleShare() {
  const { protocol, host } = window.location;
  const h5Url = encodeURIComponent(`${protocol}//${host}/account/quiz?sign=${this.shareSign}&channel_id=share_task`); // 落地页
  const params = {
    title: 'I would like to invite you to try VIPQuiz!',
    desc: 'Do you know more about VIPKid than the mysterious Odin?',
    imgUrl: 'https://img.vipkidstatic.com/ter/cms/img/2020/10/14/16/AbwS1602664456094quiz-share.png',
    link: `vkteacher://h5container/browser?url=${h5Url}`
  }
  shareToFacebook(params);
}

2、第二种:分享出去的链接需要唤起App并跳转到落地页

handleShare() {
  const { protocol, host } = window.location;
  const h5Url = encodeURIComponent(`${protocol}//${host}/account/quiz?sign=${this.shareSign}&channel_id=share_task`); // 落地页
  const appUrl = encodeURIComponent(`vkteacher://h5container/browser?url=${h5Url}`);
  const params = {
    title: 'I would like to invite you to try VIPQuiz!',
    desc: 'Do you know more about VIPKid than the mysterious Odin?',
    imgUrl: 'https://img.vipkidstatic.com/ter/cms/img/2020/10/14/16/AbwS1602664456094quiz-share.png',
    link: `${protocol}//${host}/account/link?app=${appUrl}` // account/link 检测是否安装App 可下载 或 唤起App
  }
  shareToFacebook(params);
}

需要注意的几点:

  1. url支持 type 参数,取值为 system 时,唤起 【手机系统】自带分享组件, 默认唤起【App】分享组件。
  2. facebook启用分享功能之前,需要使用开放图谱标签来标记页面的 HTML。meta标签的这些属性包括我们在用户分享文章时具体想要呈现的与文章有关的描述性元数据。这有助于确保当用户通过您的网站分享内容时,您的内容将以您预期的方式显示在 Facebook 上,并包含标题、说明以及缩略图。即 facebook 分享参数是从 link 页面的 mata中拿,不是从vipkid://share?title=${title}&desc=${desc}&imgUrl=${imgUrl}&link=${link}中拿。

即在 link 页面 设置如下 meta,第一种分享方式直接在落地页写,第二种分享方式需要在account/link页面写

head() {
  return {
    meta: [
      { property: 'og:title', content: '#I would like to invite you to try VIPQuiz!' },
      { property: 'og:description', content: 'Do you know more about VIPKid than the mysterious Odin?' },
      { property: 'og:image', content: 'https://img.vipkidstatic.com/ter/cms/img/2020/10/14/16/AbwS1602664456094quiz-share.png' },
    ]
  };
}

!!!注意了,搞完上面的,有可能还有问题 -> 假如nuxt.config.js中配置了同样的meta,会显示nuxt.config.js配置的内容

【解决方案】[Nuxt-head]说了,为了避免子组件中的 meta 标签不能正确覆盖父组件中相同的标签而产生重复的现象,建议利用 hid 键为 meta 标签配一个唯一的标识编号。如下,link 页面 和 nuxt.config.jstitle, image, description均加上hid,值和 property 相同。

目录
相关文章
|
JavaScript PHP 开发工具
web如何将动态内容分享到Facebook,Twitter等社交平台
web如何将动态内容分享到Facebook,Twitter等社交平台
1630 0
web如何将动态内容分享到Facebook,Twitter等社交平台
|
4月前
|
数据采集 XML 监控
Google Search Console 做SEO分析之“已发现未编入” 与 “已抓取未编入” 有什么区别?
在 Google Search Console (GSC) 中,“已发现 - 尚未编入索引”(Discovered - currently not indexed) 和 “已抓取 - 尚未编入索引”(Crawled - currently not indexed) 是两种不同的状态,如果你的站点也有这两种状态就需要注意优化了。
202 0
|
消息中间件
RabbitMQ 实现消息队列延迟
RabbitMQ 实现消息队列延迟
624 0
|
前端开发 应用服务中间件 网络安全
前端项目部署
前端项目部署
1408 0
|
Ubuntu 安全 Linux
Linux必备|如何重置忘记的 Root 密码
Linux必备|如何重置忘记的 Root 密码
2240 7
|
弹性计算
阿里云带宽计费模式按固定宽带和按使用流量区别对比及选择方法
阿里云服务器公网IP带宽计费方式分为按固定宽带和按使用流量,按固定宽带和按使用流量有什么区别?阿里云公网带宽计费模式如何选择?需要根据大家实际的应用场景来选择
6019 0
阿里云带宽计费模式按固定宽带和按使用流量区别对比及选择方法
|
存储 监控 数据可视化
手把手教你如何快速搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢? ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
|
数据采集 存储 安全
从线下审批到在线审批 | 学习笔记
快速学习从线下审批到在线审批,介绍了从线下审批到在线审批系统机制, 以及在实际应用过程中如何使用。
从线下审批到在线审批 | 学习笔记
|
算法 Java 测试技术
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
686 0
【DVCon-US-2020】基于多线程UVM测试平台的仿真加速方法
|
自然语言处理
Adobe Photoshop2023最新版本百度云网盘一键安装下载教程
Adobe Photoshop2023最新版本百度云网盘一键安装下载教程
3993 0