[英]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.