diff --git a/lib/tools/push/xs_jPhush.dart b/lib/tools/push/xs_jPhush.dart index 11b16951..51ec7ebe 100755 --- a/lib/tools/push/xs_jPhush.dart +++ b/lib/tools/push/xs_jPhush.dart @@ -83,12 +83,16 @@ class XSJPushProvider { final int cmdCode = data['cmd']; switch (cmdCode) { case CMD_GET_REGISTRATION_ID: - await Storage.setString(pushDeviceID, data['message']); - AppLog.log('flutter get registration id : ${data['message']}'); - _jpushRegistrationIdCompleter.complete({ - 'channel': 'jiguang', - 'channelToken': data['message'] - }); + if (!_jpushRegistrationIdCompleter.isCompleted && + data['message'] != null) { + await Storage.setString(pushDeviceID, data['message']); + AppLog.log('flutter get registration id : ${data['message']}'); + _jpushRegistrationIdCompleter.complete({ + 'channel': 'jiguang', + 'channelToken': data['message'] + }); + } + // final String? channel2TokenStr = // await Storage.getString(vendorPushChannelInfo); // if (Platform.isAndroid && channel2TokenStr != null) { @@ -96,13 +100,15 @@ class XSJPushProvider { // } break; case CMD_GET_TOKEN: - final Map channel2Token = { - 'channel': channelTypeMapping[data['platform']], - 'channelToken': data['token'] - }; - await Storage.setString( - vendorPushChannelInfo, jsonEncode(channel2Token)); - _vendorTokenCompleter.complete(channel2Token); + if (!_vendorTokenCompleter.isCompleted && data['token'] != null) { + final Map channel2Token = { + 'channel': channelTypeMapping[data['platform']], + 'channelToken': data['token'] + }; + await Storage.setString( + vendorPushChannelInfo, jsonEncode(channel2Token)); + _vendorTokenCompleter.complete(channel2Token); + } break; } },