当前位置: 首页 > backend >正文

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

http://www.xdnf.cn/news/8561.html

相关文章:

  • 跨域问题及其CORS解决方案:gin框架中配置跨域
  • ch11 课堂参考代码 及 题目参考思路
  • Spring Cloud实战:OpenFeign远程调用与服务治理
  • Margin loss
  • C语言数据结构-单链表
  • 解锁内心的冲突:神经症冲突的理解与解决之道
  • 半导体B2B分销中台有哪些应用场景
  • 安装NBU软件及配置方法
  • 谈谈对dubbo的广播机制的理解
  • 促销活动期间,确保邮件不被标记为垃圾邮件
  • 第六十六篇 探秘Java JVM内存模型:从城市基建到程序世界的精妙映射
  • mysql8.4.3配置主从复制
  • 鸿蒙进阶——Framework之Want 隐式匹配机制概述
  • ch11题目参考思路
  • linux移植lvgl
  • 经典密码学和现代密码学的结构及其主要区别(1)维吉尼亚密码—附py代码
  • 模拟交易新维度:如何通过自营交易考试实现策略收益双提升?
  • PTA L1系列题解(C语言)(L1_105 -- L1_112)
  • OCC导入进度显示
  • Makefile快速入门
  • 直播预告 | 共探“数字化转型新引擎”,蓝卓工业互联网+AI对话夜等你来
  • 数字计数--数位dp
  • C 语言学习笔记(指针4)
  • golang 垃圾收集机制
  • 防火墙NAT地址组NAT策略安全策略
  • 50 python Matplotlib之Seaborn
  • Python爬虫实战:研究Cola框架相关技术
  • 开发工具整理
  • Python初始Flask框架
  • 敦煌网测评从环境搭建到风控应对,精细化运营打造安全测评体系