share_weixin.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
  6. <meta name="HandheldFriendly" content="true"/>
  7. <meta name="MobileOptimized" content="320"/>
  8. <title>微信分享</title>
  9. <script type="text/javascript" src="../js/common.js"></script>
  10. <script type="text/javascript">
  11. var shares=null;
  12. var sweixin=null;
  13. var buttons=[
  14. {title:'我的好友',extra:{scene:'WXSceneSession'}},
  15. {title:'朋友圈',extra:{scene:'WXSceneTimeline'}},
  16. {title:'我的收藏',extra:{scene:'WXSceneFavorite'}}
  17. ];
  18. // H5 plus事件处理
  19. function plusReady(){
  20. updateSerivces();
  21. }
  22. if(window.plus){
  23. plusReady();
  24. }else{
  25. document.addEventListener('plusready', plusReady, false);
  26. }
  27. /**
  28. * 更新分享服务
  29. */
  30. function updateSerivces(){
  31. plus.share.getServices(function(s){
  32. shares={};
  33. for(var i in s){
  34. var t=s[i];
  35. shares[t.id]=t;
  36. }
  37. sweixin=shares['weixin'];
  38. }, function(e){
  39. outSet('获取分享服务列表失败:'+e.message);
  40. });
  41. }
  42. // 分享文本
  43. function shareText(){
  44. var msg={type:'text',content:text_content.value};
  45. sweixin?plus.nativeUI.actionSheet({title:'分享文本到微信',cancel:'取消',buttons:buttons}, function(e){
  46. (e.index>0)&&share(sweixin, msg, buttons[e.index-1]);
  47. }):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  48. }
  49. // 分享图片
  50. function shareImage(){
  51. var msg={type:'image'};
  52. if(!image_picture.realUrl){
  53. plus.nativeUI.alert('请选择要分享的图片!');
  54. return;
  55. }
  56. msg.pictures=[image_picture.realUrl];
  57. sweixin?plus.nativeUI.actionSheet({title:'分享图片到微信',cancel:'取消',buttons:buttons}, function(e){
  58. (e.index>0)&&share(sweixin, msg, buttons[e.index-1]);
  59. }):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  60. }
  61. // 分享网页
  62. function shareWeb(){
  63. var msg={type:'web',thumbs:['_www/logo.png']};
  64. if(!web_href.value){
  65. plus.nativeUI.alert('请输入分享网页的链接地址!');
  66. web_href.focus();
  67. return;
  68. }
  69. msg.href=web_href.value;
  70. if(!web_title.value){
  71. plus.nativeUI.alert('请输入分享网页的标题!');
  72. web_title.focus();
  73. return;
  74. }
  75. msg.title=web_title.value;
  76. if(!web_content.value){
  77. plus.nativeUI.alert('请输入分享网页的描述!');
  78. web_content.focus();
  79. return;
  80. }
  81. msg.content=web_content.value;
  82. sweixin?plus.nativeUI.actionSheet({title:'分享网页到微信',cancel:'取消',buttons:buttons}, function(e){
  83. (e.index>0)&&share(sweixin, msg, buttons[e.index-1]);
  84. }):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  85. }
  86. // 分享音乐
  87. function shareMusic(){
  88. var msg={type:'music',thumbs:['_www/logo.png']};
  89. if(!music_meida.value){
  90. plus.nativeUI.alert('请输入分享网页的链接地址!');
  91. music_meida.focus();
  92. return;
  93. }
  94. msg.media=music_meida.value;
  95. if(!music_title.value){
  96. plus.nativeUI.alert('请输入分享网页的标题!');
  97. music_title.focus();
  98. return;
  99. }
  100. msg.title=music_title.value;
  101. if(!music_content.value){
  102. plus.nativeUI.alert('请输入分享网页的描述!');
  103. music_content.focus();
  104. return;
  105. }
  106. msg.content=music_content.value;
  107. sweixin?plus.nativeUI.actionSheet({title:'分享音乐到微信',cancel:'取消',buttons:buttons}, function(e){
  108. (e.index>0)&&share(sweixin, msg, buttons[e.index-1]);
  109. }):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  110. }
  111. // 分享视频
  112. function shareVideo(){
  113. var msg={type:'video',thumbs:['_www/logo.png']};
  114. if(!video_media.value){
  115. plus.nativeUI.alert('请输入分享视频的链接地址!');
  116. video_media.focus();
  117. return;
  118. }
  119. msg.media=video_media.value;
  120. if(!video_title.value){
  121. plus.nativeUI.alert('请输入分享视频的标题!');
  122. video_title.focus();
  123. return;
  124. }
  125. msg.title=video_title.value;
  126. if(!video_content.value){
  127. plus.nativeUI.alert('请输入分享视频的描述!');
  128. video_content.focus();
  129. return;
  130. }
  131. msg.content=video_content.value;
  132. sweixin?plus.nativeUI.actionSheet({title:'分享音乐到微信',cancel:'取消',buttons:buttons}, function(e){
  133. (e.index>0)&&share(sweixin, msg, buttons[e.index-1]);
  134. }):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  135. }
  136. // 分享小程序
  137. function shareMiniProgram(){
  138. var msg={type:'miniProgram',title:'uni-app开发的小程序',thumbs:['_www/img/mp.png']};
  139. msg.content = '开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。';
  140. if(!mp_id.value){
  141. plus.nativeUI.alert('请输入分享小程序的标识!');
  142. mp_id.focus();
  143. return;
  144. }
  145. msg.miniProgram={id:mp_id.value,
  146. webUrl:'http://uniapp.dcloud.io/'};
  147. sweixin?share(sweixin, msg, {extra:{scene:'WXSceneSession'}}):plus.nativeUI.alert('当前环境不支持微信分享操作!');
  148. }
  149. // 分享
  150. function share(srv, msg, button){
  151. outSet('分享操作:');
  152. if(!srv){
  153. outLine('无效的分享服务!');
  154. return;
  155. }
  156. button&&(msg.extra=button.extra);
  157. // 发送分享
  158. if(srv.authenticated){
  159. outLine('---已授权---');
  160. doShare(srv, msg);
  161. }else{
  162. outLine('---未授权---');
  163. srv.authorize(function(){
  164. doShare(srv, msg);
  165. }, function(e){
  166. outLine('认证授权失败:'+JSON.stringify(e));
  167. });
  168. }
  169. }
  170. // 发送分享
  171. function doShare(srv, msg){
  172. outLine(JSON.stringify(msg));
  173. srv.send(msg, function(){
  174. outLine('分享到"'+srv.description+'"成功!');
  175. }, function(e){
  176. outLine('分享到"'+srv.description+'"失败: '+JSON.stringify(e));
  177. });
  178. }
  179. // 解除授权
  180. function cancelAuth(){
  181. outSet('解除授权:');
  182. if(sweixin){
  183. if(sweixin.authenticated){
  184. outLine('取消"'+sweixin.description+'"');
  185. }
  186. sweixin.forbid();
  187. }else{
  188. outLine('当前环境不支持微信分享操作!');
  189. }
  190. }
  191. // 拍照添加图片分享
  192. function imageCameraPicture(){
  193. outSet('拍照添加分享图片:');
  194. var cmr=plus.camera.getCamera();
  195. cmr.captureImage(function(p){
  196. plus.io.resolveLocalFileSystemURL(p,function(entry){
  197. image_picture.src=entry.toLocalURL();
  198. image_picture.realUrl=p;
  199. outLine('拍照图片:'+image_picture.realUrl);
  200. },function(e){
  201. outLine('读取拍照文件错误:'+e.message);
  202. } );
  203. },function(e){
  204. outLine('拍照失败:'+e.message);
  205. });
  206. }
  207. // 从相册添加图片分享
  208. function imageGalleryPicture(){
  209. outSet('从相册添加分享图片:');
  210. plus.gallery.pick(function(p){
  211. // 从相册返回的路径不需要转换可以直接使用
  212. image_picture.src=p;
  213. image_picture.realUrl=image_picture.src;
  214. outLine('选择图片:'+image_picture.realUrl);
  215. });
  216. }
  217. // 使用Logo图片分享
  218. function imageLogoPicture(){
  219. outSet('使用Logo分享图片:');
  220. var url='_www/logo.png';
  221. plus.io.resolveLocalFileSystemURL(url, function(entry){
  222. image_picture.src=entry.toLocalURL();
  223. image_picture.realUrl=url;
  224. }, function(e){
  225. outLine('读取Logo文件错误:'+e.message);
  226. });
  227. }
  228. </script>
  229. <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
  230. <style type="text/css">
  231. .sharecontent{
  232. width:80%;
  233. -webkit-user-select:text;
  234. border: 1px solid #6C6C6C;
  235. -webkit-border-radius: 2px;
  236. border-radius: 2px;
  237. }
  238. .sharepicture{
  239. width:30%;
  240. }
  241. .share_input{
  242. width:90%;
  243. -webkit-user-select:text;
  244. border: 1px solid #6C6C6C;
  245. -webkit-border-radius: 2px;
  246. border-radius: 2px;
  247. margin-bottom: .5em;
  248. }
  249. </style>
  250. </head>
  251. <body>
  252. <br/>
  253. <p class="heading">分享文本:</p>
  254. <textarea id="text_content" class="sharecontent" rows="3">我正在使用HBuilder开发移动应用,赶紧跟我一起来体验!</textarea>
  255. <div class="button" onclick="shareText()">分享文本</div>
  256. <hr color="#EEE"/><br/><br/>
  257. <p class="heading">分享图片:</p>
  258. <table style="width:100%;">
  259. <tbody>
  260. <tr>
  261. <td style="width:30%"><div class="button button-select" onclick="imageCameraPicture()">拍照</div></td>
  262. <td style="width:30%"><div class="button button-select" onclick="imageGalleryPicture()">相册选取</div></td>
  263. <td style="width:30%"><div class="button button-select" onclick="imageLogoPicture()">使用logo图</div></td>
  264. </tr>
  265. </tbody>
  266. </table>
  267. <img id="image_picture" class="sharepicture" src="../img/add.png"/>
  268. <br/>
  269. <div class="button" onclick="shareImage()">分享图片</div>
  270. <hr color="#EEE"/><br/><br/>
  271. <p class="heading">分享网页:</p>
  272. <table style="width:100%;">
  273. <tbody>
  274. <tr>
  275. <td style="width:20%;text-align:right;font-size:12px;">网页地址</td>
  276. <td style="width:65%">
  277. <input id="web_href" class="share_input" type="url" value="http://www.dcloud.io/" placeholder="请输入要分享的网页地址"/>
  278. </td>
  279. </tr>
  280. <tr>
  281. <td style="width:20%;text-align:right;font-size:12px;">网页标题</td>
  282. <td style="width:65%">
  283. <input id="web_title" class="share_input" type="url" value="DCloud-做最好的HTML5开发工具" placeholder="请输入要分享的网页地址"/>
  284. </td>
  285. </tr>
  286. <tr>
  287. <td style="width:20%;text-align:right;font-size:12px;">网页描述</td>
  288. <td style="width:65%">
  289. <input id="web_content" class="share_input" type="url" value="我正在使用HBuilder+HTML5开发移动应用,赶紧跟我一起来体验!" placeholder="请输入要分享的网页描述"/>
  290. </td>
  291. </tr>
  292. </tbody>
  293. </table>
  294. <p class="des">分享网页需要设置缩略图,否则可能会分享失败。</p>
  295. <div class="button" onclick="shareWeb()">分享网页</div>
  296. <hr color="#EEE"/><br/><br/>
  297. <p class="heading">分享音乐:</p>
  298. <table style="width:100%;">
  299. <tbody>
  300. <tr>
  301. <td style="width:20%;text-align:right;font-size:12px;">音乐地址</td>
  302. <td style="width:65%">
  303. <input id="music_meida" class="share_input" type="url" value="http://dl.stream.qqmusic.qq.com/C400000q83572f7Uea.m4a?vkey=A1C6E05C86AFC64CB41106C58CFA7777EDB5DF6F007885F311E6EF8FEFA3987E6642030D74D9246B70649F4051ACD534C392A147CFB0CEEB&guid=4414564731&uin=26156427&fromtag=66" placeholder="请输入要分享的音乐地址"/>
  304. </td>
  305. </tr>
  306. <tr>
  307. <td style="width:20%;text-align:right;font-size:12px;">音乐标题</td>
  308. <td style="width:65%">
  309. <input id="music_title" class="share_input" type="url" value="吴亦凡-Hold Me Down" placeholder="请输入要分享的音乐标题"/>
  310. </td>
  311. </tr>
  312. <tr>
  313. <td style="width:20%;text-align:right;font-size:12px;">音乐描述</td>
  314. <td style="width:65%">
  315. <input id="music_content" class="share_input" type="url" value="《Hold Me Down》(中文版),是吴亦凡新专辑的第二支中文单曲。通过轻快的节奏、朗朗上口的副歌,传递出夏日空气里弥漫的甜蜜气息。" placeholder="请输入要分享的音乐描述"/>
  316. </td>
  317. </tr>
  318. </tbody>
  319. </table>
  320. <p class="des">分享音乐需要设置缩略图,否则可能会分享失败。</p>
  321. <div class="button" onclick="shareMusic()">分享音乐</div>
  322. <hr color="#EEE"/><br/><br/>
  323. <p class="heading">分享视频:</p>
  324. <table style="width:100%;">
  325. <tbody>
  326. <tr>
  327. <td style="width:20%;text-align:right;font-size:12px;">视频地址</td>
  328. <td style="width:65%">
  329. <input id="video_media" class="share_input" type="url" value="http://download.dcloud.net.cn/liuvip.mp4" placeholder="请输入要分享的音乐地址"/>
  330. </td>
  331. </tr>
  332. <tr>
  333. <td style="width:20%;text-align:right;font-size:12px;">视频标题</td>
  334. <td style="width:65%">
  335. <input id="video_title" class="share_input" type="url" value="HBuilder-使用HTML5开发原生应用" placeholder="请输入要分享的音乐标题"/>
  336. </td>
  337. </tr>
  338. <tr>
  339. <td style="width:20%;text-align:right;font-size:12px;">视频描述</td>
  340. <td style="width:65%">
  341. <input id="video_content" class="share_input" type="url" value="同型号手机上HTML5+应用和原生应用的对比视频。" placeholder="请输入要分享的视频描述"/>
  342. </td>
  343. </tr>
  344. </tbody>
  345. </table>
  346. <p class="des">分享视频需要设置缩略图,否则可能会分享失败。</p>
  347. <div class="button" onclick="shareVideo()">分享视频</div>
  348. <hr color="#EEE"/><br/><br/>
  349. <p class="heading">分享小程序:</p>
  350. <table style="width:100%;">
  351. <tbody>
  352. <tr>
  353. <td style="width:20%;text-align:right;font-size:12px;">小程序标识</td>
  354. <td style="width:65%">
  355. <input id="mp_id" class="share_input" type="url" value="gh_33446d7f7a26" placeholder="请输入要分享的小程序标识"/>
  356. </td>
  357. </tr>
  358. </tbody>
  359. </table>
  360. <p class="des">分享小程序也需要设置标题、描述信息、缩略图(小于128K,宽高比5:4)等,否则可能会分享失败。分享的小程序还必须在微信开放平台绑定到应用的账号中,否则不能分享。</p>
  361. <div class="button" onclick="shareMiniProgram()">分享小程序</div>
  362. <hr color="#EEE"/>
  363. <div id="outpos"/>
  364. <div id="output">
  365. 微信分享支持分享文本、图片、网页、音乐(网络地址)、视频(网络地址)、小程序等。
  366. </div>
  367. </body>
  368. </html>