Java dkh、uid和af_v参数的使用
所以我参加了一次采访,他们让我弄清楚这些参数dkh、uid和af_v是如何在给定的代码段中生成的。代码段是从apk文件反编译的。 我应该在其中搜索dkh的片段是:- 对于af_v来说:- 在互联网上进行了长时间的研究之后,我知道这些参数和这些片段所属的.java文件是AppsFlyerSDK的一部分,并与应用程序集成,以跟踪下载应用程序和其他移动广告跟踪活动的用户数量。 我也知道hashmap.put方法的用途,但不知道它在代码中的确切用法。 所以我的问题是这三个参数是如何生成的,以及它们的用途?dkh: 我们可以从下面的代码片段中看到,Java dkh、uid和af_v参数的使用,java,android,Java,Android,所以我参加了一次采访,他们让我弄清楚这些参数dkh、uid和af_v是如何在给定的代码段中生成的。代码段是从apk文件反编译的。 我应该在其中搜索dkh的片段是:- 对于af_v来说:- 在互联网上进行了长时间的研究之后,我知道这些参数和这些片段所属的.java文件是AppsFlyerSDK的一部分,并与应用程序集成,以跟踪下载应用程序和其他移动广告跟踪活动的用户数量。 我也知道hashmap.put方法的用途,但不知道它在代码中的确切用法。 所以我的问题是这三个参数是如何生成的,以及它们的用途
dkh
只是AppsFlyer键的前8个字符
obj = com.appsflyer.f.a().b("AppsFlyerKey");
// [...]
if (((String) (obj)).length() > 8)
{
hashmap.put("dkh", ((String) (obj)).substring(0, 8));
}
至于它是如何使用的——在你发布的代码中,它不是。考虑到您发布的代码是从创建一个用URL初始化的StringBuilder
开始的,因此很有可能猜测正在构建的hashamp也与该URL相关
处理API调用时,hashmap最常用的用法是作为HTTP参数(例如,通过GET或POST)。因此,我的假设是,所有这些hashmap条目都只是发送到AppsFlyer API的参数。有些用于提供有关用户设备的信息,有些(如dkh
)可能被AppsFlyer用于将设备信息与您的帐户关联
uid
代码片段没有提供足够的信息来收集有关如何生成uid
的任何有意义的信息。我们真正知道的是,它不是空的,它来自AppsFlyer SDK中基于以下代码段的其他函数:
s = com.appsflyer.k.a(context);
// [null check]
hashmap.put("uid", s);
考虑到上面的dkh
上下文以及程序员普遍认为“uid”代表“用户ID”,我假设这是一个用户标识符,它也将被发送到API
af_v
我认为对代码段应用一些格式将有助于:
obj = (String)((Map) (obj2)).get("appsflyerKey");
String s1 = (String)((Map) (obj2)).get("af_timestamp");
obj2 = (String)((Map) (obj2)).get("uid");
obj = com.appsflyer.j.a(
new StringBuilder()
.append(((String) (obj)).substring(0, 7))
.append(((String) (obj2)).substring(0, 7))
.append(s1.substring(s1.length() - 7))
.toString()
);
a.put("af_v", obj);
从顶部开始,我们知道,obj
再次是我们的AppsFlyer键s1
是某种时间戳obj2
是我们上面的uid。
我们最后放入af_v
的字符串由以下三部分组成:
- AppsFlyer键的前7个字符(
)obj1
- uid的前7个字符(
)obj2
- 时间戳的最后7个字符
同样,这些可能都只是发送到API,真正的用途只有AppsFlyer团队的人知道。它可能是一个特定请求的标识符——它基于特定的用户、时间戳和API密钥这一事实意味着它对于每个请求可能是相当唯一的,并且将它们(仅部分)压缩到一个字符串中可能对任何人来说都不是特别有用的数据。谢谢!这对我帮助很大。
obj = com.appsflyer.f.a().b("AppsFlyerKey");
// [...]
if (((String) (obj)).length() > 8)
{
hashmap.put("dkh", ((String) (obj)).substring(0, 8));
}
s = com.appsflyer.k.a(context);
// [null check]
hashmap.put("uid", s);
obj = (String)((Map) (obj2)).get("appsflyerKey");
String s1 = (String)((Map) (obj2)).get("af_timestamp");
obj2 = (String)((Map) (obj2)).get("uid");
obj = com.appsflyer.j.a(
new StringBuilder()
.append(((String) (obj)).substring(0, 7))
.append(((String) (obj2)).substring(0, 7))
.append(s1.substring(s1.length() - 7))
.toString()
);
a.put("af_v", obj);