Push notifications not delivered for first-time or reinstalled users

[Problem/Question]
We are experiencing an issue where some users are not receiving push notifications, and we would like to ask for your support. (The same issue also occurs on iOS)

Issue details

  • The issue primarily occurs for first-time app users or users who have reinstalled the app after deleting it.
  • It is reproducible with a very high probability, although it occasionally works as expected.
  • Even when the push token exists and is successfully matched with the userId, some users do not receive push notifications in certain cases.
  • When push notifications are not received, entering the chat room allows normal message sending and receiving.
  • However, after leaving the chat room, push notifications are again intermittently not received.
  • As a result, when the other party sends a message, the user does not receive any push notifications.

Questions

  • Are there any specific cases where Sendbird does not send push notifications?
  • Is there anything additional we should check on our side?

[UIKit Version]

  • sendbird : 4.22.0

[Reproduction Steps]

  • (After reinstalling the app or on a fresh install) Launch the app → Navigate to screen A → Navigate to screen B → Navigate to screen C.
  • Below is a summarized version of the code we are currently using.
    After saving the push token, we match it with the userId, and based on whether the matching succeeds or fails, we proceed with the next operation.
  • override fun onNewToken(token: String) {
        super.onNewToken(token)
        SendbirdChat.registerPushToken(token) { status, error ->
            // ..
        }
    }
    
  • override fun sendbirdConnect(phone: String) {
        SendbirdChat.connect(phone) { sendbirdUser, error ->
            if (token.isNotNullNorBlank()) {
                SendbirdChat.registerPushToken(token) { status, error ->
                    error?.let {
                        Timber.e(it)
                    }
                }
            } else {
                FirebaseMessaging.getInstance().token.addOnSuccessListener { item ->
                    SendbirdChat.registerPushToken(item) { status, error ->
                        // ...
                    }
                }
            }
        }
    }
    

[Frequency]

  • The issue occurs with over 80% probability when following the reproduction steps above.

[Current impact]

  • This is occurring in the production app, directly affecting user experience, and is considered a high-priority issue to resolve.