SBSMChannelCollectionDelegate when receiving a new message triggers twice the .update event

pending message id 0 is normal, and it doesn’t get affected by sending status. You have to use the object from callback.

1 Like

am I writing this correctly?

- (void)setPendingMessage:(SBDBaseMessage *)message {
    if (message) {
        [self.collection appendMessage:message];

- (void)setSentMessage:(SBDBaseMessage *)message {
    if (message) {
        [self.collection updateMessage:message];

[self.collection updateMessage:message] this method can cause triggers .update event?If so, I’m not working at the moment

@Woo, the issue got fixed in some devices, some didn’t experience the issue for a while but then it came back in.

Are you sure both simulators running on latest SDK?

I am not using simulators, this is from a build sent to my project manager to test the issue, it worked for around an hour then the issue started happening again.

Ok, it would be helpful if you can tell me whether it consistently happens or works when you restart your app. Did you install latest SDK on both side? and would you try to comment out markAsRead and tell me if this happens?

the issue is behaving the same way, mark as read is commented out, although the chat view controller would need to be open for it to be called… when the app is active, issue happens, when sending the app to aground and coming back in data is correct, or closing and opening the app, has correct data, but when receiving the messages in the app, being active issue happens.

So even though markAsRead is commented out, still happening? Yes I know markAsRead is needed, I just want to make check if it causes the issue. And you didn’t answer my question, could you confirm both ends use latest SDK version?

Oh I see the same result when I enter and exit and re-enter again… I will dig again. One last thing, I observed same issue when

  1. UserA (chat view) sends a message to UserB (channel list view)
  2. UserB enter to chat view and send a message
  3. UserB goes back to channel list view
  4. UserA sends a message again

and it worked again from above scenario when

  1. UserB enter to chat view and back to channel list view

Could you confirm this?

1 Like

And if you made your project from the sample, there’s memory leak that chat view is not released properly -> which causes to call markAsRead when other user sends a message. I’ve updated sample app (fixed memory leak), and I do not see the problem anymore. Please check the sample app :slight_smile: Thanks

1 Like

@Woo I’ve made changes to avoid memory leak just in case it was happening, issue still there. It did not work again after running that scenario. and yes, both ends are running on the same SDK version.

Can you check sample? I updated it yesterday. Could you please run the sample on your devices and see if its happening?

1 Like

I could not run the sample, first it says there’s no message.requestState() and I had to replace with requestStatus(), second as soon as I login, the app crashes after GroupChannelsViewController loads, Thread 5: EXC_BAD_ACCESS (code=2, address=0x16cff7ff0)

  `19 ->  0x104550ff0 <+68>:  cbz    w0, 0x10455100c           ; <+96> at SBDBaseMessage+SyncManager.m:93:34`

warning: could not execute support code to read Objective-C class data in the process. This may reduce the quality of type information available.

but in my project again moving the app to background and then back in, will return the correct unread message count, so the channel is not being marked as read.

Would you please download the sample with latest version? So I guess its not the problem with markAsRead one but the bug that I fixed previously. When sendbird server sends a read (receive markAsRead from A and sends update read receipt to B) command to the other end, SendBirdSDK has the bug that reset the unread count locally and pass the channel to didUpdateReadReceipt:

1 Like

I did download the latest one from the Master branch, which seems updated by you yesterday.

and yes, it seems to be the same issue that you fixed previously

So latest sample is not working due to message.requestState() ? did you do pod update do get latest SendBirdSDK? because requestStatus() was typo and I fixed it on latest version.

1 Like

I was able to get the latest sample and get it working with a pod update, I’m not able to install the sample project on the devices experiencing the issue since I do not have access to them, on those devices, behavior seems to be the same one as the one you previously fixed(they have an updated adhoc build with the latest SDK), but it comes and goes, so it improved a bit but it’s still there.

“I’m not able to install the sample project on the devices experiencing the issue since I do not have access to them” << what do you mean by you do not have access to them?

I think you need to install sample on devices and see if the issue still happens first since I do not have any issue with it. There are some cases SDK locally erase unreadMessageCount of channel when – user does markAsRead or leave the channel or hide the channel or user get banned. And like I said earlier, your case is most likely due to markAsRead which I fixed. If this issue still happens on the sample, let me know