Android:Google三方库之Adjust集成详细步骤

通过 Adjust 安卓 SDK,您可以在自己的安卓应用中跟踪归因、事件及更多数据。请按照本指南中说明的步骤操作,在应用内设置 Adjust SDK

1、添加依赖

        //adjustimplementation("com.adjust.sdk:adjust-android:4.33.5")implementation("com.android.installreferrer:installreferrer:2.2")

2、添加Google Play服务

Google Play 商店中的应用需要使用 Google 广告 ID 来识别设备。要为我们的 SDK 启用 Google 广告 ID,您需要集成 Google Play 服务。为此请将 Google Play 服务库加入您的项目。将下列 dependency 加入build.gradle 文件的 dependencies 部分。

        //google servicesimplementation("com.google.android.gms:play-services-ads-identifier:18.0.1")

3、收集 App Set Identifier(用了firebase可以不用这个)

App Set Identifier 是一个唯一标识符,用户在设备上安装您的应用后,您可以通过此标识符监测这些应用的信息。同一位开发者开发的所有应用共享同一个 App Set ID,也就是说您可以从所有应用中收集有用的洞见。要记录设备的 App Set ID,您需要向build.gradle 文件中添加下列权限:

        implementation("com.google.android.gms:play-services-appset:16.0.2")

4、添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

如果您的应用并非面向 Google Play 商店,请添加以下权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

5、设置混淆:proguard-rules.pro


#adjust
-keep class com.adjust.sdk.**{ *; }
-keep class com.google.android.gms.common.ConnectionResult {int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {java.lang.String getId();boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.**{ *; }

应用不在 Google Play 商店发布,请添加下列 com.adjust.sdk 规则:

-keep public class com.adjust.sdk.**{ *; }

6、设置 Install Referrer

Install Referrer 是一种唯一标识符,可用来将应用安装归因至来源。Adjust SDK 需要该信息进行归因。(使用 Google Play Referrer API方式获取:前面已经集成依赖)

/*** 获取安装来源信息的函数* 在application中调用这个方法*/
private fun getInstallReferrer(applicationContext:Context) {val installReferrerClient = InstallReferrerClient.newBuilder(applicationContext).build()installReferrerClient.startConnection(object : InstallReferrerStateListener {override fun onInstallReferrerSetupFinished(responseCode: Int) {when (responseCode) {InstallReferrerClient.InstallReferrerResponse.OK -> {val response: ReferrerDetails = installReferrerClient.installReferrerval referrerUrl: String = response.installReferrerval referrerClickTime: Long = response.referrerClickTimestampSecondsval appInstallTime: Long = response.installBeginTimestampSeconds// 这里可以处理安装来源信息// ...// 将安装来源信息传递给 Adjust SDKAdjust.setReferrer(referrerUrl, applicationContext)//断开服务连接installReferrerClient.endConnection()}// ...}}override fun onInstallReferrerServiceDisconnected() {// 安装来源服务断开连接// ...}})
}

7、初始化(Application 类中onCreate 方法。)

         //配置Adjustval environment = if (BuildConfig.IS_DEBUG) {AdjustConfig.ENVIRONMENT_SANDBOX} else {AdjustConfig.ENVIRONMENT_PRODUCTION}val config = AdjustConfig(this, "{YourAppToken}", environment)config.setLogLevel(LogLevel.VERBOSE)Adjust.onCreate(config)

注意:在进行测试时,应当确保将环境设置为 AdjustConfig.ENVIRONMENT_SANDBOX 。请在向 App Store 提交应用程序前将此设为 AdjustConfig.ENVIRONMENT_PRODUCTION 。

8、设置会话跟踪

        registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}override fun onActivityStarted(activity: Activity) {}override fun onActivityResumed(activity: Activity) {Adjust.onResume()}override fun onActivityPaused(activity: Activity) {Adjust.onPause()}override fun onActivityStopped(activity: Activity) {}override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}override fun onActivityDestroyed(activity: Activity) {}})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/167163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Aop面向切面实现开发日志收集打印一文轻松搞定,内附详细图文示例+源码自取

目录 介绍 动态代理 jdk动态代理 cglib动态代理 注解实现Aop 添加必须依赖 添加Atm类 (主业务逻辑代码块) 定义打印log方法(提取公共代码逻辑块) 启用代理 切点表达式 Aop通知类型 前置通知(Before) 后置通知(After) 正常结束通知(AfterReturning) 异常结束通知…

树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点

前言 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Nginx 的内存占用率非常低&#xff0c;可以在树莓派等资源受限的设备上运行。同时结合c…

XTU OJ 1146 矩阵乘法学习笔记

原题 题目描述 给你两个矩阵A(n*k),B(k*m),请求A*B。 输入 第一行是一个整数K&#xff0c;表示样例的个数。 每个样例包含两个矩阵A和B。 每个矩阵的第一行是两个整数n,m,(1≤n,m≤10)表示矩阵的行和列 以后的n行&#xff0c;每行m个整数&#xff0c;每个整数的绝对值不超过…

如何让大模型更好地完成知识图谱推理?

​ 论文标题&#xff1a; Making Large Language Models Perform Better in Knowledge Graph Completion 论文链接&#xff1a; https://arxiv.org/abs/2310.06671 代码链接&#xff1a;GitHub - zjukg/KoPA: [Paper][Preprint 2023] Making Large Language Models Perform Be…

node-red - 节点实战总结1

node-red - 节点实战总结1 二、功能2.1 循环(for\while) 三、网络四、序列五、解析六、存储七、协议7.1 modbus协议7.2 opcua 八、formats8.1 时间格式化与时区转换 二、功能 2.1 循环(for\while) 安装节点node-red-contrib-loop-processing,该节点支持三种方式的循环&#xf…

【SpringBoot】 This application has no explicit mapping for 解决方法

This application has no explicit mapping for 解决方法 This application has no explicit mapping for 解决方法一、背景二、原因三、解决方案方式一&#xff1a;方式二&#xff1a; 四、解决 This application has no explicit mapping for 解决方法 一、背景 在SpringBo…

奥特曼不是第一次被开除!离职YC系“被创始人要求离开”

明敏 西风 发自 凹非寺 量子位 | 公众号 QbitAI 钮祜禄奥特曼&#xff0c;竟然不是第一次被“扫地出门”&#xff1f;&#xff1f;&#xff01; 没想到&#xff0c;OpenAI闹剧刚稍微消停了一点&#xff0c;“前传”马上来了。 《华盛顿邮报》从知情人士处获悉&#xff0c;奥…

java编程:使用递归 循环和位运算实现将10进制转为2进制

1 递归 /*** 递归&#xff1a;十进制转二进制* param decimal 待转换的十进制数* param binary 转换后的二进制数*/public static void decimalToBinaryByRecursion(int decimal,StringBuilder binary){if(decimal < 0){return;}decimalToBinaryByRecursion(decimal/2,bina…

3D卷积的理解

卷积核不仅需要在高宽这两个维度上进行滑动&#xff0c;还需要在时间维度上进行滑动

前端设计问题:iframe

居中问题&#xff1a; 尝试了一般的居中方法&#xff0c;无效果 display: flex;justify-content: center;align-items: center;放到导航栏下面不居中 放到页面底部还是不居中 Code <iframe id"demo_sanshui" src"demo_sanshui.html" width"120%…

【现场问题】现场的zk出现问题,ES也出现问题,一个一个排查出来,服务器重启了

湖南现场 zk出现问题ES出现问题了罪魁祸首&#xff0c;服务器重启 zk出现问题 发现集群出现问题了&#xff0c;想都没想就直接去重启了&#xff0c;把三台服务器都重启 ES出现问题了 三台机器只有一台机器是有ES的&#xff0c;但是看了配置文件&#xff0c;发现这个ES是三台…

centos7 openssh版本升级至 openssh-9.5p1

公司项目验收提示ssh版本存在漏洞&#xff0c;要求升级至最高版本&#xff0c;这里做个记录 默认版本 [rootlocalhost ~]# sshd -v unknown option -- v OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017yum groupinstall -y "Development Tools" yum install -y …

[HCIE] IPSec-VPN (IKE自动模式)

概念&#xff1a; IKE&#xff1a;因特网密钥交换 实验目标&#xff1a;pc1与pc2互通 步骤1&#xff1a;R1与R3配置默认路由 R1&#xff1a; ip route-static 0.0.0.0 0.0.0.0 12.1.1.2 R2&#xff1a; ip route-static 0.0.0.0 0.0.0.0 23.1.1.2 步骤2&#xff1a;配ACL…

Postgresql在ubuntu 22.04上遭遇OOM的处理方法

OOM机制就是kill那些占用内存多且优先级低的进程以此来保证操作系统内核的正常运转&#xff0c;一旦我们关闭OOM可能会导致操作系统内核奔溃。 https://manpages.ubuntu.com/manpages/jammy/en/man1/choom.1.html Linux kernel uses the badness heuristic to select which pro…

工业级5G路由器:稳定性更高,网络速度更快!

随着5G技术的发展&#xff0c;5G路由器也越来越受到人们的关注。特别是工业级5G路由器&#xff0c;它的应用范围更广&#xff0c;稳定性更高&#xff0c;网络速度更快&#xff0c;已成为许多企业和工业领域的必备选择。 一、工业级5G路由器的特点 工业级5G路由器具有很多独特的…

利用MATLAB进行矩阵运算

一、画出y1/(x3)的函数曲线&#xff0c;x∈[0, 200]。 程序&#xff1a; x0:0.01:200; y(3x).^(-1); plot(x,y) 结果&#xff1a; 二、生成一个信号&#xff1a;xsin(2*pi*t)cos(4*pi*t) 程序&#xff1a; syms t; xsin(2*pi*t).*cos(4*pi*t); fplot(x,[0 pi]); 结果&…

MyBatis - 自定义 ResultMap 返回数据与数据库查询不一致

问题描述 最近遇到一个查询列表问题&#xff0c;发现实际数据库查询 4 条数据&#xff0c;但是经过程序就是 3 条&#xff0c;一开始怀疑是不是自己程序做了去重啥的&#xff0c;一顿排查猛如虎发现并没有&#xff0c;后来看了下 resultMap 的机制的坑~ <resultMap id"…

electerm 跨平台的终端 /ssh/sftp 客户端

文章目录 electerm功能特性主题配色 electerm 每个程序员基本都离开SSH链接工具,目前市场上好用的基本都是收费的 给大家推荐一款国人开发的开源链接工具https://github.com/electerm/electerm 到目前为止star已经9.5K了,非常受欢迎 功能特性 支持ssh,telnet,serialport,本地和…

使用AndResGuard报错:copy res file not in resources.arsc file:Ezi.xml

Android使用AndResGuard进行资源混淆&#xff0c;压缩。 源码地址&#xff1a;GitHub - shwenzhang/AndResGuard: proguard resource for Android by wechat team 集成完成后编译过程中出现如下错误&#xff1a; 14:57:05 copy res file not in resources.arsc file:IUk.xml…

CMake API使用指南

文章目录 CMake 的基本语法和用法1. CMakeLists.txt 基本结构2. 变量和宏3. 条件语句4. 循环语句5. 定义和使用函数6. 导入库和链接库7. 设置编译器选项 message1. 显示普通消息&#xff1a;2. 显示带模式的消息&#xff1a;3. 显示变量值&#xff1a;4. 显示多行消息&#xff…