JivoChat / JivoSDK-Android

The Jivo Mobile SDK allows you to embed the Jivo chat into your Android mobile applications to receive customer requests
https://www.jivochat.com
10 stars 5 forks source link

Иногда крашится app, jivo sdk инициализирован по инструкцию #39

Closed Qutbiddin closed 1 year ago

Qutbiddin commented 2 years ago

Fatal Exception: java.lang.RuntimeException: Unable to create service com.jivosite.sdk.socket.JivoWebSocketService: kotlin.UninitializedPropertyAccessException: lateinit property jivoSdkComponent has not been initialized at android.app.ActivityThread.handleCreateService(ActivityThread.java:4083) at android.app.ActivityThread.access$1800(ActivityThread.java:232) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1969) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7697) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

tavtorkin-jivo commented 2 years ago

@Qutbiddin Здравствуйте. А вы можете показать фрагмент кода, инициализации JivoSDK. Как я понимаю, вызов статического метода Jivo.init() находится в унаследованном от класса Application, в теле метода onCreate() ? И возможно у вас есть кейс воспроизведения данной ошибки?

Qutbiddin commented 2 years ago

давно решили) сделали функцию в Application и вызвали после инициализации необходимых компонентов

Kooo9058 commented 2 years ago

Наблюдаю такое же падение приложения, только в моём случае инит живочата происходит дальше чем в классе Application. Контекст передаю глобальный, но андроид чистит из памяти object. Пожалуйста, подскажите решение данной проблемы

Kooo9058 commented 2 years ago

давно решили) сделали функцию в Application и вызвали после инициализации необходимых компонентов

Подскажите как решили проблему падения ?

tavtorkin-jivo commented 2 years ago

Наблюдаю такое же падение приложения, только в моём случае инит живочата происходит дальше чем в классе Application. Контекст передаю глобальный, но андроид чистит из памяти object. Пожалуйста, подскажите решение данной проблемы

Добрый день! Мы не гарантируем корректную работу SDK, если вы пытаетесь вызвать Jivo.init() не в классе унаследованном от Application Можете пояснить, с какой целью вы вызываете Jivo.init() не в классе унаследованном от Application ?

Kooo9058 commented 2 years ago

widgetId изменяется динамически, и получение id происходит позднее чем инит живочата. Поэтому инит делаем по приходу id с бэка. Есть мысль сделать статику у класса App, а после ее подтягивать в момент инициализации живочата. Насколько правильным будет такое решение?

class App : Application { companion object { lateinit var INSTANCE: App

override fun onCreate() { super.onCreate() INSTANCE = this } }

Поздней подтягивать инстанс класса app Jivo.init( appContext = App.INSTANCE, widgetId = id

    )
Qutbiddin commented 2 years ago

Наблюдаю такое же падение приложения, только в моём случае инит живочата происходит дальше чем в классе Application. Контекст передаю глобальный, но андроид чистит из памяти object. Пожалуйста, подскажите решение данной проблемы

Добрый день! Мы не гарантируем корректную работу SDK, если вы пытаетесь вызвать Jivo.init() не в классе унаследованном от Application Можете пояснить, с какой целью вы вызываете Jivo.init() не в классе унаследованном от Application ?

будет ли в будущем возможность задавать widgetId после Jivo.init() ?

Qutbiddin commented 2 years ago

давно решили) сделали функцию в Application и вызвали после инициализации необходимых компонентов

Подскажите как решили проблему падения ?

fcvJivo.post { childFragmentManager .beginTransaction() .replace(R.id.fcvJivo, JivoChatFragment()) .commit() } передайте child вместе parrent fragment

tavtorkin-jivo commented 2 years ago

Да, мы планируем динамическую смену widgetId.

Kooo9058 commented 2 years ago

давно решили) сделали функцию в Application и вызвали после инициализации необходимых компонентов

Подскажите как решили проблему падения ?

fcvJivo.post { childFragmentManager .beginTransaction() .replace(R.id.fcvJivo, JivoChatFragment()) .commit() } передайте child вместе parrent fragment

Прошу дать развернутый ответ:) ибо не до конца понятно, причём тут фрагмент менеджер.

Kooo9058 commented 2 years ago

давно решили) сделали функцию в Application и вызвали после инициализации необходимых компонентов

Возможно ли с вами связаться для краткой консультации?:)

tavtorkin-jivo commented 1 year ago

@Qutbiddin @Kooo9058 Добрый день коллеги! Вышло обновление SDK 1.2.0, добавлена возможность смены канала. Подробнее по ссылке.

Qutbiddin commented 1 year ago

заработал, спасибо!