feat: update SDK to 3.8.3+hotfix.12, add message upload progress, and adjust group application parameters

This commit is contained in:
Brett
2026-03-06 18:42:17 +08:00
parent 6c4ca2fb56
commit bc223a3ea8
12 changed files with 60 additions and 34 deletions

View File

@@ -1,3 +1,7 @@
## 3.8.3+hotfix.12
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.3-patch.12)
## 3.8.3+hotfix.10.1 ## 3.8.3+hotfix.10.1
- [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.3-patch.10) - [Bug fixes and performance enhancements.](https://github.com/openimsdk/openim-sdk-core/releases/tag/v3.8.3-patch.10)

View File

@@ -36,7 +36,7 @@ android {
} }
dependencies { dependencies {
implementation 'io.openim:core-sdk:3.8.3-patch10@aar' implementation 'io.openim:core-sdk:3.8.3-patch12@aar'
testImplementation("junit:junit:4.13.2") testImplementation("junit:junit:4.13.2")
testImplementation("org.mockito:mockito-core:5.0.0") testImplementation("org.mockito:mockito-core:5.0.0")
} }

View File

@@ -1 +1,2 @@
rootProject.name = 'flutter_openim_sdk' rootProject.name = 'flutter_openim_sdk'

View File

@@ -13,19 +13,4 @@ public class OnUserListener implements open_im_sdk_callback.OnUserListener {
public void onUserStatusChanged(String s) { public void onUserStatusChanged(String s) {
CommonUtil.emitEvent("userListener", "onUserStatusChanged", s); CommonUtil.emitEvent("userListener", "onUserStatusChanged", s);
} }
@Override
public void onUserCommandAdd(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandAdd", s);
}
@Override
public void onUserCommandDelete(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandDelete", s);
}
@Override
public void onUserCommandUpdate(String s) {
CommonUtil.emitEvent("userListener", "onUserCommandUpdate", s);
}
} }

View File

@@ -650,7 +650,7 @@ code + .copy-button {
<script type="text/javascript"> <script type="text/javascript">
function configurationCacheProblems() { return ( function configurationCacheProblems() { return (
// begin-report-data // begin-report-data
{"diagnostics":[{"problem":[{"text":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 9.0."}],"contextualLabel":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#disabling_user_home_cache_cleanup","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"disabling-gradle-user-home-cache-cleanup-with-the-org-gradle-cache-cleanup-property","displayName":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated."}]},{"problem":[{"text":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 9.0."}],"contextualLabel":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#disabling_user_home_cache_cleanup","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"disabling-gradle-user-home-cache-cleanup-with-the-org-gradle-cache-cleanup-property","displayName":"Disabling Gradle user home cache cleanup with the 'org.gradle.cache.cleanup' property has been deprecated."}]}],"problemsReport":{"totalProblemCount":2,"buildName":"android","requestedTasks":"assembleDebug","documentationLink":"https://docs.gradle.org/8.12/userguide/problems-report.html","documentationLinkCaption":"Problem report","summaries":[]}} {"diagnostics":[{"locations":[{"pluginId":"dev.flutter.flutter-gradle-plugin"}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"pluginId":"dev.flutter.flutter-gradle-plugin"}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('url = <value>') instead."}]]},{"locations":[{"pluginId":"dev.flutter.flutter-gradle-plugin"}],"problem":[{"text":"Space-assignment syntax in Groovy DSL has been deprecated."}],"severity":"WARNING","problemDetails":[{"text":"This is scheduled to be removed in Gradle 10.0."}],"contextualLabel":"Space-assignment syntax in Groovy DSL has been deprecated.","documentationLink":"https://docs.gradle.org/8.12/userguide/upgrading_version_8.html#groovy_space_assignment_syntax","problemId":[{"name":"deprecation","displayName":"Deprecation"},{"name":"space-assignment-syntax-in-groovy-dsl","displayName":"Space-assignment syntax in Groovy DSL has been deprecated."}],"solutions":[[{"text":"Use assignment ('shrinkResources = <value>') instead."}]]}],"problemsReport":{"totalProblemCount":3,"buildName":"android","requestedTasks":"","documentationLink":"https://docs.gradle.org/8.12/userguide/problems-report.html","documentationLinkCaption":"Problem report","summaries":[]}}
// end-report-data // end-report-data
);} );}
</script> </script>

View File

@@ -2,8 +2,8 @@ PODS:
- Flutter (1.0.0) - Flutter (1.0.0)
- flutter_openim_sdk (0.0.1): - flutter_openim_sdk (0.0.1):
- Flutter - Flutter
- OpenIMSDKCore (= 3.8.3-hotfix.10) - OpenIMSDKCore (= 3.8.3-hotfix.12)
- OpenIMSDKCore (3.8.3-hotfix.10) - OpenIMSDKCore (3.8.3-hotfix.12)
DEPENDENCIES: DEPENDENCIES:
- Flutter (from `Flutter`) - Flutter (from `Flutter`)
@@ -21,9 +21,9 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_openim_sdk: 59aa0c08eb7499a1790168e10539e4dd915ced6e flutter_openim_sdk: bb2a5af4aeda4b44362ca6c223c1515e2fee795d
OpenIMSDKCore: bc9a6e5de2aabed76e4f69fe06a7c9df1d945afc OpenIMSDKCore: 02383b2a3f989a1fff29ad5f83c1dac1ee5bfb36
PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 PODFILE CHECKSUM: 7be2f5f74864d463a8ad433546ed1de7e0f29aef
COCOAPODS: 1.16.2 COCOAPODS: 1.16.2

View File

@@ -76,7 +76,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "3.8.3+hotfix.10" version: "3.8.3+hotfix.10.1"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter

View File

@@ -17,13 +17,13 @@ A new Flutter project.
s.dependency 'Flutter' s.dependency 'Flutter'
s.platform = :ios, '11.0' s.platform = :ios, '11.0'
s.dependency 'OpenIMSDKCore','3.8.3-hotfix.10' s.dependency 'OpenIMSDKCore','3.8.3-hotfix.12'
s.static_framework = true s.static_framework = true
s.library = 'resolv' s.library = 'resolv'
# s.vendored_frameworks = 'Framework/*.xcframework' # s.vendored_frameworks = 'Framework/*.xcframework'
# Flutter.framework does not contain a i386 slice. # Flutter.framework does not contain a i386 slice.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386 arm64' } s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
s.swift_version = '5.0' s.swift_version = '5.0'
s.resource_bundles = {'flutter_openim_sdk_privacy' => ['Resources/PrivacyInfo.xcprivacy']} s.resource_bundles = {'flutter_openim_sdk_privacy' => ['Resources/PrivacyInfo.xcprivacy']}

View File

@@ -429,7 +429,7 @@ class GetGroupApplicationListAsRecipientReq {
final int offset; final int offset;
final int count; final int count;
GetGroupApplicationListAsRecipientReq({ GetGroupApplicationListAsRecipientReq({
this.groupIDs = const [], this.groupIDs = const [],
this.handleResults = const [], this.handleResults = const [],
required this.offset, required this.offset,
@@ -466,8 +466,8 @@ class GetGroupApplicationListAsApplicantReq {
GetGroupApplicationListAsApplicantReq({ GetGroupApplicationListAsApplicantReq({
this.groupIDs = const [], this.groupIDs = const [],
this.handleResults = const [], this.handleResults = const [],
required this.offset, this.offset = 0,
required this.count, this.count = 40,
}); });
GetGroupApplicationListAsApplicantReq.fromJson(Map<String, dynamic> json) GetGroupApplicationListAsApplicantReq.fromJson(Map<String, dynamic> json)

View File

@@ -257,7 +257,8 @@ class Message {
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
identical(this, other) || other is Message && runtimeType == other.runtimeType && clientMsgID == other.clientMsgID; identical(this, other) ||
other is Message && runtimeType == other.runtimeType && clientMsgID == other.clientMsgID;
@override @override
int get hashCode => clientMsgID.hashCode; int get hashCode => clientMsgID.hashCode;
@@ -787,12 +788,15 @@ class AttachedInfoElem {
/// Do not send offline push notifications /// Do not send offline push notifications
bool? notSenderNotificationPush; bool? notSenderNotificationPush;
UploadProgress? uploadProgress;
AttachedInfoElem({ AttachedInfoElem({
this.groupHasReadInfo, this.groupHasReadInfo,
this.isPrivateChat, this.isPrivateChat,
this.hasReadTime, this.hasReadTime,
this.burnDuration, this.burnDuration,
this.notSenderNotificationPush, this.notSenderNotificationPush,
this.uploadProgress,
}); });
AttachedInfoElem.fromJson(Map<String, dynamic> json) { AttachedInfoElem.fromJson(Map<String, dynamic> json) {
@@ -801,6 +805,7 @@ class AttachedInfoElem {
hasReadTime = json['hasReadTime']; hasReadTime = json['hasReadTime'];
burnDuration = json['burnDuration']; burnDuration = json['burnDuration'];
notSenderNotificationPush = json['notSenderNotificationPush']; notSenderNotificationPush = json['notSenderNotificationPush'];
uploadProgress = json['uploadProgress'] == null ? null : UploadProgress.fromJson(json['uploadProgress']);
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@@ -810,6 +815,33 @@ class AttachedInfoElem {
data['hasReadTime'] = this.hasReadTime; data['hasReadTime'] = this.hasReadTime;
data['burnDuration'] = this.burnDuration; data['burnDuration'] = this.burnDuration;
data['notSenderNotificationPush'] = this.notSenderNotificationPush; data['notSenderNotificationPush'] = this.notSenderNotificationPush;
data['uploadProgress'] = uploadProgress?.toJson();
return data;
}
}
class UploadProgress {
int? total;
int? save;
int? current;
String? uploadID;
UploadProgress({this.total, this.save, this.current, this.uploadID});
UploadProgress.fromJson(Map<String, dynamic> json) {
total = json['total'] ?? 0;
save = json['save'] ?? 0;
current = json['current'] ?? 0;
uploadID = json['uploadID'] ?? '';
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['total'] = total;
data['save'] = save;
data['current'] = current;
data['uploadID'] = uploadID;
return data; return data;
} }
} }
@@ -879,7 +911,9 @@ class AdvancedTextElem {
AdvancedTextElem.fromJson(Map<String, dynamic> json) { AdvancedTextElem.fromJson(Map<String, dynamic> json) {
text = json['text']; text = json['text'];
messageEntityList = json['messageEntityList'] == null ? null : (json['messageEntityList'] as List).map((e) => MessageEntity.fromJson(e)).toList(); messageEntityList = json['messageEntityList'] == null
? null
: (json['messageEntityList'] as List).map((e) => MessageEntity.fromJson(e)).toList();
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
@@ -961,7 +995,8 @@ class ReadReceiptInfo {
/// Conversation type [ConversationType] /// Conversation type [ConversationType]
int? sessionType; int? sessionType;
ReadReceiptInfo({this.userID, this.groupID, this.msgIDList, this.readTime, this.msgFrom, this.contentType, this.sessionType}); ReadReceiptInfo(
{this.userID, this.groupID, this.msgIDList, this.readTime, this.msgFrom, this.contentType, this.sessionType});
ReadReceiptInfo.fromJson(Map<String, dynamic> json) { ReadReceiptInfo.fromJson(Map<String, dynamic> json) {
userID = json['uid'] ?? json['userID']; userID = json['uid'] ?? json['userID'];
@@ -1132,7 +1167,8 @@ class AdvancedMessage {
}); });
AdvancedMessage.fromJson(Map<String, dynamic> json) { AdvancedMessage.fromJson(Map<String, dynamic> json) {
messageList = json['messageList'] == null ? null : (json['messageList'] as List).map((e) => Message.fromJson(e)).toList(); messageList =
json['messageList'] == null ? null : (json['messageList'] as List).map((e) => Message.fromJson(e)).toList();
isEnd = json['isEnd']; isEnd = json['isEnd'];
errCode = json['errCode']; errCode = json['errCode'];
errMsg = json['errMsg']; errMsg = json['errMsg'];

View File

@@ -2,7 +2,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
class OpenIM { class OpenIM {
static const version = '3.8.3+hotfix.10.1'; static const version = '3.8.3+hotfix.12';
static const _channel = MethodChannel('flutter_openim_sdk'); static const _channel = MethodChannel('flutter_openim_sdk');

View File

@@ -1,6 +1,6 @@
name: flutter_openim_sdk name: flutter_openim_sdk
description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source. description: An instant messaging plug-in that supports Android and IOS. And the server is also all open source.
version: 3.8.3+hotfix.10.1 version: 3.8.3+hotfix.12
homepage: https://www.openim.io homepage: https://www.openim.io
repository: https://github.com/openimsdk/open-im-sdk-flutter repository: https://github.com/openimsdk/open-im-sdk-flutter