Firebase 之 归因
在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.installReferrerval referrerUrl: String = response.installReferrerLog.i("Firebase_debug", " referrerUrl${referrerUrl}")if (referrerUrl.contains("&")) {//split with & get paramsval 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") {//fbif (!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.}})