Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Android Kotlin Pusher error Start method must be called before setUserId pusher

Ouverte
#265 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
15/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
android, kotlin
Domaine
mobile

Piste de recherche

The report is a Kotlin Android app calling PushNotifications.start, setUserId, close and clearAllState from the Beams SDK, and it crashes with 'Start method must be called before setUserId'. Start with the sequence in the snippet: start runs inside GlobalScope.launch, while setUserId runs only after an async view-model callback, and close and clearAllState run during logout. The work is done when the ordering problem is reproduced or explained and the reporter's flow is confirmed. The issue has two comments, no assignee and no linked pull request, and the last comment was about 994 days ago, so confirm with a maintainer that it is still wanted before starting.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

question

version pusher = "2.2.1"
version pusherNotifications = "1.6.2"
Hi,
I don´t understand this error... It only happens when I close session and call to

  PushNotifications.close()
  PushNotifications.clearAllState()

Then when go to my first Activity the app crash with the error
Pusher error Start method must be called before setUserId pusher.
But as you can see in my below code I call PushNotifications.start() first.
When the apps crash and open again, all works fine
My code
onCreate(savedInstanceState: Bundle?) {initPusher() }
initPusher is this code

        GlobalScope.launch(dispatchers.main) {
            PushNotifications.start(applicationContext, "xxxxxxx-xxx-xxxxx-xx-xxxxxx")
            viewModel.loadInfoPusherSubscribe {
                val userId = it.first
                val token = it.second
                val realToken = "Bearer "+ token
                val realURL = "https://xxxxxxxxxxx?user_id=$userId"
                val tokenProvider = BeamsTokenProvider(
                    realURL,
                    object : AuthDataGetter {
                        override fun getAuthData(): AuthData {
                            return AuthData(
                                // Headers and URL query params your auth endpoint needs to
                                // request a Beams Token for a given user
                                headers = hashMapOf( Pair("Authorization", realToken),
                                                     Pair("accept", "text/plain"),
                                                     Pair("Content-Type", "application/json-patch+json")),
                                queryParams = hashMapOf()
                            )
                        }
                    }
                )

                PushNotifications.setUserId(userId, tokenProvider,
                    object : BeamsCallback<Void, PusherCallbackError> {
                        override fun onFailure(error: PusherCallbackError) {
                            Log.e("BeamsAuth", "Could not login to Beams: ${error.message}");
                        }

                        override fun onSuccess(vararg values: Void) {
                            Log.i("BeamsAuth", "Beams login success");
                        }
                    }
                )
            }
        }
My viewModel
 suspend fun loadInfoPusherSubscribe(listener: InfoPusherListener)=
       viewModelScope.launch(dispatchers.io) {
           val profileId = async { profileDao.getProfileUser().id }
           val token =  async { session.getSessionUser().accessToken }
           withContext(dispatchers.main){
               listener.invoke(Pair(profileId.await(),token.await()))

           }

    }

What is the problem?
PushNotifications.start() is asynchronous method???

Langage dominant
Java
Étoiles
315
Forks
140
Merge moyen
10 j 14 h
PR mergées (30 j)
5

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de pusher/pusher-websocket-java

Toutes les issues de pusher/pusher-websocket-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.