去前段时间公司的app需要做微信分享,然后网上找的教程,在做的时候发现网上的教程各种坑,现在将做得过程分享出来

在做功能之前你需要做几步预备工作,

1.安装jdk,jre,并加入全局变量【这个网上还是比较正确的,可以在网上查一下,但是win10需要特别注意,全局变量不能使用%JAVA_HOME%,需要使用绝对路径,当时安装的时候发现的,折腾了好长时间】

2.发布release版本app【ionic build android -release】,生成签名

生成证书和绑定签名的步骤,可参考http://jingyan.baidu.com/article/642c9d34eaeeda644a46f7f9.html

(1)生成证书

keytool -genkey -v -keystore ****.keystore -alias ***.keystore -keyalg RSA -validity 36500【*表示你输入的名字,具体什么意思需要到网上查一下】

(2)签名app

jarsigner -verbose -tsa https://timestamp.geotrust.com/tsa -keystore ****.keystore -signedjar ****.apk  platforms/android/build/outputs/apk/android-release-unsigned.apk ****.keystore

【****.keystore】这个表示的是你上个步骤生成的证书名称,【****.apk】表示你签名过app的名称

3.申请appid,网上只是说了需要申请具体步骤比较模糊,可参考http://www.cnblogs.com/Kummy/p/5200176.html

(1)将你签名过的app安装到手机【必须是release生成的并且是签名过的】

(2)下载app:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android221cbf.apk

该app主要是获取申请appid需要使用的,该app获取时需要程序包名【ionic根目录下config.xml <widget id="***.***.***"】填写进去可以直接获取

(3)到微信开放平台授权,需要包名和签名【上边获取的和config.xml文件里边的id】

4.安装插件 ionic plugin add cordova-plugin-wechat --variable wechatappid=微信appid   

github地址为https://github.com/xu-li/cordova-plugin-wechat

appid为开放平太申请的id

5.打开你的项目下边微信分享插件,找到plugin.xml文件,可以看到这段文字

<!-- add this to your config.xml -->
<!-- <preference name="WECHATAPPID" value="YOUR_WECHAT_APP_ID_HERE" /> -->

按照格式将<preference name="WECHATAPPID" value="YOUR_WECHAT_APP_ID_HERE" />添加到confog.xml文件下

如果不添加的话会造成分享不能使用

分享代码如下

// 分享到朋友圈
$scope.share_moment = function() {
Wechat.share({
message: {
title: ’‘,
description: '‘,
thumb: ’‘,
media: {
type: Wechat.Type.WEBPAGE,
webpageUrl: "’‘
}
},
scene: Wechat.Scene.TIMELINE // share to Timeline
}, function() {
alert("Success");
}, function(reason) {
alert("Failed: " + reason);
});
}; // 分享到朋友
$scope.share_friend = function() {
Wechat.share({
message: {
title: '',
description: '',
thumb: '',
media: {
type: Wechat.Type.WEBPAGE,
webpageUrl:''
}
},
scene: Wechat.Scene.SESSION // share to SESSION
}, function() {
alert("Success");
}, function(reason) {
alert("Failed: " + reason);
});
}

  在实际过程中可能会出现以下问题

app分享之后能能回到分享前的界面,app会重新启动

解决方法在config.xml文件下添加

<preference name="AndroidLaunchMode" value="singleTask" />

如果还不想可能是你本地的环境问题,观察生成app包的时候是不是有问题

我的解决方法是

ionic platform remove android

ionic platform app android

重新生成即可

ionic 微信分享值各种坑的更多相关文章

  1. 关于MUI集成微信分享遇到的坑

    今天聊一下MUI这个框架吧! 首先,用这个框架也有很长一段时间了,项目不同,涉及到的功能也有不同,之前没有涉及到微信分享相关的内容!今天,遇到了,也解决了,分享出来. 下面是手顺: 1.分享的代码是参 ...

  2. unity探索者之微信分享回调

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/7574561.html 上一遍讲了微信分享的一些坑,然后就忘了回调这事儿了,今天补上 ...

  3. url带#号,微信授权,微信分享那些坑

    微信授权的方法是,在项目里面配置拦截器(此处可以参考各个框架的拦截器)没有拦截器也可以,反正意思就是跳转到项目里的时候判断微信环境 如果是微信环境, 判断微信环境的方法是 var ua = windo ...

  4. ionic单页面应用中微信分享的问题总结

    首先说一下 ionic 是单页面应用,也就是说整个项目就有一个index.html, 那么问题就就来了, 如果我们不同的页面要分享给大家的是不同的链接和图片,应该怎么去做呢? 这就是我们今天要总结的东 ...

  5. 使用JSSDK集成微信分享遇到的一些坑

    h5项目中需要集成微信分享,以实现自定义标题.描述.图片等功能.结果遇到了很多坑. 准备工作 务必详细阅读微信JS-SDK说明文档 需要后端支持 强烈建议下载使用微信web开发者工具 按文档配置好公众 ...

  6. vue history模式 ios微信分享坑

    vue history模式 ios微信分享坑 问题分析:因为苹果分享会是调取签名失败是因为:苹果在微信中浏览器机制和安卓不同,有IOS缓存问题,和IOS对单页面的优化问题,通俗点说安卓进行页面跳转分享 ...

  7. vue history模式 ios微信分享 踩过的坑

    背景:教育项目,整体依赖于微信环境,涉及到微信分享.微信二次分享 问题:vue使用history模式在iso微信下分享设置出错(签名认证错误.分享设置失败) 问题发现路径 1.按照微信公众号官方文档设 ...

  8. vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理

    最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式: 该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端 ...

  9. [转] Android:微信授权登录与微信分享全解析

    https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...

随机推荐

  1. MongoDB学习笔记~MongoVUE对数据进行查询,排序和按需显示

    回到目录 对于MongoDB这个非关系型数据库(NoSql)来说,找一个IDE工具不是很容易,还好被我找到了,它就是大名鼎鼎的MongoVUE,它可以对mongodb数据表进行增删改查,下面我主要说一 ...

  2. 深入解析SQL Server并行执行原理及实践(上)

    在成熟领先的企业级数据库系统中,并行查询可以说是一大利器,在某些场景下他可以显著的提升查询的相应时间,提升用户体验.如SQL Server, Oracle等, Mysql目前还未实现,而Postgre ...

  3. Centos7中所有的关机命令的奇怪现象

    今天在研究shutdown,reboot,halt,poweroff几种关机命令的区别是发现他们都是/bin/systemctl的软连接 ls -l /sbin/{shutdown,reboot,ha ...

  4. docker-8 docker小技巧

    docker使用小技巧 杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有的已经停止的容器 docker rm $(docker ps -a -q) 删除所 ...

  5. iteye上总结的编程精华资源

    原文:http://www.iteye.com/magazines/130 博客是记录学习历程.分享经验的最佳平台,多年以来,各路技术大牛在ITeye网站上产生了大量优质的技术文章,并将系列文章集结成 ...

  6. shell编程之正则表达式

    什么是正则表达式?正则表达式是用于描述字符排列和匹配模式的一种语法规则.在很多程序设计语言中都支持利用正则表达式来进行字符串的操作,不同语言中的正则表达式略有不同,但是毕竟都是正则,其本质思想都是一致 ...

  7. BOM与事件

    PPK谈JS学习笔记第二弹 JS的语言核心和DOM之间有一个过渡层,一般称为BOM,浏览器对象模型.是指JS的客户端实现,它不操作DOM,又不是JS的语言核心,它的主要功能是管理浏览器窗口,每个窗口都 ...

  8. 报表软件JS开发引用HTML DOM的location和document对象

    上一次提到,在报表软件FineReport的JavaScript开发中,可以访问并处理的HTML DOM对象有windows.location.document三种.这次就继续介绍后两种,locati ...

  9. jquery选择器案例

    一.预期效果 实现一个效果,如下. 品牌列表默认精简显示,单击“显示全部品牌”按钮显示全部品牌,同时列表将推荐的品牌的名字高亮显示,按钮里的文字变成“精简显示品牌”.再次点击“精简显示品牌”回到初始页 ...

  10. mysql表复制和修改部分字段

    今天在工作中,需要造大量的加数据,1000多条数据如果都是手工输入的话,那么我今天不要干别的了,就造吧! 当时手工操作重复的事情,对程序员来说,是一件很丢人的事情,所以就上网查了一下,需要用到两个知识 ...