SDK_骁骑
SDK_骁骑
  • 发布:2014-07-29 18:16
  • 更新:2019-07-24 16:28
  • 阅读:116672

分享插件开发指南

分类:HTML5+

概述

5+引擎集成了分享功能,现在已经集成了“微信”、“QQ”、“新浪微博”分享SDK及OS自带的系统分享功能,用户可通过API调用接口分享消息到指定的分享平台。
用户在使用分享API时需要对应用进行配置,具体配置方法请参考“应用使用分享插件方法”。

注:调用系统分享无需向分享平台厂商申请appkey和配置SDK。

相关代码示例均在Hello H5+示例里的share.html里或hello uni-app的接口-分享里。

配置参数需要提交云端打包后才能生效,如果需要真机运行生效请使用自定义基座

开发指导

用户可以调用API分享信息。用户调用分享API分享消息时,设备是否存在相应的应用,调用的效果不同。如用户没有安装“新浪微博”等应用,HBuilder应用则会在应用内调用SDK的分享页面。如安装了“新浪微博”等应用,则调用API会调用该应用进行分享。
5+App使用分享API的一般步骤如下,uni-app另见专属开发文档

  1. 获取分享服务对象列表
    首先要在plusready事件之后获取分享列表,获取分享服务列表可以调用
    plus.share.getServices()接口。用户可以在回调中获取到分享服务对象的列表。用户需要保存返回的分享对象。在调用分享和授权接口时需要使用到该对象。
    plus.share.getServices(function(s) {  
    shares = ss;  
    for (var i in ss ) {  
        var s = ss[i];  
        var item = document.createElement("li");  
        item.setAttribute("class", "ditem");  
        item.setAttribute("onclick", (s.id == "weixin") ? "shareWeiXin(this.plusShare)" : "shareAction(this.plusShare)");  
        item.innerText = s.description;  
        item.plusShare = s;  
        list.appendChild(item);  
    }  
    }, function(e) {  
    alert("获取分享服务列表失败:" + e.message);  
    });
  2. 用户分享信息前需要对分享平台是否授权过进行判断,如果已经授权则可直接分享消息,如没有授权则需要调用已保存的分享对象的“authorize”接口对客户端进行授权。授权成功后再调用分享接口分享消息。
    function shareAction(s, ex) {  
    outSet("分享操作:");  
    if (!s) {  
        outLine("无效的分享服务!");  
        return;  
    }  
    if (s.authenticated) {  
        outLine("---已授权---");  
        shareMessage(s, ex);  
    } else {  
        outLine("---未授权---");  
        s.authorize(function() {  
            shareMessage(s, ex);  
        }, function(e) {  
            outLine("认证授权失败:" + e.code + " - " + e.message);  
        });  
    }  
    }
  3. 对客户端授权成功之后用户可以调用分享对象的“send”方法发送要分享的消息,用户创建JSON对象设置要分享的数据。
    用户如需要在分享信息中插入图片,可以在消息中添加pictures节点,属性值为图片地址,图片地址可以为网络地址或者本地图片地址。

    function shareMessage(s,ex){  
    var msg={content:sharecontent.value,extra:{scene:ex}};  
    if(pic&&pic.realUrl){  
        msg.pictures=[pic.realUrl];  
    }  
    
    s.send( msg, function(){  
        alert( "分享到\""+s.description+"\"成功! " );  
    }, function(e){  
        alert( "分享到\""+s.description+"\"失败: "+e.code+" - "+e.message );  
    } );  
    }
  4. 如用户需要取消授权可以调用分享对象方法“forbid”,取消分享服务。

    function cancelAuth(){try{  
    
    for ( var i in shares ) {  
        var s = shares[i];  
        if ( s.authenticated ) {  
            outLine( "取消\""+s.description+"\"");  
        }  
        s.forbid();  
    }  
    // 取消授权后需要更新服务列表  
    updateServices();  
    outLine( "操作成功!" );}catch(e){alert(e);}  
    }

向开放平台申请配置参数

在申请分享平台的appid/appkey等配置参数时应当注意,在填写iOS和Android包名时,一定要和App云端打包使用的包名一致,否则会导致分享失败。

新浪微博appkey申请步骤

微信appkey申请方法

HBuilderX中配置分享

从微信/QQ/微博开放平台申请获取配置参数后,需在HBuilderX中配置并提交云端打包才能生效。
老版本HBuilder配置界面有差异,逻辑是一样的,建议更新使用HBuilderX

配置使用分享模块

打开应用的manifest.json文件,在“模块权限配置”项中勾选“Share(分享)”:

配置分享通道及参数

勾选配置应用需要支持的分享平台,支持同时选择多个分享通道。

  • 微信
    在应用manifest.json文件的“SDK配置”页面,勾选“微信消息及朋友圈”项,并输入从微信开放平台申请的参数:


    appid:填写微信开放平台申请的appid。

  • QQ
    在应用manifest.json文件的“SDK配置”页面,勾选“分享到QQ好友”项,并输入从QQ开放平台申请的参数:


    appid:填写QQ开放平台申请的appid。

  • 微博
    在应用manifest.json文件的“SDK配置”页面,勾选“新浪微博”项,并输入从微博开放平台申请的参数:


    appkey:填写新浪微博开发网站申请的appkey;
    appsecret:填写新浪微博开发网站申请的appscret;
    redirect_url:填写申请新浪微博应用时填写的RUL。

常见问题

1.真机运行时新浪微博为什么分享失败
答:因为HBuilder应用在新浪开发平台还在审核中,目前仅有部分测试账号可成功 分享消息。如用户需要测试新浪微博的分享功能需要使用App云端打包生成安装 包测试。

2.“新浪微博”应用审核未通过时分享消息会失败,如何测试分享?
答: 用户需要在开发者账号下添加测试要使用的账号,具体使用步骤如下:

  • 登陆“新浪微博”开放平台
  • 找到要测试的应用,点击“应用信息”下的“测试信息”
  • 点击“编辑”添加测试用户的昵称。
  • 保存。

3.真机运行时分享的消息应用名为“HBuilder”如何修改?
答: 真机调试时应用内置的分享平台配置使用的应用名为“HBuilder”,真机联调时不能修改。用户需要使用App云端打包修改应用名称。

  1. android平台打包后为什么微信分享失败?
    答: 微信分享申请appkey时需要同时填写打包使用证书的MD5值,如果Android打包使用的证书和申请微信appkey时使用的证书不一致会导致微信分享失败,表现是微信登陆后点击“分享到朋友圈”,微信页面一闪就关闭
6 关注 分享
hum 蔡繁荣 Trust 笑着接受一切 pangjv@yahoo.com 任我皮

要回复文章请先登录注册

哈哈八百

哈哈八百

回复 广州博育科技:
那就这样吧,再爱到曲终人散
2019-07-24 16:28
广州博育科技

广州博育科技

回复 哈哈八百:
是这样的,微信改了分享机制,不分成功和失败,统一为成功,这个2018年10月份就改了
2019-07-24 14:47
馨以

馨以

你好,我要在app中分享其中一个页面到微信,想通过分享的链接直接进入应用(判断用户是否安装该app,已安装的话直接打开app中的该页面,没有的话打开下载该app的页面),这个该怎么实现呢?
2019-07-11 13:02
哈哈八百

哈哈八百

回复 15634987239@126.com:
没有,一直是这样,取消也返回success
2019-06-26 13:54
15634987239@126.com

15634987239@126.com

回复 哈哈八百:
你好! 你的解决了吗? 取消分享也是提示分享成功, 没有一个取消分享的标志啊
2019-06-26 10:12
1324198599@qq.com

1324198599@qq.com

回复 137813369@qq.com:
分享到QQ,需要在QQ互联管理中心授权什么东西吗
2019-06-25 20:48
1324198599@qq.com

1324198599@qq.com

QQ分享提示应用未正确授权
2019-06-25 20:47
哈哈八百

哈哈八百

忽然发现,如果吊起微信时候,没有分享,点了返回,也提示分享成功??
有遇到吗。大家
2019-06-14 11:13
34662366@qq.com

34662366@qq.com

shares = ss;
提示ss未定义,怎么解决啊
2019-06-03 16:39
2627077114@qq.com

2627077114@qq.com

自定义基座运行可以分享,但打包后不能分享是什么原因啊
2019-03-09 12:05
任我皮

任我皮

回复 1157763194@qq.com:
好的,感谢大佬
2018-12-29 11:35
1157763194@qq.com

1157763194@qq.com

回复 任我皮:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
在资源下载中点击安卓资源, 里面有 签名生成工具 下载后安装到手机 ,再打包安装你的项目(与签名生成工具同一个手机),然后在 签名生成工具 输入你的项目的包名 点击生成就可以
2018-12-29 11:30
Mike132

Mike132

回复 819115696@qq.com:
你好,你问题解决了么
2018-12-13 23:17
任我皮

任我皮

微信分享申请appkey时需要同时填写打包使用证书的MD5值, 这里边的MD5值怎么获得
2018-12-13 12:01
909461825@qq.com

909461825@qq.com

我的苹果打包之后分享 为啥就只有个标题呀,其他啥都没有,链接也没了
2018-11-24 15:00
179535117@qq.com

179535117@qq.com

回复 819115696@qq.com:
下载到本地 再分享
2018-09-19 17:18
595548443@qq.com

595548443@qq.com

微信分享出去的连接为什么变成纯文字了,之前一直都没问题的,
2018-09-15 15:59
keoy

keoy

仅分享图片网络地址qq错误码是地址参数错误,微信缺成功,怎么破
2018-09-06 10:37
keoy

keoy

回复 819115696@qq.com:
大兄弟问题解决了吗,求分享
2018-09-06 10:36
keoy

keoy

回复 15501125966@163.com:
大兄弟问题解决了吗,求分享
2018-09-06 10:36
965311197@qq.com

965311197@qq.com

求问,有人能加我qq教我微信登录授权的吗?QQ:3072408961
2018-09-03 11:32
1310814423@qq.com

1310814423@qq.com

啥也不说。我就像知道BundleID在哪里可以获取
2018-08-07 10:29
137813369@qq.com

137813369@qq.com

iOS分享到QQ后之后,QQ弹出提示框:“返回Hello H5”。返回的APP名称怎么变成了“Hello H5”了。
2018-06-28 00:44
16604690169@163.com

16604690169@163.com

不用hbuilder打包,分享这个api还能用吗
2018-06-20 16:47
包子君

包子君

回复 819115696@qq.com:
保存到本地
2018-05-15 19:10
178884875@qq.com

178884875@qq.com

问一下,坐等回答。。。那个分享的菜单可以自定义么?我现在点击微信分享,弹出 微信分享和朋友圈分享,下面还有个更多分享。。更多分享里的微信分享就不好使,,,求解答
2018-04-24 23:58
15501125966@163.com

15501125966@163.com

回复 819115696@qq.com:
大兄弟问题解决了吗,求分享
2018-04-02 15:27
819115696@qq.com

819115696@qq.com

pictures 为什么只支持本地图片 需要支持网络图片 应该怎么做
2018-03-16 17:22
wanghui

wanghui

支持分享微信小程序么?
2018-03-16 13:30
Angelbeats

Angelbeats

回复 Angelbeats:
此问题可删,已咨询腾讯客服==
2017-12-11 11:27
Angelbeats

Angelbeats

请问在QQ开放平台 企业版ios 分享配置界面, AppStore ID 是必填字段,但是企业版不上线商店没有这个ID,这个腾讯的开放平台怎么配置???企业证书的app不能用?
2017-12-11 11:12
CherryWxy

CherryWxy

联机的时候都可以分享,但是打包以后微信提示分享失败,新浪提示未授权,这是什么原因
2017-12-07 14:51
WZ

WZ

新浪微博一直不能分享。真机运行的话。会出现授权页,但是返回回来会分享失败,打包测试三星点新浪微博分享会闪退,其他手机直接授权失败,登录页都不会出现,还有就是上面说的新浪微博的应用的appkey的ID,和新浪微博”分享平台填写的BundleID,这两个是在哪里看的?我申请的时候没有看到这个东西呀?谁有可以成功分享到新浪微博的例子。可不可以分享一下,求救呀
2017-11-24 09:30
xm3530@126.com

xm3530@126.com

求问,我们出现的现象是“android平台打包后为啥微信分享失败?”
但是我们的情况是做了两个定制APP,分享配置全部是按照要求来做的。但是当手机里单独安装其中一个APP时,分享成功。但同时再去安装第二个APP时,第二个APP里分享失败。但如果将第二个APP安装到其他手机。则可以分享成功,请问这是什么原因呢!配置上应该没有错误,因为使用的是DCloud默认证书,两个APP使用的应用签名一致,包名不同。
2017-10-16 10:05
xm3530@126.com

xm3530@126.com

http://ask.dcloud.net.cn/question/7628

看这个,有官方回答哦!注意:应用签名,如果使用DCloud默认证书,则应该设置值为“59201CF6589202CB2CDAB26752472112”;
2017-10-16 09:25
妙妙

妙妙

调用系统分享功能也要配置吗,比如说发送手机短信。现在是没有配置sdk,就打包的时候不能添加share模块了
2017-08-06 21:34
xm3530@126.com

xm3530@126.com

回复 穿布鞋的coder:
恩恩,就是你说的这样填,分享之后出现闪现失败,其实就是在微信开发者平台里填写的签名不对。我用的公司的开发者账号,一直闪现,然后仔细一看公司的管理人员填写的信息里签名少了一个数字6,当时和他说不对了,他还不信。然后直接到他电脑上改了。立马就可以发送分享了。
2017-08-04 14:20
张德帅

张德帅

回复 failedtocopy:
我也是这样的
2017-07-11 12:02
Native_O

Native_O

具体的分享代码可以参考这篇文章http://blog.csdn.net/zhuming3834/article/details/51706256
2017-07-04 10:23
Native_O

Native_O

回复 zhuhong02199@163.com:
http://blog.csdn.net/zhuming3834/article/details/51706256
2017-07-04 10:22
Native_O

Native_O

没有判断是否安装某个应用,比如分享到微信,如果没有安装微信,则点击分享没有任何反应?已安装的情况下都可以分享成功,微博则可以通过网页进行分享,微信和QQ不能通过网页分享,只能通过客户端!
2017-07-04 10:18
zhuhong02199@163.com

zhuhong02199@163.com

回复 多多1:
大神,ios和安卓QQ分享咋弄得呀?它这上面没写呀
2017-03-31 11:14
zhuhong02199@163.com

zhuhong02199@163.com

QQ怎么分享呢?没写呀
2017-03-31 11:13
292819829@qq.com

292819829@qq.com

回复 2290060594@qq.com:
能加我QQ教我一下怎么弄分享的吗?
2017-03-06 17:54
2290060594@qq.com

2290060594@qq.com

回复 多多1:
我的也是这种情况,你现在解决了吗,打包后就无法分享了
2017-03-06 17:06
多多1

多多1

有大神在吗? 安卓QQ分享失败 真机测试成功,但打成测试包安装就不可以了 提示应用不存在
2017-02-16 16:41
多多1

多多1

回复 sunrise52java:
你现在找到了吗 我也遇到这个问题了 我没找到使用第三方插件这个选项
2017-02-16 16:18
315579792@qq.com

315579792@qq.com

解决了,包名什么的都要和打包时填写的一致,然后生成的签名信息配置好就行了
2016-12-20 09:42
丿白开水

丿白开水

回复 315579792@qq.com:
你的问题解决吗?
2016-12-14 11:18
315579792@qq.com

315579792@qq.com

我生成的证书和微信开发平台的证书签名都是一致的还是出现闪退的问题,这到底是什么原因啊?
2016-11-22 17:06
冰山

冰山

回复 底浪岩:
你写死吧,不要调用这个值
2016-08-11 10:47
HGDQ

HGDQ

前几天写的分享《HTML5 WebApp开发(七)微信/QQ/新浪分享》
http://blog.csdn.net/zhuming3834/article/details/51706256
2016-06-20 21:38
大霸王

大霸王

这里面其中一个关键的东西,就是应用签名,这个签名要是搞错了,就会出现各种错误。
2016-05-13 17:46
底浪岩

底浪岩

这个sharecontent.value 是怎么获得 id=“sharecontent”的值的。
2016-03-10 17:15
damdmen

damdmen

感觉这么集成太累啊。。。应该把友盟的那个分享组件集成下。。。这样直接统计功能也有了

看了他们的文档,只有codova的,没有mui。。。

官方达达们,能做么?@DCloud_MUI_FXY @DCloud_App_Array @DCloud_heavensoft
2016-01-31 18:43
Luyc

Luyc

什么文档,一个回复都没有,这框架不更新了么,群里没人回,论坛里也没人回。
2015-10-11 21:47
炸鸡排超人

炸鸡排超人

为什么我勾选了 share,打包后还是说我未添加模块share??
2015-09-10 14:12
炸鸡排超人

炸鸡排超人

我很好奇 在代码视图配置SDK的时候 是有qq好友该选项的
可是我找遍demo也没看到 有分享到QQ好友呀.
2015-09-07 17:01
sunrise52java

sunrise52java

回复 小五:
manifest.json文件一打开就会而看到“第三方插件”吗?为什么我的没有。。。好奇怪
2015-08-27 19:14
sunrise52java

sunrise52java

我的manifest.json 文件里面没有第三方插件,请问这是怎么回事
2015-08-27 19:13
穿布鞋的coder

穿布鞋的coder

回复 failedtocopy:
包名是你发布前的包名吗,如:io.dcloud.H5D6A9D02,如果不是那生成AppID会错误,签名用这个59201CF6589202CB2CDAB26752472112,包名用类似的io.dcloud.H5D6A9D02才可以
2015-08-26 09:09
failedtocopy

failedtocopy

可能不能用这个,如果大家都用这个去申请的话那就不是唯一的签名了
2015-07-06 10:57
sunnidy

sunnidy

回复 failedtocopy:
同问。我也出现这个问题、
2015-07-06 10:52
failedtocopy

failedtocopy

用公用的那个 “证书的MD5值” 打包后为啥不能分享呢 , 现象和上面文档说的一样 “ 微信页面一闪就关闭 ”
2015-07-02 22:47
laosan02025

laosan02025

按照说明配置后,debug版本的微信分享正常,一旦应用签名后就不能分享了,点击分享无任何反应,正常情况下应该会弹一个微信的提示框;签名验证也是正确的,用微信分享demo测试是正常能分享的
2015-04-29 10:31
小五

小五

iOS分享到微博成功,Android分享到微博提示10007
2015-01-07 14:52