更新记录

1.0.3(2021-04-29)

1.兼容Android 8.0。

1.0.1(2020-12-08)

测试机型商米D1是,安卓版本7.1.2

1.0.0(2020-12-06)

测试机型为商米D1s,安卓版本7.1.2,其他机型暂时没有测试条件,如有问题,请给我留言。

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 10.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原生插件配置”->”云端插件“列表中删除该插件重新选择


目前在商米D1s和D2上稳定运行,安卓版本均为7.1.2,没有问题,如有其它机型运行正常或者有问题,请给我留言,交流QQ群860720684。

初始化

const multiScreen = uni.requireNativePlugin('SPT-MultiScreen');

方法

方法名 用途 参数 备注
canDrawOverlays 检测是否开启浮窗权限 callback(res) res.result为检测结果,Boolean型,true表示已开启浮窗,false表示未开启
gotoSetDrawOverlays 前往设置浮窗权限页面
showURL 副屏加载url url 加载本地html的话,推荐使用vue cli创建的项目,如果使用uni-app项目,会白屏,应该是uni-app的绝对路径问题导致的。
sendDataToSubScreen 主屏发送数据到副屏 jsonString,callback 数据必须是json格式的字符串,callback是安卓中js交互方法的callback回调,暂时不知道啥用,放在这里以防万一吧。
close 关闭副屏 关闭后,副屏会显示和主屏一样的内容。

示例代码

初始化+开启副屏

// 初始化
const multiScreen = uni.requireNativePlugin('SPT-MultiScreen');

// 检查是否已开启浮窗权限
multiScreen.canDrawOverlays(res => {
    // 已开启浮窗权限
    if (res.result) {
        // 如果加载本地html,推荐使用vue cli创建的项目,uni-app打包的H5项目会白屏,打包后,放在项目的static目录中,需要使用plus.io.convertLocalFileSystemURL(),转成安卓项目中的绝对地址。
        // let url =  plus.io.convertLocalFileSystemURL('/static/sub-screen/index.html');
        let url = 'https://www.baidu.com';
        multiScreen.showURL(url);
    } 
    // 未开启  
    else {
        uni.showModal({
            title: '提示',
            content: '您尚未开启浮窗权限,副屏无法正常显示内容',
            confirmText: '前往设置',
            success: modalRes => {
                // 点击确定
                if (modalRes.confirm) {
                    // 前往设置
                    multiScreen.gotoSetDrawOverlays();
                }
            }
        });
    }
});

发送数据到副屏

let data = {
    name: '张三',
    age: 18
};
multiScreen.sendDataToSubScreen(JSON.stringify(data), result => {
    console.log('result: ' + JSON.stringify(result));
});

副屏接收数据

// 方法为onReceiveData(result),vue项目的话,需要将接收数据的方法注入给window,由于markdown里显示不了window点onReceiveData,你们自己处理一下
mounted: function() {
    window . onReceiveData = function(result) {
        console.log('result: ' + JSON.stringify(result));
    }
}

关闭副屏

multiScreen.close();

隐私、权限声明

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

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

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

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

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