第三方分享( 微信分享、qq 分享、微博分享 )常见问题


快应用分享包含如下 2 种方式:

  1. 界面交互 → 分享 import share from '@system.share' 这个分享主要用于不同 APP 之间的数据传递,因此归到“界面交互”中,可以传递文本数据或文件据

  2. 第三方服务 → 第三方分享 import share from '@service.share'

这个分享主要用于将快应用中的信息通过社交工具(微信、QQ、新浪微博等)分享出去,可以以图文、纯文字、纯图文、音乐、视频等形式进行分享,分享前需要在 manifest.json 的 features 中对 service.share 进行 appSign、wxkey、qqkey、sinakey 等参数参数的设置,否则分享出去的内容都将以纯文字方式进行展示。

(微信分享时的 appSign 和 wxkey 设置可以参照关于微信分享的实现,亲测可用)

[补充说明] appSign 其实就是对应快应用开发项目 sign\release\certificate.pem 文件中 -----BEGIN CERTIFICATE----- 与 -----END CERTIFICATE----- 中间的那段(如果复制过来有回车换行符,请删除换行符) 马甲 APP 微信开放平台上的移动应用(我们称之为马甲 APP)可以使用 HBuilder 来创建,包名与快应用包名一致,签名也一致,签名可以用 OPENSSL 将 pem 签名转文件换为 pk12 签名文件,再用 java 的 keytool 工具将 pk12 转换为 keystore 签名文件。马甲 APP 无需上架到各大 APP 市场。

第三方分享时需要 rom 支持,部分厂商现有的 rom 还没有进行第三方分享适配,通过第三方分享出去的信息暂时只能以纯文字形式展示,甚至压根无法进行分享(总结:rom 决定快应用能否实现第三方分享应有的效果,快应用渲染器决定第三方分享功能是否可以调起分享功能。)。 分享虽然初衷用于数据传递,但是将数据传递到社交 APP 上等同于进行分享,因此在 rom 不支持第三方分享的设备上,可以使用界面交互中的分享功能进行文本分享。

像华为就属于 rom 未适配第三方分享的厂商,已发布的快应用在华为设备上,如果通过第三方分享进行分享,系统是没有响应的。你可以通过 system.device 来判断手机厂商再选择分享方式,但是这样的弊端是得去摸索出还有哪些厂商也不支持第三方分享,而且一旦不支持的厂商将来对 rom 进行适配了,你的快应用程序还是会忽略第三方分享这种支持图文分享的方式。

如果你只想进行文字分享,建议你直接使用界面交互中的分享功能 system.share,这个比较通用。

如果你想进行图文分享,建议你混用 2 种分享方式:

import share from "@system.share";
import shareSe from "@service.share";

try {
  shareSe.share({
    shareType: 0,
    title: "图文标题",
    summary: "图文内容",
    imagePath: "/img/图文消息图片.jpg",
    targetUrl: "http://图文消息链接地址",
    success: function(data) {
      console.log("handling success");
    },
    fail: function(data, code) {
      console.log(`handling fail, code = ${code}`);
    }
  });
} catch (err) {
  share.share({
    type: "text/webviewhtml",
    data: "分享的文字消息",
    success: function(data) {
      console.log("handling success");
    },
    fail: function(data, code) {
      console.log(`handling fail, code = ${code}`);
    }
  });
}

results matching ""

    No results matching ""