更新记录

3.0(2024-05-27) 下载此版本

修复已知问题

2.9(2023-07-14) 下载此版本

1.优化呼叫设备名称缓存问题 2.修复来电铃声一直响的问题

2.8(2023-07-11) 下载此版本

1.支持配置呼叫对方不在线的提示 2.autoStartFunctionEnable设置为flase时,不去获取最近来电消息 3.autoStartFunctionEnable设置为false后,再设置为true后自动初始化服务,登录 4.autoStartFunctionEnable设置为false后,如果去呼叫设备,则自动初始化服务,登录

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 适用版本区间:9 - 14

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


接口函数:

initDMVPhoneSDK

[功能] 初始化DMVPhoneSDK, 音视频功能需先初始化才可使用 返回值详细请参见《附表一》。

[函数] initDMVPhoneSDK(String domain);

[参数说明]

domain: 应用服务器地址。 正式服:http://app-api.thinmoo.com | 测试服:http://app-api.test.thinmoo.com

当有平台对接时,可以根据当前APP应⽤使⽤的应⽤服务器地址。对讲服务器地址由应⽤服务器分配。新的⾳视频对讲SDK实现了由应⽤服务器动态分配下发⾳视频服务器地址给

新的⾳视频对讲SDK,让APP登录账号能动态登录⾳视频对讲服务器,解决卡顿的问题。

[示例]

const  VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin")
VphoneModule.initDMVPhoneSDK(domain)

loginVPhoneServer

[功能] 登录音视频服务器,登录后才能呼叫、接收其他账户呼叫。返回值详细请参见《附表一》。 登录服务器的地址为初始化时传入的地址。

[函数] loginVPhoneServer(JSON json, JSCallback callback);

[参数说明]

json⾥的key为以下四个

{ String } account app账号

{ String } appId: 分配的appId

{ String } appSecret 分配的appSecret

{ String } vphoneServerIp ⾳视频服务器登录IP (独⽴部署⾳视频服务器时必传)

{ String } vphoneServerPort ⾳视频服务器登录端⼝ (独⽴部署⾳视频服务器时必传)

{ Number } loginType 登录⾳视频服务器的登录类型,传1表示account为⼿机号,传2表示account为设备序列号

{ Function } callback 回调函数

callback回调函数参数

{ Number } errorCode 登录⾳视频服务器的状态码,返回值详细请参⻅《附表⼀》。

{ String } errorMsg 登录⾳视频服务器的状态⽂本描述,以《附表⼀》为准。

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
const json = {
    "account": "app账号",
    "appId": "分配的appId",           // 不同平台的APP对应⼀个分配的appId
    "appSecret": "分配的appSecret",   // 不同平台的APP对应⼀个分配的appSecret
    // loginType = 1,account为⼿机号。
    // loginType = 2,account设备序列号。
    // 呼叫时呼叫端和被呼叫端都需登录⾳视频服务器
    "loginType": 1,
    ""
};
VphoneModule.loginVPhoneServer(json, (result) => {
    // callback(res);
    uni.showModal({
        title: "提示",
        content: JSON.stringify(result),
        success: () => {
            console.log(`登录结果: ${JSON.stringify(result)}`);
       }
   });
});

callAccount

[功能] 呼叫其他账号,登录后才能呼叫、接收其他账户呼叫。返回值详细请参见《附表一》。

[函数] callAccount(String callAccount, Integer callType, String account, String devName, final JSCallback callback);

[参数说明] { String } callAccount 呼叫对象的⾳视频账号{ Number } callType 呼叫对象的⾳视频账号的类型。 1:⽤户帐号(呼叫⽤户) 2:设备帐号(呼叫设备)

{ String } account ⾃⼰的⾳视频账号

{ String } devName android⽅⾯为了和ios⽅⾯接⼝参数⼀致的⼀个参数,传空字符串即可

{ Function } callback 回调函数

callback回调函数参数

{ Number } errorCode 呼叫其他账号后的状态码,返回值详细请参⻅《附表⼀》。

{ String } errorMsg 呼叫其他账号后的状态⽂本描述,以《附表⼀》为准。

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
VphoneModule.callAccount(callAccount, callType, account, devName,(result) => {});

getPermissionStatus

[功能] 判断应用的权限情况,会返回应用的权限情况("authorized"/"unauthorized"/"unknown") //为已授权,未授权,未知,因为部分机型无法判断权限情况,所以会返回未知

和权限是否能通过代码跳转到开启页面(true/false) //根据机型品牌判断能否对应跳转到权限开启界面

和手机品牌。 //返回手机品牌

[函数] getPermissionStatus(final JSCallback Callback); [参数说明]

{ Function } callback 回调函数

callback回调函数参数

{ Number } errorCode 判断应⽤的权限情况后的状态码,返回值详细请参⻅《附表⼀》。

{ String } errorMsg 判断应⽤的权限情况后的状态⽂本描述,以《附表⼀》为准。

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
VphoneModule.getPermissionStatus((result) => {
    console.log(`判断应⽤的权限情况: ${JSON.stringify(result)}`);
});

openPermission

[功能] 打开应用的某个权限,如自启动,悬浮窗,锁屏显示

[函数] openPermission(String permission);

[参数说明] permission: 权限名;//接受 "auto_start" ,"floating_window","lock_screen_display"

[示例]

const  VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin")
 VphoneModule.openPermission("Auto_start");

setLogSwitch

[功能] 打开音视频日志开关

[函数] setLogSwitch(boolean switch);

[参数说明] switch: 设置开关情况;

[示例]

const  VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin")
 VphoneModule.setLogSwitch(switch);

setPushToken

[功能]设置推送token到服务器,此⽅法需要集成插件 DoorMaster-Push -Plugin 或者 DoorMaster -Push -Plugin -google (海外⾕歌版) 才能获取到pushToken,然后再调⽤setPushToken⽅法上传到服务器

[函数] setPushToken(String brand, String token)

[参数说明]

{ String } brand ⼿机品牌

{ String } token 推送token

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
const brand = "⼿机品牌", token = "推送token";
VphoneModule.setPushToken(brand, token);

receivePushNotification

[功能] 将推送接收到的消息传入插件进行处理,此方法需要集成插件 DoorMaster-Push -Plugin 或者 DoorMaster -Push -Plugin -google (海外谷歌版),同时音视频类消息体 需要有 “dmvphone_push_type” 这个key;

[函数] receivePushNotification(String message)

[参数说明] { String } message 消息体本身 // JSON 字符串格式

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
const messageInfo = { "xxx": "xxx", "yyy": "yyy" };
VphoneModule.receivePushNotification(JSON.stringify(messageInfo));

checkToStartIncomingActivity

[功能] 判断当前账号 在服务器上是否有来电消息,需要在App.vue 的onshow方法调用,为了解决有时候app后台弹出推送时,点击推送不会显示通话界面的情况。

[函数] checkToStartIncomingActivity()

[参数说明] 无

[示例]

const VphoneModule = uni.requireNativePlugin("DoorMaster-VPhone-Plugin");
VphoneModule.checkToStartIncomingActivity();

三. 附录 附表一

返回值 返回值说明
0 成功
1 失败
2 Token错误
3 登录数据处理失败
4 网络错误
601 音视频服务已销毁
802 参数cameraId错误
803 参数videoRotation错误,角度错误:角度范围0~360
804 参数videoSize错误,需传入字符串:720p、vga、qvga、qcif
805 未初始化错误
806 未登录错误
807 不在通话状态
808 不支持的音视频格式
809 Context为空
811 无效的心跳间隔
812 本地端口错误
820 Service not ready
821 呼叫账号未绑定视频通讯帐号
822 登录账号未绑定视频通讯帐号
823 CPU架构不支持
824 参数错误
825 AccessToken为空
826 开门超时
999 未知错误

隐私、权限声明

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

网络,摄像头,录音,存储

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

本插件采集的数据:采集用户的登录账号信息 发送的服务器地址 http://app-api.thinmoo.com (可通过初始化接口配置服务器地址) 数据用途说明: 为了分配音视频对讲账号

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

许可协议

作者未提供license.md

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