diff --git a/lib/tools/push/message_management.dart b/lib/tools/push/message_management.dart index f00b31ef..0acff883 100644 --- a/lib/tools/push/message_management.dart +++ b/lib/tools/push/message_management.dart @@ -31,15 +31,38 @@ class MessageManagement { //android解析 static Map _androidAnalysis(Map 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 extras = data['extras']; + // final Map extra = + // json.decode(extras['cn.jpush.android.EXTRA'] ?? '{}'); + // return extra; + final Map extras = data['extras']; - final Map extra = - json.decode(extras['cn.jpush.android.EXTRA'] ?? '{}'); - return extra; + final extraData = extras['cn.jpush.android.EXTRA']; + + if (extraData is String) { + return json.decode(extraData); + } else if (extraData is Map) { + final Map extra = {}; + extraData.forEach((key, value) { + if (value is String && value.startsWith('{') && value.endsWith('}')) { + // 处理value是JSON字符串的情况 + try { + extra[key.toString()] = json.decode(value); + } catch (e) { + extra[key.toString()] = value; + } + } else { + extra[key.toString()] = value; + } + }); + return extra; + } + return {}; } - //ios解析 +//ios解析 static Map _iosAnalysis(Map data) { - // {content: , extras: {eventNo: 20, keyId: 580, lockId: 7}, _j_msgid: 18101504271412025} +// {content: , extras: {eventNo: 20, keyId: 580, lockId: 7}, _j_msgid: 18101504271412025} final Map extras = data['extras']; final Map extra = {}; extras.forEach((Object? key, Object? value) { @@ -48,7 +71,7 @@ class MessageManagement { return extra; } - //识别参数分发消息 +//识别参数分发消息 static void _shuntingBus(Map data) { final int eventNo = data['eventNo'] ?? -1; switch (eventNo) { @@ -75,11 +98,11 @@ class MessageManagement { case MessageConstant.lockSetChange: final int keyId = data['keyId']; final int lockId = data['lockId']; - // 暂时只用刷新 - // final Map extra = data['updateFieldList']; - // if (extra['appUnlockOnline'] != null) { - // final String appUnlockOnline = extra['appUnlockOnline']!.toString(); - // } +// 暂时只用刷新 +// final Map extra = data['updateFieldList']; +// if (extra['appUnlockOnline'] != null) { +// final String appUnlockOnline = extra['appUnlockOnline']!.toString(); +// } eventBus.fire(RefreshLockInfoDataEvent(keyId: keyId, lockId: lockId)); break; default: