diff --git a/src/core/service/api/device/bluetooth.js b/src/core/service/api/device/bluetooth.js deleted file mode 100644 index bda7eae6cccb08f423630da3095d92d2f9229652..0000000000000000000000000000000000000000 --- a/src/core/service/api/device/bluetooth.js +++ /dev/null @@ -1,24 +0,0 @@ -import { - invoke -} from 'uni-core/service/bridge' - -import { - onMethod -} from '../../platform' - -function on (method) { - const callbacks = [] - onMethod(method, data => { - callbacks.forEach(callbackId => { - invoke(callbackId, data) - }) - }) - return function (callbackId) { - callbacks.push(callbackId) - } -} - -export const onBluetoothDeviceFound = on('onBluetoothDeviceFound') -export const onBluetoothAdapterStateChange = on('onBluetoothAdapterStateChange') -export const onBLEConnectionStateChange = on('onBLEConnectionStateChange') -export const onBLECharacteristicValueChange = on('onBLECharacteristicValueChange') diff --git a/src/platforms/app-plus/service/api/device/bluetooth.js b/src/platforms/app-plus/service/api/device/bluetooth.js index 55b90c0e4fa80cec23cdf77a34b9ad801adc2ade..1db40be896f52001e91874bf16468bb88cf2c293 100644 --- a/src/platforms/app-plus/service/api/device/bluetooth.js +++ b/src/platforms/app-plus/service/api/device/bluetooth.js @@ -1,131 +1,38 @@ import { - invoke, - publish -} from '../../bridge' + warpPlusEvent, + warpPlusMethod +} from '../util' -/** - * 执行蓝牙相关方法 - */ -function bluetoothExec (method, callbackId, data = {}, beforeSuccess) { - var deviceId = data.deviceId +export const onBluetoothDeviceFound = warpPlusEvent(plus.bluetooth, 'onBluetoothDeviceFound') +export const onBluetoothAdapterStateChange = warpPlusEvent(plus.bluetooth, 'onBluetoothAdapterStateChange') +export const onBLEConnectionStateChange = warpPlusEvent(plus.bluetooth, 'onBLEConnectionStateChange') +export const onBLECharacteristicValueChange = warpPlusEvent(plus.bluetooth, 'onBLECharacteristicValueChange') + +function toUpperCase (options = {}) { + const deviceId = options.deviceId if (deviceId) { - data.deviceId = deviceId.toUpperCase() + options.deviceId = deviceId.toUpperCase() } - var serviceId = data.serviceId + const serviceId = options.serviceId if (serviceId) { - data.serviceId = serviceId.toUpperCase() + options.serviceId = serviceId.toUpperCase() } - - plus.bluetooth[method.replace('Changed', 'Change')](Object.assign(data, { - success (data) { - if (typeof beforeSuccess === 'function') { - beforeSuccess(data) - } - invoke(callbackId, Object.assign({}, data, { - errMsg: `${method}:ok`, - code: undefined, - message: undefined - })) - }, - fail (error = {}) { - invoke(callbackId, { - errMsg: `${method}:fail ${error.message || ''}`, - errCode: error.code || 0 - }) - } - })) -} -/** - * 监听蓝牙相关事件 - */ -function bluetoothOn (method, beforeSuccess) { - plus.bluetooth[method.replace('Changed', 'Change')](function (data) { - if (typeof beforeSuccess === 'function') { - beforeSuccess(data) - } - publish(method, Object.assign({}, data, { - code: undefined, - message: undefined - })) - }) - return true -} - -var onBluetoothAdapterStateChange -var onBluetoothDeviceFound -var onBLEConnectionStateChange -var onBLECharacteristicValueChange - -export function openBluetoothAdapter (data, callbackId) { - onBluetoothAdapterStateChange = onBluetoothAdapterStateChange || bluetoothOn('onBluetoothAdapterStateChange') - bluetoothExec('openBluetoothAdapter', callbackId) -} - -export function closeBluetoothAdapter (data, callbackId) { - bluetoothExec('closeBluetoothAdapter', callbackId) -} - -export function getBluetoothAdapterState (data, callbackId) { - bluetoothExec('getBluetoothAdapterState', callbackId) -} - -export function startBluetoothDevicesDiscovery (data, callbackId) { - onBluetoothDeviceFound = onBluetoothDeviceFound || bluetoothOn('onBluetoothDeviceFound') - bluetoothExec('startBluetoothDevicesDiscovery', callbackId, data) -} - -export function stopBluetoothDevicesDiscovery (data, callbackId) { - bluetoothExec('stopBluetoothDevicesDiscovery', callbackId) -} - -export function getBluetoothDevices (data, callbackId) { - bluetoothExec('getBluetoothDevices', callbackId, {}) -} - -export function getConnectedBluetoothDevices (data, callbackId) { - bluetoothExec('getConnectedBluetoothDevices', callbackId, data) -} - -export function createBLEConnection (data, callbackId) { - onBLEConnectionStateChange = onBLEConnectionStateChange || bluetoothOn('onBLEConnectionStateChange') - bluetoothExec('createBLEConnection', callbackId, data) -} - -export function closeBLEConnection (data, callbackId) { - bluetoothExec('closeBLEConnection', callbackId, data) -} - -export function getBLEDeviceServices (data, callbackId) { - bluetoothExec('getBLEDeviceServices', callbackId, data) -} - -export function getBLEDeviceCharacteristics (data, callbackId) { - bluetoothExec('getBLEDeviceCharacteristics', callbackId, data) -} - -export function notifyBLECharacteristicValueChange (data, callbackId) { - onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange') - bluetoothExec('notifyBLECharacteristicValueChange', callbackId, data) -} - -export function notifyBLECharacteristicValueChanged (data, callbackId) { - onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange') - bluetoothExec('notifyBLECharacteristicValueChanged', callbackId, data) -} - -export function readBLECharacteristicValue (data, callbackId) { - onBLECharacteristicValueChange = onBLECharacteristicValueChange || bluetoothOn('onBLECharacteristicValueChange') - bluetoothExec('readBLECharacteristicValue', callbackId, data) -} - -export function writeBLECharacteristicValue (data, callbackId) { - bluetoothExec('writeBLECharacteristicValue', callbackId, data) -} - -export function setBLEMTU (data, callbackId) { - bluetoothExec('setBLEMTU', callbackId, data) -} - -export function getBLEDeviceRSSI (data, callbackId) { - bluetoothExec('getBLEDeviceRSSI', callbackId, data) -} + return options +} + +export const openBluetoothAdapter = warpPlusMethod(plus.bluetooth, 'openBluetoothAdapter') +export const closeBluetoothAdapter = warpPlusMethod(plus.bluetooth, 'closeBluetoothAdapter') +export const getBluetoothAdapterState = warpPlusMethod(plus.bluetooth, 'getBluetoothAdapterState') +export const startBluetoothDevicesDiscovery = warpPlusMethod(plus.bluetooth, 'startBluetoothDevicesDiscovery', toUpperCase) +export const stopBluetoothDevicesDiscovery = warpPlusMethod(plus.bluetooth, 'stopBluetoothDevicesDiscovery') +export const getBluetoothDevices = warpPlusMethod(plus.bluetooth, 'getBluetoothDevices') +export const getConnectedBluetoothDevices = warpPlusMethod(plus.bluetooth, 'getConnectedBluetoothDevices', toUpperCase) +export const createBLEConnection = warpPlusMethod(plus.bluetooth, 'createBLEConnection', toUpperCase) +export const closeBLEConnection = warpPlusMethod(plus.bluetooth, 'closeBLEConnection', toUpperCase) +export const getBLEDeviceServices = warpPlusMethod(plus.bluetooth, 'getBLEDeviceServices', toUpperCase) +export const getBLEDeviceCharacteristics = warpPlusMethod(plus.bluetooth, 'getBLEDeviceCharacteristics', toUpperCase) +export const notifyBLECharacteristicValueChange = warpPlusMethod(plus.bluetooth, 'notifyBLECharacteristicValueChange', toUpperCase) +export const readBLECharacteristicValue = warpPlusMethod(plus.bluetooth, 'readBLECharacteristicValue', toUpperCase) +export const writeBLECharacteristicValue = warpPlusMethod(plus.bluetooth, 'writeBLECharacteristicValue', toUpperCase) +export const setBLEMTU = warpPlusMethod(plus.bluetooth, 'setBLEMTU', toUpperCase) +export const getBLEDeviceRSSI = warpPlusMethod(plus.bluetooth, 'getBLEDeviceRSSI', toUpperCase) diff --git a/src/platforms/app-plus/service/api/device/ibeacon.js b/src/platforms/app-plus/service/api/device/ibeacon.js index 14532f5d54bc79cc6655da51a75319c9fd2170d7..484738758eef20a709f0209a60398073a4450653 100644 --- a/src/platforms/app-plus/service/api/device/ibeacon.js +++ b/src/platforms/app-plus/service/api/device/ibeacon.js @@ -1,64 +1,11 @@ import { - invoke -} from '../../bridge' + warpPlusEvent, + warpPlusMethod +} from '../util' -export function onBeaconUpdate (callbackId) { - plus.ibeacon.onBeaconUpdate(data => invoke(callbackId, data)) -} +export const onBeaconUpdate = warpPlusEvent(plus.ibeacon, 'onBeaconUpdate') +export const onBeaconServiceChange = warpPlusEvent(plus.ibeacon, 'onBeaconServiceChange') -export function onBeaconServiceChange (callbackId) { - plus.ibeacon.onBeaconServiceChange(data => invoke(callbackId, data)) -} -export const onBeaconServiceChanged = onBeaconServiceChange - -export function getBeacons (params, callbackId) { - plus.ibeacon.getBeacons({ - success: (result) => { - invoke(callbackId, { - errMsg: 'getBeacons:ok', - beacons: result.beacons - }) - }, - fail: (error) => { - invoke(callbackId, { - errMsg: 'getBeacons:fail:' + error.message - }) - } - }) -} - -export function startBeaconDiscovery ({ - uuids, - ignoreBluetoothAvailable = false -}, callbackId) { - plus.ibeacon.startBeaconDiscovery({ - uuids, - ignoreBluetoothAvailable, - success: (result) => { - invoke(callbackId, { - errMsg: 'startBeaconDiscovery:ok', - beacons: result.beacons - }) - }, - fail: (error) => { - invoke(callbackId, { - errMsg: 'startBeaconDiscovery:fail:' + error.message - }) - } - }) -} - -export function stopBeaconDiscovery (params, callbackId) { - plus.ibeacon.stopBeaconDiscovery({ - success: (result) => { - invoke(callbackId, Object.assign(result, { - errMsg: 'stopBeaconDiscovery:ok' - })) - }, - fail: (error) => { - invoke(callbackId, { - errMsg: 'stopBeaconDiscovery:fail:' + error.message - }) - } - }) -} +export const getBeacons = warpPlusMethod(plus.ibeacon, 'getBeacons') +export const startBeaconDiscovery = warpPlusMethod(plus.ibeacon, 'startBeaconDiscovery') +export const stopBeaconDiscovery = warpPlusMethod(plus.ibeacon, 'stopBeaconDiscovery') diff --git a/src/platforms/app-plus/service/api/util.js b/src/platforms/app-plus/service/api/util.js index 0c278dd990ccdd6d1f4410ad34fbd7c5a9c4ede2..4b3f0561b92a2d9db0ec8f4ce8aea3b53fff4000 100644 --- a/src/platforms/app-plus/service/api/util.js +++ b/src/platforms/app-plus/service/api/util.js @@ -1,3 +1,7 @@ +import { + invoke +} from '../bridge' + export { isTabBarPage } from '../bridge' @@ -162,3 +166,38 @@ export function getScreenInfo () { screenHeight: Math.round(resolutionHeight) } } + +export function warpPlusEvent (origin, name) { + return function (callbackId) { + origin[name](function (data) { + if (data) { + delete data.code + delete data.message + } + invoke(callbackId, data) + }) + } +} + +export function warpPlusMethod (origin, name, before) { + return function (options, callbackId) { + if (typeof before === 'function') { + options = before(options) + } + origin[name](Object.assign(options, { + success (data = {}) { + delete data.code + delete data.message + invoke(callbackId, Object.assign({}, data, { + errMsg: `${name}:ok` + })) + }, + fail (error = {}) { + invoke(callbackId, { + errMsg: `${name}:fail ${error.message || ''}`, + errCode: error.code || 0 + }) + } + })) + } +}