在Firebase 后台基础配置完成后,下面代码则会生效
如果没有完成配置,则需要去上一篇文章查看
用增之Firebase_firebase 教程-CSDN博客
包引用
implementation "com.android.installreferrer:installreferrer:2.2"
implementation platform('com.google.firebase:firebase-bom:32.8.0') //当前最新版
implementation 'com.google.firebase:firebase-analytics'
归因代码
private lateinit var referrerClient: InstallReferrerClient
referrerClient = InstallReferrerClient.newBuilder(context).build()
referrerClient = InstallReferrerClient.newBuilder(context).build()
referrerClient.startConnection(object : InstallReferrerStateListener {
override fun onInstallReferrerSetupFinished(responseCode: Int) {
when (responseCode) {
InstallReferrerClient.InstallReferrerResponse.OK -> {
Thread {
try {
Log.i("Firebase_debug", "InstallReferrerClient.InstallReferrerResponse.OK:${InstallReferrerClient. InstallReferrerResponse . OK}")
// Connection established.
val response: ReferrerDetails = referrerClient.installReferrer
val referrerUrl: String = response.installReferrer
Log.i("Firebase_debug", " referrerUrl${referrerUrl}")
if (referrerUrl.contains("&")) {
//split with & get params
val params = referrerUrl.split("&")
val paramsMap = HashMap<String, String>()
for (param in params) {
val keyAndValue = param.split("=")
paramsMap.put(keyAndValue[0], keyAndValue[1])
}
val utmSource = if (paramsMap.keys.contains("utm_source")) paramsMap.get("utm_source") else ""
val utmCampaign = if (paramsMap.keys.contains("utm_campaign")) paramsMap.get("utm_campaign") else ""
var utmContent = if (paramsMap.keys.contains("utm_content")) paramsMap.get("utm_content") else ""
val afTranid = if (paramsMap.keys.contains("af_tranid")) paramsMap.get("af_tranid") else ""
val c = if (paramsMap.keys.contains("c")) paramsMap.get("c") else ""
val adjustReftag = if (paramsMap.keys.contains("adjust_reftag")) paramsMap.get("adjust_reftag") else ""
val utmMedium = if (paramsMap.keys.contains("utm_medium")) paramsMap.get("utm_medium") else ""
if (utmSource == "apps.facebook.com" && utmCampaign == "fb4a") {
//fb
if (!TextUtils.isEmpty(utmContent)) {
try {
utmContent = URLDecoder.decode(utmContent, HttpConfig.CHARSET_NAME)
val json = JsonUtil.loadJSON(utmContent)
json?.let {
val source = it.getJSONObject("source")
val data = source.getString("data")
val nonce = source.getString("nonce")
}
} catch (_: Exception) {
}
}
} else if (!TextUtils.isEmpty(afTranid) && !TextUtils.isEmpty(c)) {
//af
} else if (!TextUtils.isEmpty(adjustReftag)) {
//adjust
} else if (utmMedium == "organic") {
//organic
} else {
//gg ads?
}
}
} catch (e: Exception) {
Log.i("Firebase_debug", Log.getStackTraceString(e))
}
referrerClient.endConnection()
}.start()
}
InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
Log.i("Firebase_debug", "InstallReferrerClient.InstallReferrerResponse.OK:${InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED}")
// API not available on the current Play Store app.
}
InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
Log.i("Firebase_debug", "InstallReferrerClient.InstallReferrerResponse.OK:${InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE}")
// Connection couldn't be established.
}
}
}
override fun onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
})

1107

被折叠的 条评论
为什么被折叠?



