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.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.
            }
        })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值