更新记录

1.0.0(2021-08-18)

初次发布插件


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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账号用不了多久就会被封号。
  • 测试使用插件要使用自定义基座

隐私、权限声明

1. 本插件需要申请的系统权限列表:

访问网络权限:android.permission.INTERNET

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的Facebook SDK会采集数据,详情请参考:https://developers.facebook.com/docs/facebook-login/android

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问