Когда Adapty сопоставляет установку с кампанией, он возвращает данные атрибуции в вашем приложении через колбэк onInstallationDetailsSuccess. Используйте эти данные для персонализации пользовательского опыта на основе канала или кампании, которые привели к установке.
Important
Начиная с Adapty SDK версии 4.1, Adapty Attribution отключена по умолчанию. Колбэк onInstallationDetailsSuccess срабатывает только после того, как вы включите Adapty Attribution при активации SDK.
Данные атрибуции возвращаются как вложенный объект attribution внутри поля payload. Он содержит следующие поля:
Поле
Описание
channel
Канал привлечения (например, facebook, tiktok, google, organic)
campaign_id
Идентификатор кампании
campaign_name
Название кампании
adset_id
Идентификатор адсета / группы объявлений
adset_name
Название адсета / группы объявлений
ad_id
Идентификатор объявления / креатива
ad_name
Название объявления / креатива
Все поля необязательны. Для органических установок или когда атрибуцию определить не удалось, объект attribution в поле payload отсутствует.
Чтобы прочитать данные атрибуции в приложении:
Adapty.delegate = selfnonisolated func onInstallationDetailsSuccess(_ details: AdaptyInstallationDetails) { guard let payloadDict = details.payload?.dictionary, let attribution = payloadDict["attribution"] as? [String: Any] else { return } let channel = attribution["channel"] as? String let campaignName = attribution["campaign_name"] as? String let adName = attribution["ad_name"] as? String print("Channel: \(channel ?? "organic")")}
Adapty.setOnInstallationDetailsListener(object : OnInstallationDetailsListener { override fun onInstallationDetailsSuccess(details: AdaptyInstallationDetails) { val payloadStr = details.payload ?: return runCatching { val payload = JSONObject(payloadStr) val attribution = payload.optJSONObject("attribution") ?: return val channel = attribution.optString("channel") val campaignName = attribution.optString("campaign_name") val adName = attribution.optString("ad_name") println("Channel: $channel") }.onFailure(Throwable::printStackTrace) }})
Adapty().onUpdateInstallationDetailsSuccessStream.listen((details) { final payloadStr = details.payload; if (payloadStr == null) return; final payload = json.decode(payloadStr) as Map<String, dynamic>; final attribution = payload['attribution'] as Map<String, dynamic>?; if (attribution == null) return; final channel = attribution['channel'] as String?; final campaignName = attribution['campaign_name'] as String?; final adName = attribution['ad_name'] as String?; print('Channel: ${channel ?? 'organic'}');});