diff --git a/Makefile b/Makefile index ff9a7583b..2184d0a34 100644 --- a/Makefile +++ b/Makefile @@ -23,4 +23,4 @@ reset_remote_branch: ios: reset_remote_branch go get golang.org/x/mobile rm -rf build/ open_im_sdk/t_friend_sdk.go - GOARCH=arm64 gomobile bind -v -trimpath -ldflags "-s -w" -o build/OpenIMCore.framework -target=ios ./open_im_sdk/ \ No newline at end of file + GOARCH=arm64 gomobile bind -v -trimpath -ldflags "-s -w" -o build/OpenIMCore.xcframework -target=ios ./open_im_sdk/ \ No newline at end of file diff --git a/open_im_sdk/conversation_msg.go b/open_im_sdk/conversation_msg.go index a42b2d003..ecdc5fd4e 100644 --- a/open_im_sdk/conversation_msg.go +++ b/open_im_sdk/conversation_msg.go @@ -90,7 +90,7 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { } if v.SendID == u.LoginUid { //seq對齊消息 Messages sent by myself if u.judgeMessageIfExists(msg) { //if sent through this terminal - err := u.updateMessageSeq(msg) + err := u.updateMessageSeq(msg, MsgStatusSendSuccess) if err != nil { sdkLog("updateMessageSeq err", err.Error(), msg) } @@ -121,7 +121,7 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { c.ConversationID = GetConversationIDBySessionType(c.GroupID, GroupChatType) } - if msg.ContentType <= AcceptFriendApplicationTip { + if msg.ContentType <= AcceptFriendApplicationTip && msg.ContentType != HasReadReceipt { newMessages = append(newMessages, msg) u.doUpdateConversation(cmd2Value{Value: updateConNode{c.ConversationID, AddConOrUpLatMsg, c}}) @@ -185,7 +185,10 @@ func (u *UserRelated) doMsgNew(c2v cmd2Value) { newMessages = append(newMessages, msg) } else { - _ = u.insertPushMessageToChatLog(msg) + err = u.insertPushMessageToChatLog(msg) + if err != nil { + sdkLog("insert HasReadReceipt err:", err) + } //update read state msgReadList = append(msgReadList, msg) } diff --git a/open_im_sdk/data_model.go b/open_im_sdk/data_model.go index 8b1a82e0b..bcc2386a5 100644 --- a/open_im_sdk/data_model.go +++ b/open_im_sdk/data_model.go @@ -1354,15 +1354,15 @@ func (u *UserRelated) insertPushMessageToChatLog(message *MsgStruct) (err error) return nil } -func (u *UserRelated) updateMessageSeq(message *MsgStruct) (err error) { +func (u *UserRelated) updateMessageSeq(message *MsgStruct, status int) (err error) { u.mRWMutex.Lock() defer u.mRWMutex.Unlock() - stmt, err := u.Prepare("update chat_log set seq=? where msg_id=?") + stmt, err := u.Prepare("update chat_log set seq=?,status=? where msg_id=?") if err != nil { sdkLog("Prepare failed, ", err.Error()) return err } - _, err = stmt.Exec(message.Seq, message.ClientMsgID) + _, err = stmt.Exec(message.Seq, status, message.ClientMsgID) if err != nil { sdkLog("Exec failed ", err.Error()) return err diff --git a/open_im_sdk/open_im_sdk_conversation_msg.go b/open_im_sdk/open_im_sdk_conversation_msg.go index 095fe5a36..7b7fdaae8 100644 --- a/open_im_sdk/open_im_sdk_conversation_msg.go +++ b/open_im_sdk/open_im_sdk_conversation_msg.go @@ -1375,6 +1375,28 @@ func (u *UserRelated) InsertSingleMessageToLocalStorage(callback Base, message, return s.ClientMsgID } +func (u *UserRelated) InsertGroupMessageToLocalStorage(callback Base, message, groupID, sender string) string { + s := MsgStruct{} + err := json.Unmarshal([]byte(message), &s) + if err != nil { + callback.OnError(200, err.Error()) + return "" + } + s.SendID = sender + s.RecvID = groupID + //Generate client message primary key + s.ClientMsgID = getMsgID(s.SendID) + s.SendTime = getCurrentTimestampByNano() + go func() { + if err = u.insertMessageToLocalOrUpdateContent(&s); err != nil { + callback.OnError(201, err.Error()) + } else { + callback.OnSuccess("") + } + }() + return s.ClientMsgID +} + func (u *UserRelated) FindMessages(callback Base, messageIDList string) { go func() { var c []string diff --git a/open_im_sdk/ws_wrapper/open_im_sdk_server.go b/open_im_sdk/ws_wrapper/open_im_sdk_server.go index 6de2b8912..9375be112 100644 --- a/open_im_sdk/ws_wrapper/open_im_sdk_server.go +++ b/open_im_sdk/ws_wrapper/open_im_sdk_server.go @@ -46,7 +46,6 @@ func main() { ws_local_server.InitServer(&open_im_sdk.IMConfig{IpApiAddr: *openIMApiAddress, IpWsAddr: *openIMWsAddress, Platform: utils.OSXPlatformID, DbDir: "./"}) case "linux": - //sdkDBDir:= flag.String("sdk_db_dir","","openIMSDK initialization path") ws_local_server.InitServer(&open_im_sdk.IMConfig{IpApiAddr: "http://" + utils.ServerIP + ":" + utils.IntToString(*openIMApiPort), IpWsAddr: "ws://" + utils.ServerIP + ":" + utils.IntToString(*openIMWsPort), Platform: utils.WebPlatformID, DbDir: "../db/sdk/"})