fix: 处理厂商平台有时候获取到registrationId和token为空的情况

This commit is contained in:
Liuyf 2025-02-25 11:31:36 +08:00
parent 1c74b54cd4
commit c6dce9eb00

View File

@ -83,12 +83,16 @@ class XSJPushProvider {
final int cmdCode = data['cmd']; final int cmdCode = data['cmd'];
switch (cmdCode) { switch (cmdCode) {
case CMD_GET_REGISTRATION_ID: case CMD_GET_REGISTRATION_ID:
if (!_jpushRegistrationIdCompleter.isCompleted &&
data['message'] != null) {
await Storage.setString(pushDeviceID, data['message']); await Storage.setString(pushDeviceID, data['message']);
AppLog.log('flutter get registration id : ${data['message']}'); AppLog.log('flutter get registration id : ${data['message']}');
_jpushRegistrationIdCompleter.complete(<String, dynamic>{ _jpushRegistrationIdCompleter.complete(<String, dynamic>{
'channel': 'jiguang', 'channel': 'jiguang',
'channelToken': data['message'] 'channelToken': data['message']
}); });
}
// final String? channel2TokenStr = // final String? channel2TokenStr =
// await Storage.getString(vendorPushChannelInfo); // await Storage.getString(vendorPushChannelInfo);
// if (Platform.isAndroid && channel2TokenStr != null) { // if (Platform.isAndroid && channel2TokenStr != null) {
@ -96,6 +100,7 @@ class XSJPushProvider {
// } // }
break; break;
case CMD_GET_TOKEN: case CMD_GET_TOKEN:
if (!_vendorTokenCompleter.isCompleted && data['token'] != null) {
final Map<String, dynamic> channel2Token = <String, dynamic>{ final Map<String, dynamic> channel2Token = <String, dynamic>{
'channel': channelTypeMapping[data['platform']], 'channel': channelTypeMapping[data['platform']],
'channelToken': data['token'] 'channelToken': data['token']
@ -103,6 +108,7 @@ class XSJPushProvider {
await Storage.setString( await Storage.setString(
vendorPushChannelInfo, jsonEncode(channel2Token)); vendorPushChannelInfo, jsonEncode(channel2Token));
_vendorTokenCompleter.complete(channel2Token); _vendorTokenCompleter.complete(channel2Token);
}
break; break;
} }
}, },