更新记录
1.0.2(2023-04-13)
1、增加ios支持
1.0.1(2023-03-08)
- 发布大华NetSDK插件
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 12.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | 适用版本区间:11 - 16 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
大华NetSDK
特别注意:大华官方的sdk写的很垃圾,这就导致我们很难封装,初始化账户的时候最好俩个接口一起调用,不然有可能初始化账户失败,ios版本不提供错误信息,提供的是错误码,自己去大华demo里面找对应的错误信息,大华如此垃圾,我是真没耐心一个一个错误码对应
提供方法
所有接口都是跟大华的一样,只是做成了uniapp插件
LoadLibrarys
加载库,是自动加载的,这个可以不用,但是也有可能出现未加载完成,建议手动加载Init
初始化,全局只用初始化一次即可GetSDKVersion
获取版本号,大华这个接口有问题,基本没用SetAutoReconnect
设置断线重连回调,会触发device_reconnect
事件SetConnectTime
设置连接设备超时时间和尝试次数SetNetworkParam
设置网络登录参数,参数中包含登录设备超时时间和尝试次数Cleanup
释放 SDK 资源。SDK 功能使用完后才能调用该接口StartSearchDevices
异步搜索同网段内 IPC、NVS 等设备,会触发find_device
事件StopSearchDevices
停止异步搜索同网段内 IPC、NVS 等设备InitDevAccount
初始化账户(组播初始化接口)InitDevAccountByIP
根据设备 IP 初始化账户(单播初始化接口)StartSearchIPCWifi
软AP无线配网
回调事件
find_device
搜索到设备以后,回传设备信息device_reconnect
设备断线重连以后,回传设备信息device_offline
设备离线以后,回传离线设备信息
LoadLibrarys (ios可以不调用)
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.LoadLibrarys(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
Init
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.Init(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
GetSDKVersion
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.GetSDKVersion(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data中的version是版本号
})
SetAutoReconnect
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.SetAutoReconnect(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
SetConnectTime
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.SetConnectTime({
wait_time: 10, // 毫秒级
try_time: 10 // 链接次数
}, res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
SetNetworkParam
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.SetNetworkParam({
// 不是必选,需要那个传那个
wait_time: 5000, // 等待超时时间(毫秒为单位)
try_time: 1, // 连接尝试次数
connect_time: 1500, // 连接超时时间(毫秒为单位)
sub_connect_space_time: 10, // 子连接之间的等待时间(毫秒为单位)
get_dev_info_time: 1000, // 子连接之间的等待时间(毫秒为单位)
get_dev_info_time: 1000, // 获取设备信息超时时间
connect_buf_size: 250*1024, // 每个连接接收数据缓冲大小(字节为单位)
get_conn_info_time: 1000, // 获取子连接信息超时时间(毫秒为单位)
search_record_time: 3000, // 按时间查询录像文件的超时时间(毫秒为单位)
sub_disconnect_time: 60000, // 检测子链接断线等待时间(毫秒为单位)
by_net_type: 1, // 网络类型, 0-LAN, 1-WAN
by_play_back_buf_size: 4, // 回放数据接收缓冲大小(M为单位)
detect_disconnect_time: 60, // 心跳包发送间隔(单位为秒),默认为10s,最小间隔为2s
pic_buf_size: 2*1024*1024, // 实时图片接收缓冲大小(字节为单位)
}, res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
Cleanup
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.Cleanup(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
StartSearchDevices
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.StartSearchDevices(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
StopSearchDevices
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.StartSearchDevices(res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
InitDevAccount
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.InitDevAccount({
mac: 'e4:24:6c:f6:c1:88',
username: 'admin',
password: 'ai900213',
phone: '17080050266',
email: 'leruge@163.com'
}, res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
InitDevAccountByIP
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.InitDevAccountByIP({
mac: 'e4:24:6c:f6:bf:f8',
username: 'admin',
password: 'ai900213',
ip: '192.168.0.108',
phone: '17080050266',
email: 'leruge@163.com'
}, res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
StartSearchIPCWifi
let daHuaPlugin = uni.requireNativePlugin('leruge-dahua')
daHuaPlugin.StartSearchIPCWifi({
ip: '192.168.0.108',
port: '37777',
username: 'admin',
password: 'ai900213',
ssid: 'TP-LINK_6318',
pwd: '12345678'
}, res => {
// 返回code、msg、data,0是失败,1是成功,msg是对应提示信息,data都是空,不用理会
})
find_device
// 搜索到设备
plus.globalEvent.addEventListener('find_device', res => {
// init_status:0是不支持初始化;1是未初始化;2是已经初始化,已经初始化的设备不能再次初始化,需要重置
// res包括 version、ip、port、sub_mask、gateway、mac、device_type、manu、definition、is_dhcp、verify_data、serial_no、dev_soft_version、detail_type、vendor、dev_name、username、password、http_port、video_input_ch、remote_video_input_ch、video_output_ch、alarm_input_ch、alarm_output_ch、is_new_word_len、new_password、init_status、pwd_reset_way、special_ability、new_detail_type、is_new_username、new_username、pwd_find_version、un_login_func_mask、device_id、country_code、machine_group、ip_version_from
})
device_reconnect
// 设备离线事件
plus.globalEvent.addEventListener('device_offline', res => {
// res包括 login_id、ip、port
})
device_reconnect
// 断线重连事件
plus.globalEvent.addEventListener('device_reconnect', res => {
// res包括 login_id、ip、port
})