Khi Adapty khớp một lượt cài đặt với một chiến dịch, nó sẽ trả về dữ liệu attribution cho ứng dụng của bạn trong callback onInstallationDetailsSuccess. Sử dụng dữ liệu này để cá nhân hóa trải nghiệm người dùng dựa trên kênh hoặc chiến dịch đã thúc đẩy lượt cài đặt.
Important
Bắt đầu từ Adapty SDK phiên bản 4.1, Adapty Attribution bị tắt theo mặc định. Callback onInstallationDetailsSuccess chỉ kích hoạt sau khi bạn bật Adapty Attribution khi khởi động SDK.
Dữ liệu attribution được trả về dưới dạng object lồng nhau attribution bên trong trường payload. Nó chứa các trường sau:
Trường
Mô tả
channel
Kênh thu hút người dùng (ví dụ: facebook, tiktok, google, organic)
campaign_id
Định danh chiến dịch
campaign_name
Tên chiến dịch
adset_id
Định danh nhóm quảng cáo / ad group
adset_name
Tên nhóm quảng cáo / ad group
ad_id
Định danh quảng cáo / creative
ad_name
Tên quảng cáo / creative
Tất cả các trường đều là tùy chọn. Đối với các lượt cài đặt organic hoặc khi không thể xác định attribution, trường payload sẽ không bao gồm đối tượng attribution.
Để đọc dữ liệu attribution trong ứng dụng của bạn:
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'}');});