2,新增自定义消息--锁设置变更类型及相应逻辑处理 3,开锁页-设置-开锁时是否需联网 设置开关返回开锁页的标志未刷新。另授权和普通用户标志和使用没实时更新,会出现设置了不生效的情况。问题修复 4,修复bugID:ID1002246
91 lines
3.3 KiB
Dart
91 lines
3.3 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:get/get.dart';
|
|
import 'package:star_lock/app_settings/app_settings.dart';
|
|
import 'package:star_lock/tools/eventBusEventManage.dart';
|
|
import 'package:star_lock/tools/push/message_constant.dart';
|
|
|
|
class MessageManagement {
|
|
//分析消息数据
|
|
static Future<void> shunting(Map<String, dynamic> message) async {
|
|
if (message.isEmpty) {
|
|
return;
|
|
}
|
|
Map<String, dynamic> extra = <String, dynamic>{};
|
|
if (GetPlatform.isAndroid) {
|
|
extra = _androidAnalysis(message);
|
|
AppLog.log('MessageManagement.shunting GetPlatform.isAndroid: $extra');
|
|
} else if (GetPlatform.isIOS) {
|
|
extra = _iosAnalysis(message);
|
|
AppLog.log('MessageManagement.shunting GetPlatform.isIos: $extra');
|
|
} else {
|
|
return;
|
|
}
|
|
if (extra.isEmpty) {
|
|
return;
|
|
}
|
|
_shuntingBus(extra);
|
|
}
|
|
|
|
//android解析
|
|
static Map<String, dynamic> _androidAnalysis(Map<String, dynamic> data) {
|
|
// {alert: , extras: {cn.jpush.android.TYPE_PLATFORM: 0, cn.jpush.android.CONTENT_TYPE: , cn.jpush.android.MSG_ID: 18101501949885538, cn.jpush.android.EXTRA: {"eventNo":10,"keyId":530,"lockId":7}}, message: }
|
|
final Map<Object?, dynamic> extras = data['extras'];
|
|
final Map<String, dynamic> extra =
|
|
json.decode(extras['cn.jpush.android.EXTRA'] ?? '{}');
|
|
return extra;
|
|
}
|
|
|
|
//ios解析
|
|
static Map<String, dynamic> _iosAnalysis(Map<String, dynamic> data) {
|
|
// {content: , extras: {eventNo: 20, keyId: 580, lockId: 7}, _j_msgid: 18101504271412025}
|
|
final Map<Object?, Object?> extras = data['extras'];
|
|
final Map<String, dynamic> extra = <String, dynamic>{};
|
|
extras.forEach((Object? key, Object? value) {
|
|
extra[key!.toString()] = value;
|
|
});
|
|
return extra;
|
|
}
|
|
|
|
//识别参数分发消息
|
|
static void _shuntingBus(Map<String, dynamic> data) {
|
|
final int eventNo = data['eventNo'] ?? -1;
|
|
switch (eventNo) {
|
|
case MessageConstant.keyStateChange:
|
|
final int keyId = data['keyId'];
|
|
final int lockId = data['lockId'];
|
|
eventBus.fire(RefreshLockInfoDataEvent(keyId: keyId, lockId: lockId));
|
|
break;
|
|
case MessageConstant.keyDelete:
|
|
final int keyId = data['keyId'];
|
|
final int lockId = data['lockId'];
|
|
eventBus.fire(DeleteLockInfoDataEvent(keyId: keyId, lockId: lockId));
|
|
break;
|
|
case MessageConstant.lockReceive:
|
|
final int keyId = data['keyId'];
|
|
final int lockId = data['lockId'];
|
|
eventBus.fire(RogerThatLockInfoDataEvent(keyId: keyId, lockId: lockId));
|
|
break;
|
|
case MessageConstant.keyReceive:
|
|
final int keyId = data['keyId'];
|
|
final int lockId = data['lockId'];
|
|
eventBus.fire(RogerThatLockInfoDataEvent(keyId: keyId, lockId: lockId));
|
|
break;
|
|
case MessageConstant.lockSetChange:
|
|
final int keyId = data['keyId'];
|
|
final int lockId = data['lockId'];
|
|
final Map<String, dynamic> extra = data['updateFieldList'];
|
|
if (extra['appUnlockOnline'] != null) {
|
|
final String appUnlockOnline = extra['appUnlockOnline'];
|
|
eventBus.fire(
|
|
LockSetChangeSetRefreshLockDetailWithType(1, appUnlockOnline));
|
|
eventBus.fire(RefreshLockInfoDataEvent(keyId: keyId, lockId: lockId));
|
|
}
|
|
break;
|
|
|
|
default:
|
|
throw Exception('无法识别eventNo 参数:$eventNo');
|
|
}
|
|
}
|
|
}
|