更新记录
1.0.0(2021-08-18)
初次发布插件
平台兼容性
Android |
Android CPU类型 |
iOS |
适用版本区间:4.4 - 14.0 |
armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 |
× |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
Facebook登录,分享功能Android插件(插件有问题请联系QQ:1684729125)
插件使用条件前准备
插件配置(uniapp项目中android原生插件配置)
参数 |
说明 |
示例 |
FacebookName |
配置应用名称 |
FacebookDemo |
FacebookApplicationId |
Facebook 应用编号 |
237458884045889 |
FacebookClientToken |
客户端 Token |
4afd949d01222bca1037d36b50908f8c |
引用插件
var ShareModule = uni.requireNativePlugin('GT-Facebook_ShareModule');
var LoginModule = uni.requireNativePlugin('GT-Facebook_LoginModule');
var AndroidUtilModule = uni.requireNativePlugin('GT-Facebook_AndroidUtilModule');
获取密钥散列KeyHash
/**
* 获取密钥散列
* packageName 项目包名
*/
doLoadKeyHash(){
AndroidUtilModule.loadKeyHash(ret => {
console.log('loadKeyHash result: ',ret);
});
},
Facebook登录使用方法
/**
* 退出登录
*/
doLoginout(){
uni.showLoading({
title: 'loading...',
mask: true
});
LoginModule.logout(ret => {
uni.hideLoading();
if(ret){
util.toast('退出登录成功');
}else{
util.toast('退出登录失败');
}
});
},
/**
* 检查是否已登录
*/
doCheckLogin(){
uni.showLoading({
title: 'loading...',
mask: true
});
LoginModule.isLogin(ret => {
uni.hideLoading();
if(ret){
util.toast('已登录');
}else{
util.toast('未登录');
}
});
},
/**
* 登陆
* @param {Object} e
*/
doLogin(e) {
let that = this;
console.log('click to login.');
uni.showLoading({
title: 'loading...',
mask: true
});
LoginModule.handleLogin(ret => {
uni.hideLoading();
if (ret.code == 200) {
if (ret.msg) {
let result = JSON.parse(ret.msg);
console.log('result: ',result);
util.toast('登录成功,email: '+result.email);
} else {
util.toast('Failed to obtain login information, please try again later');
}
} else if (ret.code == 1001) {
util.toast('Cancel login');
} else {
util.toast(`error: ${ret.msg}`);
}
});
},
Facebook分享相关方法
/**
* 分享链接
* @param {Object} e
*/
doShareUrl(e) {
let that = this;
let mUrl = 'https://www.baidu.com';
let mQuote = '百度一下,你就知道!';
uni.showLoading({
title: 'loading...',
mask: true
});
ShareModule.handleShare(
{
shareType: '0',
shareUrl: mUrl,
shareQuote: mQuote
},
ret => {
uni.hideLoading();
if (ret.code == 200) {
util.toast('Share success');
} else if (ret.code == 1001) {
util.toast('Cancel sharing');
} else {
util.toast('error: ' + ret.msg, 2000);
}
}
);
},
/**
* 分享项目内图片
*/
doShareLocalImg() {
let that = this;
console.log('click to share');
uni.showLoading({
title: 'loading...',
mask: true
});
ShareModule.handleShare(
{
shareType: '1',
shareImgPath: '/static/share.jpg'
},
ret => {
uni.hideLoading();
if (ret.code == 200) {
util.toast('Share success');
} else if (ret.code == 1001) {
util.toast('Cancel sharing');
} else {
util.toast('error: ' + ret.msg, 2000);
}
}
);
},
/**
* 选择本地图片分享
*/
doChooseImg() {
let that = this;
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album'], //从相册选择
success: function(res) {
if (res && res.tempFilePaths.length > 0) {
uni.showLoading({
title: 'loading...',
mask: true
});
ShareModule.handleShare(
{
shareType: '1',
shareImgPath: res.tempFilePaths[0]
},
ret => {
uni.hideLoading();
if (ret.code == 200) {
util.toast('Share success');
} else if (ret.code == 1001) {
util.toast('Cancel sharing');
} else {
util.toast('error: ' + ret.msg, 2000);
}
}
);
}
}
});
},
/**
* 分享视频
*/
doShareVideo() {
let that = this;
console.log('click to share');
uni.chooseVideo({
count: 1,
sourceType: ['album'],
success: function(res) {
// console.log('path: ',res.tempFilePath);
uni.showLoading({
title: 'loading...',
mask: true
});
ShareModule.handleShare(
{
shareType: '3',
shareVideoPath: res.tempFilePath
},
ret => {
uni.hideLoading();
if (ret.code == 200) {
util.toast('Share success');
} else if (ret.code == 1001) {
util.toast('Cancel sharing');
} else {
util.toast('error: ' + ret.msg, 2000);
}
}
);
}
});
}
Facebook分享方法参数说明
参数 |
说明 |
示例 |
shareType |
分享类型(详情参考:shareType值说明) |
0 |
shareUrl |
分享链接地址 |
https://www.baidu.com |
shareQuote |
当分享链接时,可添加的标题应用 |
百度一下,你就知道 |
shareImgPath |
分享图片地址 |
file:///storage/emulated/0/test/test1.png |
shareVideoPath |
分享视频地址 |
file:///storage/emulated/0/test/test.mp4 |
shareType值 |
说明 |
0 |
分享链接 |
1 |
分享本地图片 |
3 |
分享本地视频 |
结果码参数说明(登录、分享均适用)
code |
说明 |
200 |
成功(不是200均为失败,其他结果码辅助使用) |
1000 |
失败 |
1001 |
取消 |
1002 |
当前分享事件不在Activity上 |
1003 |
分享内容为空 |
1004 |
facebook分享分享页面初始化有误 |
1005 |
分享图片加载失败 |
1006 |
分享的图片不是本地图片 |
1007 |
未知分享类型(链接,图片,视频) |
1008 |
分享的视频非本地视频 |
405 |
其他错误 |
登录回调方法参数说明
参数 |
说明 |
code |
结果码 |
msg |
登录结果(成功返回用户信息,失败返回错误信息,详情参考Demo) |
登录成功msg |
说明 |
email |
邮箱 |
token |
AccessToken |
name |
昵称 |
id |
用户ID |
picture |
头像 |
分享回调方法参数说明
参数 |
说明 |
code |
结果码 |
msg |
分享结果(成功或取消返回空字符串,失败返回错误信息,详情参考Demo) |
备注及其他问题
- 如果使用分享提示没有权限,请在facebook开发者后台把应用修改为发布状态。如果需要使用其他facebook账号测试,请把账号添加为测试用户
- Facebook登录与分享都需要科学上网才能测试使用
- 如果使用各种免费的上网方法,IP地址会经常变化,新注册的facebook账号用不了多久就会被封号。
- 测试使用插件要使用自定义基座