add ios conversion method

main
erlangzhang 4 years ago
parent 470bbb960e
commit f503ba50e3
  1. BIN
      .DS_Store
  2. 4
      .gitignore
  3. 68
      example/ios/Runner.xcodeproj/project.pbxproj
  4. 3
      example/ios/Runner.xcworkspace/contents.xcworkspacedata
  5. 2
      example/pubspec.lock
  6. 16
      ios/Classes/CommonUtil.swift
  7. 17
      ios/Classes/Module/ConversationManager.swift
  8. 142
      ios/Classes/Module/MessageManager.swift
  9. 32
      ios/Classes/SwiftFlutterOpenimSdkPlugin.swift

BIN
.DS_Store vendored

Binary file not shown.

4
.gitignore vendored

@ -0,0 +1,4 @@
.DS_Store
/.packages
/.dart_tool
/example/ios/Podfile.lock

@ -9,6 +9,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
6F7F8B794B6D663E7A65A104 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1971A63CCEC4B744C25980F8 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
@ -29,12 +30,16 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
076751BE520B721535096B75 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
1971A63CCEC4B744C25980F8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3A6AB9CCD90A2F5C2CE719D0 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
7CF14C3CACE83F04F858C9EC /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@ -49,12 +54,21 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
6F7F8B794B6D663E7A65A104 /* Pods_Runner.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */ /* Begin PBXGroup section */
4B877210D623EE0FDE18A08F /* Frameworks */ = {
isa = PBXGroup;
children = (
1971A63CCEC4B744C25980F8 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
9740EEB11CF90186004384FC /* Flutter */ = { 9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@ -72,6 +86,8 @@
9740EEB11CF90186004384FC /* Flutter */, 9740EEB11CF90186004384FC /* Flutter */,
97C146F01CF9000F007C117D /* Runner */, 97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */, 97C146EF1CF9000F007C117D /* Products */,
E653626F5A38799455FF26C4 /* Pods */,
4B877210D623EE0FDE18A08F /* Frameworks */,
); );
sourceTree = "<group>"; sourceTree = "<group>";
}; };
@ -98,6 +114,17 @@
path = Runner; path = Runner;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
E653626F5A38799455FF26C4 /* Pods */ = {
isa = PBXGroup;
children = (
7CF14C3CACE83F04F858C9EC /* Pods-Runner.debug.xcconfig */,
3A6AB9CCD90A2F5C2CE719D0 /* Pods-Runner.release.xcconfig */,
076751BE520B721535096B75 /* Pods-Runner.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@ -105,12 +132,14 @@
isa = PBXNativeTarget; isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = ( buildPhases = (
FA9CAD2EF743D14467F7D993 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */, 9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */, 97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */, 97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */, 97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */, 9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
215A1CA82008A326A8ECBF65 /* [CP] Embed Pods Frameworks */,
); );
buildRules = ( buildRules = (
); );
@ -169,6 +198,23 @@
/* End PBXResourcesBuildPhase section */ /* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */
215A1CA82008A326A8ECBF65 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase; isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
@ -197,6 +243,28 @@
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
}; };
FA9CAD2EF743D14467F7D993 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */ /* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */

@ -4,4 +4,7 @@
<FileRef <FileRef
location = "group:Runner.xcodeproj"> location = "group:Runner.xcodeproj">
</FileRef> </FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace> </Workspace>

@ -68,7 +68,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "0.0.6" version: "0.0.8+1"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter

@ -179,6 +179,11 @@ public class CommonUtil {
let result: String = getParamValue(methodCall: methodCall, param: KEY_SINGLE_MESSAGE_USERID) as! String let result: String = getParamValue(methodCall: methodCall, param: KEY_SINGLE_MESSAGE_USERID) as! String
return result return result
} }
public static func getUserid(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_SINGLE_MESSAGE_USERID) as! String
return result
}
public static func getGroupMessageGroupid(methodCall: FlutterMethodCall)->String{ public static func getGroupMessageGroupid(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MESSAGE_GROUPID) as! String let result: String = getParamValue(methodCall: methodCall, param: KEY_GROUP_MESSAGE_GROUPID) as! String
@ -190,11 +195,16 @@ public class CommonUtil {
return result return result
} }
public static func getFindMessageIds(methodCall: FlutterMethodCall)->String{ public static func getMessageIds(methodCall: FlutterMethodCall)->String{
let result = getParamValue(methodCall: methodCall, param: KEY_FIND_MESSAGE_IDS) as AnyObject let result = getParamValue(methodCall: methodCall, param: KEY_MESSAGE_IDS) as AnyObject
let r = JsonUtil.toString(object: result) let r = JsonUtil.toString(object: result)
return r return r
} }
public static func getTyping(methodCall: FlutterMethodCall)->String {
let result: String = getParamValue(methodCall: methodCall, param: "typing") as! String
return result
}
public static func getConversationId(methodCall: FlutterMethodCall)->String{ public static func getConversationId(methodCall: FlutterMethodCall)->String{
let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_ID) as! String let result: String = getParamValue(methodCall: methodCall, param: KEY_CONVERSATION_ID) as! String
@ -303,7 +313,7 @@ public class CommonUtil {
//group chat //group chat
private static let KEY_GROUP_MESSAGE_GROUPID: String = "groupID"; private static let KEY_GROUP_MESSAGE_GROUPID: String = "groupID";
// find message // find message
private static let KEY_FIND_MESSAGE_IDS: String = "messageIDList"; private static let KEY_MESSAGE_IDS: String = "messageIDList";
// conversation // conversation
private static let KEY_CONVERSATION_ID: String = "conversationID"; private static let KEY_CONVERSATION_ID: String = "conversationID";
private static let KEY_CONVERSATION_IDS: String = "conversationIDList"; private static let KEY_CONVERSATION_IDS: String = "conversationIDList";

@ -42,6 +42,23 @@ public class ConversationManager:NSObject{
func pinConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func pinConversation(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkPinConversation(CommonUtil.getConversationId(methodCall: methodCall), CommonUtil.isPinnedConversation(methodCall: methodCall), BaseImpl(result: result)) Open_im_sdkPinConversation(CommonUtil.getConversationId(methodCall: methodCall), CommonUtil.isPinnedConversation(methodCall: methodCall), BaseImpl(result: result))
} }
func markSingleMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkSingleMessageHasRead(BaseImpl(result: result), CommonUtil.getSingleMessageUserid(methodCall: methodCall))
}
func markGroupMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkGroupMessageHasRead(BaseImpl(result: result), CommonUtil.getGroupMessageGroupid(methodCall: methodCall))
}
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetTotalUnreadMsgCount(BaseImpl(result: result))
}
func getConversationIDBySessionType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
let conversationID = Open_im_sdkGetConversationIDBySessionType(CommonUtil.getConversationSourceId(methodCall: methodCall), CommonUtil.getConversationSessionType(methodCall: methodCall))
DispatchQueue.main.async { result(conversationID) }
}
} }

@ -62,7 +62,6 @@ public class MessageManager:NSObject{
} }
func deleteMessages(methodCall: FlutterMethodCall, result: FlutterResult){ func deleteMessages(methodCall: FlutterMethodCall, result: FlutterResult){
} }
func insertSingleMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func insertSingleMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -70,11 +69,18 @@ public class MessageManager:NSObject{
} }
func findMessages(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func findMessages(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkFindMessages(BaseImpl(result: result), CommonUtil.getFindMessageIds(methodCall: methodCall)) Open_im_sdkFindMessages(BaseImpl(result: result), CommonUtil.getMessageIds(methodCall: methodCall))
} }
func markSingleMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func markC2CMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkMarkSingleMessageHasRead(BaseImpl(result: result), CommonUtil.getSingleMessageUserid(methodCall: methodCall)) Open_im_sdkMarkC2CMessageAsRead(BaseImpl(result: result), CommonUtil.getUserid(methodCall: methodCall), CommonUtil.getMessageIds(methodCall: methodCall))
}
func typingStatusUpdate(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
let receiver = CommonUtil.getUserid(methodCall: methodCall)
let typing = CommonUtil.getTyping(methodCall: methodCall)
Open_im_sdkTypingStatusUpdate(receiver, typing)
DispatchQueue.main.async { result(nil) }
} }
func markGroupMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { func markGroupMessageHasRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
@ -121,76 +127,70 @@ public class MessageManager:NSObject{
DispatchQueue.main.async { result(prama) } DispatchQueue.main.async { result(prama) }
} }
func getTotalUnreadMsgCount(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetTotalUnreadMsgCount(BaseImpl(result: result))
}
func forceSyncMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func forceSyncMsg(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkForceSyncMsg() Open_im_sdkForceSyncMsg()
}
public class SendMsgProgressListener:NSObject, Open_im_sdkSendMsgCallBackProtocol {
private let channel: FlutterMethodChannel
private var result: FlutterResult?
private var call: FlutterMethodCall?
private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0)
init(channel: FlutterMethodChannel) {
self.channel = channel
} }
func setResult(result: @escaping FlutterResult){
self.result = result
}
func setCall(methodCall: FlutterMethodCall){
self.call = methodCall
}
public func onError(_ errCode: Int, errMsg: String?) {
print("=================onError============\nerrcode:\(errCode),errMsg:\(errMsg!)");
DispatchQueue.main.async { self.result!(FlutterError(code: "\(errCode)", message: errMsg, details: nil)) }
}
public func onProgress(_ progress: Int) {
print("=================onProgress============\nprogress:\(progress)");
values.setValue(CommonUtil.getSendMessageClientMsgID(methodCall: self.call!), forKey: "clientMsgID")
values.setValue(progress, forKey: "progress")
CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
}
public func onSuccess(_ data: String?) {
print("=================onSuccess============\nsuccess:\(data!)");
DispatchQueue.main.async { self.result!(data) }
}
}
public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol { public class SendMsgProgressListener:NSObject, Open_im_sdkSendMsgCallBackProtocol {
private let channel: FlutterMethodChannel
private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0) private let channel: FlutterMethodChannel
private var result: FlutterResult?
init(channel: FlutterMethodChannel, id: String) { private var call: FlutterMethodCall?
self.channel = channel private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0)
values.setValue(id, forKey: "id")
} init(channel: FlutterMethodChannel) {
self.channel = channel
public func onRecvC2CReadReceipt(_ msgReceiptList: String?) { }
values.setValue(msgReceiptList, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values) func setResult(result: @escaping FlutterResult){
} self.result = result
}
public func onRecvMessageRevoked(_ msgId: String?) {
values.setValue(msgId, forKey: "message") func setCall(methodCall: FlutterMethodCall){
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values) self.call = methodCall
}
public func onError(_ errCode: Int, errMsg: String?) {
print("=================onError============\nerrcode:\(errCode),errMsg:\(errMsg!)");
DispatchQueue.main.async { self.result!(FlutterError(code: "\(errCode)", message: errMsg, details: nil)) }
}
public func onProgress(_ progress: Int) {
print("=================onProgress============\nprogress:\(progress)");
values.setValue(CommonUtil.getSendMessageClientMsgID(methodCall: self.call!), forKey: "clientMsgID")
values.setValue(progress, forKey: "progress")
CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
}
public func onSuccess(_ data: String?) {
print("=================onSuccess============\nsuccess:\(data!)");
DispatchQueue.main.async { self.result!(data) }
}
} }
public func onRecvNewMessage(_ message: String?) { public class AdvancedMsgListener: NSObject, Open_im_sdkOnAdvancedMsgListenerProtocol {
values.setValue(message, forKey: "message") private let channel: FlutterMethodChannel
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values) private let values: NSMutableDictionary = NSMutableDictionary(capacity: 0)
init(channel: FlutterMethodChannel, id: String) {
self.channel = channel
values.setValue(id, forKey: "id")
}
public func onRecvC2CReadReceipt(_ msgReceiptList: String?) {
values.setValue(msgReceiptList, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
}
public func onRecvMessageRevoked(_ msgId: String?) {
values.setValue(msgId, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values)
}
public func onRecvNewMessage(_ message: String?) {
values.setValue(message, forKey: "message")
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
}
} }
}
} }

@ -81,6 +81,14 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
conversationManager.setConversationDraft(methodCall: call, result: result) conversationManager.setConversationDraft(methodCall: call, result: result)
}else if method == "pinConversation" { }else if method == "pinConversation" {
conversationManager.pinConversation(methodCall: call, result: result) conversationManager.pinConversation(methodCall: call, result: result)
}else if method == "markSingleMessageHasRead" {
conversationManager.markSingleMessageHasRead(methodCall: call, result: result)
}else if method == "markGroupMessageHasRead" {
conversationManager.markGroupMessageHasRead(methodCall: call, result: result)
}else if method == "getTotalUnreadMsgCount" {
conversationManager.getTotalUnreadMsgCount(methodCall: call, result: result)
}else if method == "getConversationIDBySessionType" {
conversationManager.getConversationIDBySessionType(methodCall: call, result: result)
}else{ }else{
print("Handle MethodName Error: ConversationManager method: \(method) not found") print("Handle MethodName Error: ConversationManager method: \(method) not found")
} }
@ -145,26 +153,42 @@ public class SwiftFlutterOpenimSdkPlugin: NSObject, FlutterPlugin {
messageManager.insertSingleMessageToLocalStorage(methodCall: call, result: result) messageManager.insertSingleMessageToLocalStorage(methodCall: call, result: result)
}else if method == "findMessages" { }else if method == "findMessages" {
messageManager.findMessages(methodCall: call, result: result) messageManager.findMessages(methodCall: call, result: result)
}else if method == "markSingleMessageHasRead" { }else if method == "markC2CMessageAsRead" {
messageManager.markSingleMessageHasRead(methodCall: call, result: result) messageManager.markC2CMessageAsRead(methodCall: call, result: result)
}else if method == "typingStatusUpdate" {
messageManager.typingStatusUpdate(methodCall: call, result: result)
}else if method == "createTextMessage" { }else if method == "createTextMessage" {
messageManager.createTextMessage(methodCall: call, result: result) messageManager.createTextMessage(methodCall: call, result: result)
}else if method == "createTextAtMessage" { }else if method == "createTextAtMessage" {
messageManager.createTextAtMessage(methodCall: call, result: result) messageManager.createTextAtMessage(methodCall: call, result: result)
}else if method == "createImageMessage" { }else if method == "createImageMessage" {
messageManager.createImageMessage(methodCall: call, result: result) messageManager.createImageMessage(methodCall: call, result: result)
}else if method == "createImageMessageFromFullPath" {
// TODO:
}else if method == "createSoundMessage" { }else if method == "createSoundMessage" {
messageManager.createSoundMessage(methodCall: call, result: result) messageManager.createSoundMessage(methodCall: call, result: result)
}else if method == "createSoundMessageFromFullPath" {
// TODO:
}else if method == "createVideoMessage" { }else if method == "createVideoMessage" {
messageManager.createVideoMessage(methodCall: call, result: result) messageManager.createVideoMessage(methodCall: call, result: result)
}else if method == "createVideoMessageFromFullPath" {
// TODO:
}else if method == "createFileMessage" { }else if method == "createFileMessage" {
messageManager.createFileMessage(methodCall: call, result: result) messageManager.createFileMessage(methodCall: call, result: result)
}else if method == "createMergerMessage" { }else if method == "createMergerMessage" {
messageManager.createMergerMessage(methodCall: call, result: result) messageManager.createMergerMessage(methodCall: call, result: result)
}else if method == "createForwardMessage" { }else if method == "createForwardMessage" {
messageManager.createForwardMessage(methodCall: call, result: result) messageManager.createForwardMessage(methodCall: call, result: result)
}else if method == "getTotalUnreadMsgCount" { }else if method == "createLocationMessage" {
messageManager.getTotalUnreadMsgCount(methodCall: call, result: result) // TODO:
}else if method == "createCustomMessage" {
// TODO:
}else if method == "createQuoteMessage" {
// TODO:
}else if method == "createCardMessage" {
// TODO:
}else if method == "forceSyncMsg" {
// TODO:
}else{ }else{
print("Handle MethodName Error: MessageManager method: \(method) not found") print("Handle MethodName Error: MessageManager method: \(method) not found")
} }

Loading…
Cancel
Save