Я пытаюсь получить данные об атрибуции с помощью Appsflyer. Я последовал их рекомендации по инициализации sdk внутри метода Application onCreate()
.
override fun onCreate() {
super.onCreate()
if (FirstLaunchChecker().isFirst(this)) {
checkInstall()
}
}
Перед инициализацией sdk мне нужно собрать некоторые пользовательские данные, что занимает некоторое время. (SystemInfo.init()
)
object SystemInfo {
//fields
suspend fun init(context: Context) {
withContext(Dispatchers.Default) {
//do stuff
}
}
}
Если я сделаю это так, ни один из AppsFlyerConversionListener
обратных вызовов не будет вызван. И в журнале ничего нет после
D / AppsFlyer_5.2.0: Инициализация SDK AppsFlyer: (v5.2.0.311)
fun checkInstall() {
GlobalScope.launch {
SystemInfo.init(applicationContext)
withContext(Dispatchers.Main) {
appsFlyerManager = AppsFlyerManager()
appsFlyerManager!!.check(applicationContext)
}
}
}
Но если я это сделаю вот так все работает
fun checkInstall() {
GlobalScope.launch {
SystemInfo.init(applicationContext)
}
Thread.sleep(3000)
appsFlyerManager = AppsFlyerManager()
appsFlyerManager!!.check(applicationContext)
}
Журнал, когда все инициализируется должным образом: https://pastebin.com/DusV4MtA
AppsflyerManager.check()
:
fun check(context: Context) {
val attributionCallback = context as AttributionCallback
val conversionListener = ConversionListener(attributionCallback)
AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionListener, context)
AppsFlyerLib.getInstance().startTracking(context)
}
My Тестовое устройство занесено в белый список. Каждый раз, когда я тестирую, я удаляю приложение> нажимаю на ссылку appsflyer> debug
Как отложить инициализацию appsflyer до завершения инициализации SystemInfo? Также я действительно не хочу избавляться от сопрограмм