适用H5+环境,能够使用plus方法的移动app中

/**
* Created by HBuilder.
* User: tyx
* Date: 2018-11-21
* Time: 17:28:51
*/ /**
* 初始化分享服务
*/
//---------------H5 plus事件处理
function plusReady(){
updateSerivces(); //更新分享服务
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}
/**
* 更新分享服务
*/
var shares=null;
var sweixin=null; //微信分享
var sqq=null; //QQ分享
var sweibo=null; //新浪微博分享
//------------获取服务列表
function updateSerivces(){
plus.share.getServices(function(s){
shares={};
for(var i in s){
var t=s[i];
shares[t.id]=t;
}
console.log(shares);
sweixin=shares['weixin'];
sqq=shares['qq'];
sweibo=shares['sinaweibo'];
}, function(e){
console.log('获取分享服务列表失败:'+e.message);
});
}
/**
* 调用分享函数
*/
/**
* 分享时传入的必要参数
* @param {string} web_state 分享类型(weixin 微信;qq qq分享;weibo 微博分享)
* @param {function} web_success 成功回调
* @param {function} web_error 失败回调
* @param {string} web_href 分享链接
* @param {string} web_title 分享标题
* @param {string} web_content 分享描述(选填)
* @param {string} weixin_bottons 分享微信渠道(分享微信时必填)(contancts 我的好友;moments 朋友圈)
* @param {string} weixin_pic 分享微信logo图(选填)
* @param {string} weibo_pic 分享微博图片地址(分享微博时选填)
* @param {string} weibo_call 分享时@微博用户(选填)
* @return {string}
*/
//-------------传入分享讯息
function changeShare(web_state,web_success,web_error,web_href,web_title,web_content,weixin_buttons,weixin_pic,weibo_pic,weibo_call,web_true,web_false){
//分享完毕后的回调函数判断
if(typeof web_success === "function") {
var web_true=web_success;
}else{
var web_true=function(){console.log("----发表成功------")};
}
if(typeof web_error === "function") {
var web_false=web_error;
}else{
var web_false=function(){console.log("----发表失败------")};
}
if(!web_state){
return "分享类型参数不全,缺少web_state";
}
if(web_state == 'weixin'){
//验证参数完整性
if(!web_href || !web_title || !weixin_buttons){
return "微信分享缺少必要参数,web_href web_title weixin_buttons";
}
//微信分享渠道
if(weixin_buttons == "contancts"){
var web_buttons={title:'我的好友',extra:{scene:'WXSceneSession'}};
}else if(weixin_buttons == "moments"){
var web_buttons={title:'朋友圈',extra:{scene:'WXSceneTimeline'}};
}else{
return "微信分享参数有误,weixin_buttons";
}
//调用微信分享函数
sweixin_shareWeb(web_href,web_title,web_content,web_buttons,weixin_pic,web_true,web_false);//调用微信分享功能
}else if(web_state == "qq"){
//验证参数完整性
if(!web_href || !web_title){
plus.nativeUI.alert('qq分享缺少必要参数,web_href web_title');
return "qq分享缺少必要参数,web_href web_title";
}
//调用qq分享函数
sqq_shareText(web_href,web_title,web_content,web_true,web_false); }else if(web_state == "weibo"){
if(!web_title){
return "微博分享缺少必要参数,web_title";
}
if(!weibo_call){
weibo_call='';
}
if(!weibo_pic){
weibo_pic='';
}
sweibo_shareImage(web_href,web_title,weibo_pic,weibo_call,web_true,web_false);//调用微博分享功能
}
} /**
* 处理分享方向
*/
//-----------微信分享
// 分享网页
function sweixin_shareWeb(web_href,web_title,web_content,web_buttons,weixin_pic,web_true,web_false){
var sweixin_msg={type:'web',thumbs:[weixin_pic]};
sweixin_msg.href=web_href;
sweixin_msg.title=web_title;
sweixin_msg.content=web_content;
sweixin?share(sweixin, sweixin_msg, web_buttons,web_true,web_false):plus.nativeUI.alert('当前环境不支持微信分享操作!');
}
//-----------QQ分享
// 分享文本
function sqq_shareText(web_href,web_title,web_content,web_true,web_false){ var sqq_msg={type:'text'};
sqq_msg.title=web_title;
sqq_msg.content=web_content;
sqq_msg.href=web_href;
sqq?share(sqq,sqq_msg,'',web_true,web_false):plus.nativeUI.alert('当前环境不支持QQ分享操作!');
}
//-----------微博分享
// 分享图片
function sweibo_shareImage(web_href,web_title,weibo_pic,weibo_call,web_true,web_false){
var sweibo_msg={type:'image'};
if(web_href){
sweibo_msg.content=web_title+' '+weibo_call+' 链接地址是'+web_href;
}else{
sweibo_msg.content=web_title+' '+weibo_call;
}
sweibo_msg.pictures=[weibo_pic];
sweibo?share(sweibo, sweibo_msg,'',web_true,web_false):plus.nativeUI.alert('当前环境不支持新浪微博分享操作!');
} /**
* 链接分享渠道
*/
//-----------------分享
function share(srv,msg,button,web_true,web_false){
console.log('分享操作:');
if(!srv){
console.log('无效的分享服务!');
return "无效的分享服务";
}
button&&(msg.extra=button.extra);
// 发送分享
if(srv.authenticated){
console.log('---已授权---');
doShare(srv, msg,web_true,web_false);
}else{
console.log('---未授权---');
srv.authorize(function(){
doShare(srv, msg,web_true,web_false);
}, function(e){
console.log('认证授权失败:'+JSON.stringify(e));
plus.nativeUI.alert('认证授权失败,请更新客户端');
});
}
}
//---------------发送分享
function doShare(srv, msg,web_true,web_false){
console.log(JSON.stringify(msg));
srv.send(msg, function(){
console.log('分享到"'+srv.description+'"成功!');
web_true();
}, function(e){
console.log('分享到"'+srv.description+'"失败: '+JSON.stringify(e));
web_false();
});
}

[h5+api]移动app开发用到的微信好友,朋友圈,qq好友,新浪微博分享合集的更多相关文章

  1. H5分享到微信好友朋友圈QQ好友QQ空间微博二维码

    这是分享按钮: <button onclick="call()">通用分享</button> <button onclick="call(' ...

  2. 基于mui的H5套壳APP开发web框架分享

    前言 创建一个main主页面,只有主页面有头部.尾部,中间内容嵌入iframe内容子页面,如果在当前页面进行跳转操作,也是在iframe中进行跳转,而如果点击尾部按钮切换模块.页面,那就切换ifram ...

  3. H5+ 分享到微信、朋友圈代码示例

    h5+分享到微信.朋友圈代码示例 在使用分享功能的时候会莫名的分享失败,debug时发现是图片过大的问题. 图片过大时ios平台上返回错误码-8,安卓上返回错误码-3(我测试是这样) 因此如果第一次分 ...

  4. APP分享多张图片到微信和朋友圈

    产品需求: 微信分享多图至好友,朋友圈.由于微信禁用了分享9图至朋友圈功能,这里分享微信只是将图片保存至本地,具体让用户手动分享. 问题分析: 微信没有提供分享多图的SDK,因此我们实现调用系统自带的 ...

  5. 如何通过Mock API提高APP开发效率?

    APP开发过程中,如果可以在客户端的正常项目代码中,自然地(不影响最终apk)添加一种模拟服务器数据返回的功能,这样就可以很方便的在不依赖服务器的情况下展开客户端的开发. Mock API提供了这一问 ...

  6. 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友

    关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可

  7. 2016开发一个app需要多少钱?app开发需要哪些成本-app开发问题汇总-广州达到信息

    作为一个APP开发从业者,被外行的朋友们问及最多的问题是,"做一个网站需要多少钱?"或者"开发一个APP需要多少钱?".作为开发过完整网站项目和手机APP的人, ...

  8. H5+混合移动app应用开发——开篇

    前言 经过2个多月的艰苦奋斗,app的第一个版本已经快完工了,期间遇到了太多的坑,作为一个喜欢分享的人,我当然不会吝啬分享这爬坑历程.不要问我有多坑,我会告诉你很多,很多..... 过去一直从事.ne ...

  9. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

随机推荐

  1. javaweb+spring 项目集成异常的处理

    在web项目开发中,一个系统应该要考虑到异常情况的处理,并且应该当异常发生时应该需要记录相应的异常日志,对于用户而言则不能直接抛出异常,需要考虑到用户的体验: 以下就介绍基于spring框架的基础上的 ...

  2. 关于JSON基础的总结

    本文总结自百度百科 JSON 语法规则 JSON 语法是 JavaScript 对象表示语法的子集. 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数 ...

  3. Java之集合(十二)TreeMap

    转载请注明源出处:http://www.cnblogs.com/lighten/p/7411935.html 1.前言 本章介绍Map体系中的TreeMap,顾名思义,这个是一个树结构的Map.Tre ...

  4. ruby:TypeError: 对象不支持此属性或方法(<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolink)

    我整理了一下 目前有三种方法,我是windows 7 64位, 答案中很多人是win8也成功了. 方法1:找到当前项目下 app/javascripts/applications.js  把里面的// ...

  5. SpringAOP-基于@AspectJ的简单入门

    一.AOP的基本概念: 连接点(Jointpoint):表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化.方法执行.方法调用.字段调用或处理异常等等,Spring只支持方法执行连接点,在A ...

  6. PHP SNOOPY采集类 总结

    1.基础教程 Snoopy的一些特点: 1抓取网页的内容 fetch 2 抓取网页的文本内容 (去除HTML标签) fetchtext 3抓取网页的链接,表单 fetchlinks fetchform ...

  7. R语言---- 数据的基本运算

    一.基本运算符号 1.基本数学计算 +.-.*./.^.%%(求模).%/%(整除)注意:求模运算两边若为小数,则整数和小数部分分别求模.例:5.6%%2.2 2.比较运算 >.<.> ...

  8. MVC中使用Castle.Windsor

    我在MVC中使用Castle.Windsor是这样用的. 首先在UI层安装Install Castle.Windsor 在App_Start中增加一个类WindsorActivator,用于注册和销毁 ...

  9. Aviator 表达式求值引擎开源框架

    简介¶ Aviator是一个高性能.轻量级的java语言实现的表达式求值引擎,主要用于各种表达式的动态求值.现在已经有很多开源可用的java表达式求值引擎,为什么还需要Avaitor呢? Aviato ...

  10. https在电子邮件安全解决方案

    电子邮件安全解决方案 电子邮件已经成为现代人最重要和最不可缺少的个人生活和工作的通信工具之一,特别是企业应用.但是,您也许不知道,所有电子邮件系统都是明文传输,也就是说:您的每一个重要邮件都是在以“明 ...