Después de instalar, ejecuta la skill en tu proyecto:
/adapty-sdk-integration
Cuando Adapty relaciona una instalación con una campaña, devuelve los datos de atribución a tu app en el callback onInstallationDetailsSuccess. Usa estos datos para personalizar la experiencia del usuario según el canal o campaña que generó la instalación.
Important
A partir de la versión 4.1 del SDK de Adapty, la atribución de Adapty está desactivada por defecto. El callback onInstallationDetailsSuccess solo se ejecuta después de que habilites la atribución de Adapty al activar el SDK.
Los datos de atribución se devuelven como un objeto attribution anidado dentro del campo payload. Contiene los siguientes campos:
Campo
Descripción
channel
Canal de adquisición (p. ej. facebook, tiktok, google, organic)
campaign_id
Identificador de campaña
campaign_name
Nombre de la campaña
adset_id
Identificador del conjunto de anuncios / grupo de anuncios
adset_name
Nombre del conjunto de anuncios / grupo de anuncios
ad_id
Identificador del anuncio / creativo
ad_name
Nombre del anuncio / creativo
Todos los campos son opcionales. Para las instalaciones orgánicas o cuando no se pudo determinar la atribución, el campo payload no incluye el objeto attribution.
Para leer los datos de atribución en tu app:
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'}');});