You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
435 lines
24 KiB
435 lines
24 KiB
import Foundation
|
|
import OpenIMCore
|
|
|
|
public class MessageManager: BaseServiceManager {
|
|
private let KEY_ID: String = "id"
|
|
// private var listeners: [String: AdvancedMsgListener] = [:]
|
|
|
|
public override func registerHandlers() {
|
|
super.registerHandlers()
|
|
self["setAdvancedMsgListener"] = setAdvancedMsgListener
|
|
self["sendMessage"] = sendMessage
|
|
self["getHistoryMessageList"] = getHistoryMessageList
|
|
self["revokeMessage"] = revokeMessage
|
|
self["deleteMessageFromLocalStorage"] = deleteMessageFromLocalStorage
|
|
self["insertSingleMessageToLocalStorage"] = insertSingleMessageToLocalStorage
|
|
self["insertGroupMessageToLocalStorage"] = insertGroupMessageToLocalStorage
|
|
self["markC2CMessageAsRead"] = markC2CMessageAsRead
|
|
self["markGroupMessageAsRead"] = markGroupMessageAsRead
|
|
self["typingStatusUpdate"] = typingStatusUpdate
|
|
self["createTextMessage"] = createTextMessage
|
|
self["createTextAtMessage"] = createTextAtMessage
|
|
self["createImageMessage"] = createImageMessage
|
|
self["createImageMessageFromFullPath"] = createImageMessageFromFullPath
|
|
self["createSoundMessage"] = createSoundMessage
|
|
self["createSoundMessageFromFullPath"] = createSoundMessageFromFullPath
|
|
self["createVideoMessage"] = createVideoMessage
|
|
self["createVideoMessageFromFullPath"] = createVideoMessageFromFullPath
|
|
self["createFileMessage"] = createFileMessage
|
|
self["createFileMessageFromFullPath"] = createFileMessageFromFullPath
|
|
self["createMergerMessage"] = createMergerMessage
|
|
self["createForwardMessage"] = createForwardMessage
|
|
self["createLocationMessage"] = createLocationMessage
|
|
self["createCustomMessage"] = createCustomMessage
|
|
self["createQuoteMessage"] = createQuoteMessage
|
|
self["createCardMessage"] = createCardMessage
|
|
self["createFaceMessage"] = createFaceMessage
|
|
self["clearC2CHistoryMessage"] = clearC2CHistoryMessage
|
|
self["clearGroupHistoryMessage"] = clearGroupHistoryMessage
|
|
self["searchLocalMessages"] = searchLocalMessages
|
|
self["deleteMessageFromLocalAndSvr"] = deleteMessageFromLocalAndSvr
|
|
self["deleteAllMsgFromLocal"] = deleteAllMsgFromLocal
|
|
self["deleteAllMsgFromLocalAndSvr"] = deleteAllMsgFromLocalAndSvr
|
|
self["markMessageAsReadByConID"] = markMessageAsReadByConID
|
|
self["clearC2CHistoryMessageFromLocalAndSvr"] = clearC2CHistoryMessageFromLocalAndSvr
|
|
self["clearGroupHistoryMessageFromLocalAndSvr"] = clearGroupHistoryMessageFromLocalAndSvr
|
|
self["getHistoryMessageListReverse"] = getHistoryMessageListReverse
|
|
self["newRevokeMessage"] = newRevokeMessage
|
|
self["getAdvancedHistoryMessageList"] = getAdvancedHistoryMessageList
|
|
self["findMessageList"] = findMessageList
|
|
self["createAdvancedTextMessage"] = createAdvancedTextMessage
|
|
self["createAdvancedQuoteMessage"] = createAdvancedQuoteMessage
|
|
self["sendMessageNotOss"] = sendMessageNotOss
|
|
self["createImageMessageByURL"] = createImageMessageByURL
|
|
self["createSoundMessageByURL"] = createSoundMessageByURL
|
|
self["createVideoMessageByURL"] = createVideoMessageByURL
|
|
self["createFileMessageByURL"] = createFileMessageByURL
|
|
self["setCustomBusinessListener"] = setCustomBusinessListener
|
|
self["setMessageKvInfoListener"] = setMessageKvInfoListener
|
|
self["setMessageReactionExtensions"] = setMessageReactionExtensions
|
|
self["deleteMessageReactionExtensions"] = deleteMessageReactionExtensions
|
|
self["getMessageListReactionExtensions"] = getMessageListReactionExtensions
|
|
self["addMessageReactionExtensions"] = addMessageReactionExtensions
|
|
self["getMessageListSomeReactionExtensions"] = getMessageListSomeReactionExtensions
|
|
}
|
|
|
|
func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let key = methodCall[string: KEY_ID]
|
|
let lis = AdvancedMsgListener(channel: channel, id: key)
|
|
Open_im_sdkSetAdvancedMsgListener(lis)
|
|
callBack(result)
|
|
}
|
|
|
|
func sendMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
|
Open_im_sdkSendMessage(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"],
|
|
methodCall[string: "groupID"], methodCall[jsonString: "offlinePushInfo"])
|
|
}
|
|
|
|
func getHistoryMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkGetHistoryMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func revokeMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkRevokeMessage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func deleteMessageFromLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkDeleteMessageFromLocalStorage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
|
|
func insertSingleMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkInsertSingleMessageToLocalStorage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"],
|
|
methodCall[string: "receiverID"], methodCall[string: "senderID"])
|
|
}
|
|
|
|
func insertGroupMessageToLocalStorage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkInsertGroupMessageToLocalStorage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"],
|
|
methodCall[string: "groupID"], methodCall[string: "senderID"])
|
|
}
|
|
|
|
func markC2CMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkMarkC2CMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"], methodCall[jsonString: "messageIDList"])
|
|
}
|
|
|
|
func markGroupMessageAsRead(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkMarkGroupMessageAsRead(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"], methodCall[jsonString: "messageIDList"])
|
|
}
|
|
|
|
func typingStatusUpdate(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkTypingStatusUpdate(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"], methodCall[string: "msgTip"])
|
|
}
|
|
|
|
func createTextMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateTextMessage(methodCall[string: "operationID"], methodCall[string: "text"]))
|
|
}
|
|
|
|
func createTextAtMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateTextAtMessage(methodCall[string: "operationID"], methodCall[string: "text"],
|
|
methodCall[jsonString: "atUserIDList"], methodCall[jsonString: "atUserInfoList"], methodCall[jsonString: "quoteMessage"]))
|
|
}
|
|
|
|
func createImageMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateImageMessage(methodCall[string: "operationID"], methodCall[string: "imagePath"]))
|
|
}
|
|
|
|
func createImageMessageFromFullPath(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateImageMessageFromFullPath(methodCall[string: "operationID"], methodCall[string: "imagePath"]))
|
|
}
|
|
|
|
func createSoundMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateSoundMessage(methodCall[string: "operationID"], methodCall[string: "soundPath"], methodCall[int64: "duration"]))
|
|
}
|
|
|
|
func createSoundMessageFromFullPath(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateSoundMessageFromFullPath(methodCall[string: "operationID"], methodCall[string: "soundPath"], methodCall[int64: "duration"]))
|
|
}
|
|
|
|
func createVideoMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateVideoMessage(methodCall[string: "operationID"], methodCall[string: "videoPath"], methodCall[string: "videoType"],
|
|
methodCall[int64: "duration"], methodCall[string: "snapshotPath"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createVideoMessageFromFullPath(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateVideoMessageFromFullPath(methodCall[string: "operationID"], methodCall[string: "videoPath"], methodCall[string: "videoType"],
|
|
methodCall[int64: "duration"], methodCall[string: "snapshotPath"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createFileMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateFileMessage(methodCall[string: "operationID"], methodCall[string: "filePath"], methodCall[string: "fileName"]))
|
|
}
|
|
|
|
func createFileMessageFromFullPath(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateFileMessageFromFullPath(methodCall[string: "operationID"], methodCall[string: "filePath"], methodCall[string: "fileName"]))
|
|
}
|
|
|
|
func createMergerMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateMergerMessage(methodCall[string: "operationID"], methodCall[jsonString: "messageList"], methodCall[string: "title"],
|
|
methodCall[jsonString: "summaryList"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createForwardMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateForwardMessage(methodCall[string: "operationID"], methodCall[jsonString: "message"]))
|
|
}
|
|
|
|
func createLocationMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateLocationMessage(methodCall[string: "operationID"], methodCall[string: "description"],
|
|
methodCall[double: "longitude"], methodCall[double: "latitude"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createCustomMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateCustomMessage(methodCall[string: "operationID"], methodCall[string: "data"],
|
|
methodCall[string: "extension"], methodCall[string: "description"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createQuoteMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateQuoteMessage(methodCall[string: "operationID"], methodCall[string: "quoteText"], methodCall[jsonString: "quoteMessage"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createCardMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateCardMessage(methodCall[string: "operationID"], methodCall[jsonString: "cardMessage"]))
|
|
}
|
|
|
|
func createFaceMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateFaceMessage(methodCall[string: "operationID"], methodCall[int: "index"], methodCall[string: "data"]))
|
|
}
|
|
|
|
func createAdvancedTextMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateAdvancedTextMessage(methodCall[string: "operationID"], methodCall[string: "text"], methodCall[jsonString: "richMessageInfoList"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func createAdvancedQuoteMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let prama = Open_im_sdkCreateAdvancedQuoteMessage(methodCall[string: "operationID"], methodCall[string: "quoteText"], methodCall[jsonString: "quoteMessage"], methodCall[jsonString: "richMessageInfoList"])
|
|
callBack(result, prama)
|
|
}
|
|
|
|
func clearC2CHistoryMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkClearC2CHistoryMessage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
|
}
|
|
|
|
func clearGroupHistoryMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkClearGroupHistoryMessage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
|
}
|
|
|
|
func searchLocalMessages(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkSearchLocalMessages(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "filter"])
|
|
}
|
|
|
|
func deleteMessageFromLocalAndSvr(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
Open_im_sdkDeleteMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func deleteAllMsgFromLocal(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
Open_im_sdkDeleteAllMsgFromLocal(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
}
|
|
|
|
func deleteAllMsgFromLocalAndSvr(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
Open_im_sdkDeleteAllMsgFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"])
|
|
}
|
|
|
|
func markMessageAsReadByConID(methodCall: FlutterMethodCall, result: @escaping FlutterResult) {
|
|
Open_im_sdkMarkMessageAsReadByConID(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[jsonString: "messageIDList"])
|
|
}
|
|
|
|
func clearC2CHistoryMessageFromLocalAndSvr(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkClearC2CHistoryMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "userID"])
|
|
}
|
|
|
|
func clearGroupHistoryMessageFromLocalAndSvr(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkClearGroupHistoryMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
|
|
}
|
|
|
|
func getHistoryMessageListReverse(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkGetHistoryMessageListReverse(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func newRevokeMessage(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkNewRevokeMessage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func getAdvancedHistoryMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkGetAdvancedHistoryMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
|
|
}
|
|
|
|
func findMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkFindMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParams"])
|
|
}
|
|
|
|
func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall)
|
|
Open_im_sdkSendMessageNotOss(sendMsgProgressListener, methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[string: "userID"],
|
|
methodCall[string: "groupID"], methodCall[jsonString: "offlinePushInfo"])
|
|
}
|
|
|
|
func createImageMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateImageMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "sourcePicture"], methodCall[jsonString: "bigPicture"], methodCall[jsonString: "snapshotPicture"]))
|
|
}
|
|
|
|
func createSoundMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateSoundMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "soundElem"]))
|
|
}
|
|
|
|
func createVideoMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateVideoMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "videoElem"]))
|
|
}
|
|
|
|
func createFileMessageByURL(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
callBack(result, Open_im_sdkCreateFileMessageByURL(methodCall[string: "operationID"], methodCall[jsonString: "fileElem"]))
|
|
}
|
|
|
|
func setCustomBusinessListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkSetCustomBusinessListener(CustomBusinessListener(channel: channel))
|
|
callBack(result)
|
|
}
|
|
|
|
func setMessageKvInfoListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkSetMessageKvInfoListener(MessageKvInfoListener(channel: channel))
|
|
callBack(result)
|
|
}
|
|
|
|
func setMessageReactionExtensions(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkSetMessageReactionExtensions(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[jsonString: "list"])
|
|
}
|
|
|
|
func deleteMessageReactionExtensions(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkDeleteMessageReactionExtensions(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[jsonString: "list"])
|
|
}
|
|
|
|
func getMessageListReactionExtensions(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkGetMessageListReactionExtensions(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "messageList"])
|
|
}
|
|
|
|
func addMessageReactionExtensions(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkAddMessageReactionExtensions(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "message"], methodCall[jsonString: "list"])
|
|
}
|
|
|
|
func getMessageListSomeReactionExtensions(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
|
|
Open_im_sdkGetMessageListSomeReactionExtensions(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "messageList"], methodCall[jsonString: "list"])
|
|
}
|
|
}
|
|
|
|
public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol {
|
|
private let channel: FlutterMethodChannel
|
|
private let result: FlutterResult
|
|
private let call: FlutterMethodCall
|
|
|
|
init(channel: FlutterMethodChannel, result: @escaping FlutterResult, methodCall: FlutterMethodCall) {
|
|
self.channel = channel
|
|
self.result = result
|
|
self.call = methodCall
|
|
}
|
|
|
|
public func onError(_ errCode: Int32, errMsg: String?) {
|
|
DispatchQueue.main.async { self.result(FlutterError(code: "\(errCode)", message: errMsg, details: nil)) }
|
|
}
|
|
|
|
public func onProgress(_ progress: Int) {
|
|
var values: [String: Any] = [:]
|
|
let message = call[dict: "message"]
|
|
values["clientMsgID"] = message["clientMsgID"]
|
|
values["progress"] = progress
|
|
CommonUtil.emitEvent(channel: channel, method: "msgSendProgressListener", type: "onProgress", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onSuccess(_ data: String?) {
|
|
DispatchQueue.main.async { self.result(data) }
|
|
}
|
|
|
|
}
|
|
|
|
public class AdvancedMsgListener: NSObject, Open_im_sdk_callbackOnAdvancedMsgListenerProtocol {
|
|
|
|
private let channel: FlutterMethodChannel
|
|
private let id: String
|
|
|
|
init(channel: FlutterMethodChannel, id: String) {
|
|
self.channel = channel
|
|
self.id = id
|
|
}
|
|
|
|
public func onRecvC2CReadReceipt(_ msgReceiptList: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["c2cMessageReadReceipt"] = msgReceiptList
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvC2CReadReceipt", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvGroupReadReceipt(_ groupMsgReceiptList: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["groupMessageReadReceipt"] = groupMsgReceiptList
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvGroupReadReceipt", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvMessageRevoked(_ msgId: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["revokedMessage"] = msgId
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageRevoked", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvNewMessage(_ message: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["newMessage"] = message
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvNewMessage", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onNewRecvMessageRevoked(_ messageRevoked: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["revokedMessageV2"] = messageRevoked
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onNewRecvMessageRevoked", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvMessageExtensionsChanged(_ msgID: String?, reactionExtensionList: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["msgID"] = msgID
|
|
values["list"] = reactionExtensionList
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsChanged", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvMessageExtensionsDeleted(_ msgID: String?, reactionExtensionKeyList: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["msgID"] = msgID
|
|
values["list"] = reactionExtensionKeyList
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsDeleted", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
public func onRecvMessageExtensionsAdded(_ msgID: String?, reactionExtensionList: String?) {
|
|
var values: [String: Any] = [:]
|
|
values["id"] = id
|
|
values["msgID"] = msgID
|
|
values["list"] = reactionExtensionList
|
|
CommonUtil.emitEvent(channel: channel, method: "advancedMsgListener", type: "onRecvMessageExtensionsAdded", errCode: nil, errMsg: nil, data: values)
|
|
}
|
|
|
|
}
|
|
|
|
public class CustomBusinessListener: NSObject, Open_im_sdk_callbackOnCustomBusinessListenerProtocol {
|
|
private let channel: FlutterMethodChannel
|
|
|
|
init(channel: FlutterMethodChannel) {
|
|
self.channel = channel
|
|
}
|
|
|
|
public func onRecvCustomBusinessMessage(_ s: String?) {
|
|
CommonUtil.emitEvent(channel: channel, method: "customBusinessListener", type: "onRecvCustomBusinessMessage", errCode: nil, errMsg: nil, data: s)
|
|
}
|
|
}
|
|
|
|
|
|
public class MessageKvInfoListener: NSObject, Open_im_sdk_callbackOnMessageKvInfoListenerProtocol {
|
|
|
|
|
|
private let channel: FlutterMethodChannel
|
|
|
|
init(channel: FlutterMethodChannel) {
|
|
self.channel = channel
|
|
}
|
|
|
|
public func onMessageKvInfoChanged(_ s: String?) {
|
|
CommonUtil.emitEvent(channel: channel, method: "messageKvInfoListener", type: "onMessageKvInfoChanged", errCode: nil, errMsg: nil, data: s)
|
|
}
|
|
|
|
}
|
|
|