app
ionic框架/cordova/phonegap
安卓android平台
插件https://github.com/xu-li/cordova-plugin-wechat
创建一个ionic安卓项目
ionic start 文件夹/项目路径
ionic platform add android
安装插件
用git命令
cordova plugin add https://github.com/xu-li/cordova-plugin-wechat --variable wechatappid=**你申请的微信移动项目APPID**
没装git shall可以使用本地安装
先从git上把安装包下载到本地后解压,建议使用英文路径
然后:
ionic plugin add 安装包路径 --variable wechatappid=**你申请的微信移动应用APPID**
APPID在微信开放平台申请,具体步骤按提示都可以搞定
使用前注意事项
使用的appid时,项目的以下项必须和申请时填的信息相符
-包名
-签名(.keystore文件)
debug版无法使用微信分享(至少自测是这样的,并且还把app搞的挂掉了)
发布+签名后才可正常使用
使用
js可用方法在插件的www文件夹中wechat.js中,喜欢研究的可以从这个文件入手。下面是写的一个demo
/*
网页分享
*/
var weChatShare = {
check:function(){
//检查是否安装成功
Wechat.isInstalled(function (installed) {
alert("Wechat installed: " + (installed ? "Yes" : "No"));
}, function (reason) {
alert("Failed: " + reason);
});
},
webpage:function(_opt,_scene){
_scene = _scene==undefined?Wechat.Scene.TIMELINE:_scene;
alert("分享到:"+(_scene === 0?"聊天界面":(_scene === 1?"朋友圈":_scene)));
opt = _opt || {
title:"网页分享——百度"
,description:"简述,短述,摘录"
,url:"http://baidu.com"
,img:"https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"
};
Wechat.share({
message: {
title: opt.title,
description: opt.description,
mediaTagName: "这是什么呢?什么呢?",//这是什么呢?媒体标签名!!
thumb: opt.img,
media: {
type: Wechat.Type.WEBPAGE, // webpage
webpageUrl: opt.url // webpage
}
},
scene: _scene // 默认分享到朋友圈
}, function () {
alert("Success");
}, function (reason) {
alert("Failed: " + reason);
});
}
};
//发送到朋友圈
window.weChatShare = function(opt){
weChatShare.webpage(opt);
};
//发送给好友
window.weChatShareToFriend = function(opt){
weChatShare.webpage(opt,Wechat.Scene.SESSION);
};
发布和签名
遇到的坑
语法错误
错误在这个文件
platforms\android\src\com\ionicframework\starter\wxapi\WXEntryActivity.java
//第42行
@Override
public void onResp(BaseResp resp)
这个函数中有几个ERR开头的静态变量,调用的名字和类(xu.li.cordova.wechat\www\Wechat.java)定义名不相符,改成了这样就过去了。
@Override
public void onResp(BaseResp resp) {
Log.i(WXEntryActivity.class.getName(), resp.toString());
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
switch(resp.getType())
{
case ConstantsAPI.COMMAND_SENDAUTH:
auth(resp);
break;
default:
Wechat.currentCallbackContext.success();
break;
}
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
Wechat.currentCallbackContext.error(Wechat.ERROR_USER_CANCEL);
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
Wechat.currentCallbackContext.error(Wechat.ERROR_AUTH_DENIED);
break;
case BaseResp.ErrCode.ERR_SENT_FAILED:
Wechat.currentCallbackContext.error(Wechat.ERROR_SENT_FAILED);
break;
case BaseResp.ErrCode.ERR_UNSUPPORT:
Wechat.currentCallbackContext.error(Wechat.ERROR_UNSUPPORT);
break;
case BaseResp.ErrCode.ERR_COMM:
Wechat.currentCallbackContext.error(Wechat.ERROR_COMMON);
break;
default:
Wechat.currentCallbackContext.error(Wechat.ERROR_UNKNOWN);
break;
}
finish();
}