![](/img/trans.png)
[英]How to know if an app has been downloaded from Google Play or Amazon?
[英]How do I know if the app has been downloaded from Google Play once
我有一个与会员系统配合使用的 Android 移动应用程序。 我的应用程序中有指向其他移动应用程序和游戏的链接。 使用 Packet Manager,我可以检查手机上是否安装了链接中的应用程序。 我的目标是通过单击我的应用程序中的链接来检查用户是否在设备上下载了游戏和移动应用程序。 如果他们在给定链接中下载了一次应用程序(第一次),他们将获得 10 分。 如果他们多次下载同一个应用程序,他们将被视为一次。 我想问你,如果用户多次下载一个应用程序,我怎么算一次?
private boolean appInstalledOrNot(String uri) {
PackageManager pm = getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;
} catch (PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}
public void go(View view) {
boolean installed = appInstalledOrNot("com.dousoftware.pubgtyolar");
//loaded
if (installed) {
Toast.makeText(this, "Loaded", Toast.LENGTH_SHORT).show();
} else {
Intent viewIntent = new Intent("android.intent.action.VIEW",
Uri.parse("https://play.google.com/store/apps/details?
id = com.dousoftware.pubgtyolar "));
startActivity(viewIntent); Toast.makeText(this, "Not Loaded", Toast.LENGTH_SHORT).show();
}
}
简短的回答是:你不能。
在本地,在 Android 设备上,无法知道用户安装或卸载应用程序的次数。
长的答案是,可能有一些解决方法,每个都有自己的优点和缺点。
安装您的应用后,您可以注册到ACTION_PACKAGE_ADDED和ACTION_PACKAGE_REMOVED广播。
每次用户安装或删除任何应用程序时都会调用这些。 他们有EXTRA_PACKAGE_NAME包含应用程序 package 名称。
然而,这会带来一些问题:
这仅在您的应用已安装且用户至少打开过一次应用时才有效。
您将收到任何应用程序的此广播,并且必须自己过滤结果。
如果用户清除数据或卸载并重新安装您的应用程序,您将失去计数。
另一种方法,以及大多数应用程序如何做到这一点,是使用推荐框架。 一个例子是Iron Source ,它可以让你为安装和使用不同的应用程序设置奖励。
如果另一个应用程序也是您的,您可以简单地使用Firebase 。
但是请注意,推荐跟踪会损害用户隐私,因此您必须小心遵守任何当地法律,例如GDPR 。
此外,使用这些框架可能会花钱。
如果用户点击链接
检查用户是否没有此应用程序
重定向到商店页面。
在配置文件中设置该链接已被点击
如果用户安装应用程序和脚本触发器(例如在应用程序打开时)添加点。 仅当链接已被标记为已单击时才添加点。
将配置文件中的链接标记为用于不从同一个应用程序中获得更多分数。
您可以将此数据存储在您的服务器上以避免例如卸载滥用
只需将已使用链接的信息保存在某处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.