From a36c8adb875832dbe31dc77b8d66701fb0035915 Mon Sep 17 00:00:00 2001 From: Andrew Barushev Date: Mon, 14 Mar 2022 15:53:43 +0300 Subject: [PATCH 1/5] F! added dependency in build.gradle for appmetr --- appmetr/build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/appmetr/build.gradle b/appmetr/build.gradle index f0ef7b2..6680dcc 100644 --- a/appmetr/build.gradle +++ b/appmetr/build.gradle @@ -26,6 +26,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0' implementation 'com.android.installreferrer:installreferrer:1.1' + implementation 'com.google.android.gms:play-services-appset:16.0.2' } task clearLibraryJar(type: Delete) { From 7d2451e67725f5eeea39d162b3da107f096f1d20 Mon Sep 17 00:00:00 2001 From: Andrew Barushev Date: Mon, 14 Mar 2022 18:01:49 +0300 Subject: [PATCH 2/5] F! added permission for appSetID --- appmetr/src/main/AndroidManifest.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/appmetr/src/main/AndroidManifest.xml b/appmetr/src/main/AndroidManifest.xml index 0880bd4..a402b17 100644 --- a/appmetr/src/main/AndroidManifest.xml +++ b/appmetr/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + Date: Mon, 14 Mar 2022 18:18:33 +0300 Subject: [PATCH 3/5] F! added mobAppSetId in RequestParameters and get appSetId --- .../android/internal/RequestParameters.java | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java b/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java index f11426f..9cd230a 100644 --- a/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java +++ b/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java @@ -17,6 +17,12 @@ import com.appmetr.android.BuildConfig; import com.google.android.gms.ads.identifier.AdvertisingIdClient; +import com.google.android.gms.appset.AppSet; +import com.google.android.gms.appset.AppSetIdClient; +import com.google.android.gms.appset.AppSetIdInfo; +import com.google.android.gms.tasks.OnFailureListener; +import com.google.android.gms.tasks.OnSuccessListener; +import com.google.android.gms.tasks.Task; import java.lang.reflect.Field; import java.util.ArrayList; @@ -36,6 +42,7 @@ public class RequestParameters { private static final String MAGIC_ANDROID_ID = "9774d56d682e549c"; private static String googleAid = null; private static String fireOsId = null; + private static String appSetId; private final String deviceId; private final String buildSerial; private final String androidId; @@ -51,6 +58,7 @@ public RequestParameters(@NonNull final Context context, @NonNull String token) buildSerial = getBuildSerial(); androidId = getAndroidID(context); userId = getUserID(); + getAppSetId(context); AsyncTask.execute(new Runnable() { @Override public void run() { @@ -75,6 +83,7 @@ public String getDeviceKey(Context context) { nameValuePairs.add(new HttpNameValuePair("mobAndroidID", getHash(getAndroidID(context)))); nameValuePairs.add(new HttpNameValuePair("mobGoogleAid", getHash(googleAid))); // use googleAid only if we already have it + nameValuePairs.add(new HttpNameValuePair("mobAppSetId", getHash(appSetId))); nameValuePairs.add(new HttpNameValuePair("mobFireOsAid", getHash(getFireOsId(context)))); StringBuilder res = new StringBuilder(); for (HttpNameValuePair pair : nameValuePairs) { @@ -107,6 +116,7 @@ protected List getForMethod(Context context, String method) { ret.add(new HttpNameValuePair("mobLibVer", LibraryPreferences.VERSION_STRING)); ret.add(new HttpNameValuePair("mobAndroidID", androidId)); + String aid = getGoogleId(context); if (!TextUtils.isEmpty(aid)) { ret.add(new HttpNameValuePair("mobGoogleAid", aid)); @@ -118,6 +128,10 @@ protected List getForMethod(Context context, String method) { } } + if (!TextUtils.isEmpty(appSetId)) { + ret.add(new HttpNameValuePair("mobAppSetId", appSetId)); + } + if (buildSerial != null) { ret.add(new HttpNameValuePair("mobBuildSerial", buildSerial)); } @@ -249,6 +263,43 @@ private static String getFireOsId(Context context) { return fireOsId; } + /** + * Set Google App set ID if it preset + * If operation failed, returns empty string, + * doesn't return null in any situation. + * Call it only in background thread! + * + * @param context Current context + */ + private static void getAppSetId(Context context) { + if (appSetId == null) { + try { + AppSetIdClient client = AppSet.getClient(context); + Task task = client.getAppSetIdInfo(); + + task.addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(AppSetIdInfo appSetIdInfo) { + int scope = appSetIdInfo.getScope(); + appSetId = appSetIdInfo.getId(); + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Log.e(TAG, "Failed to retrieve APP_SET_ID", e); + appSetId = ""; + } + }); + } catch (Throwable t) { + if (BuildConfig.DEBUG) { + Log.e(TAG, "Failed to retrieve APP_SET_ID", t); + } + appSetId = ""; + } + } + } + private static String getHash(String data) { return TextUtils.isEmpty(data) ? data : new Murmur3with128bit().putString(data.toLowerCase(Locale.US)).hashString(); From 6fc8793001a85220283ca8a1f91ff045563ef809 Mon Sep 17 00:00:00 2001 From: Andrew Barushev Date: Tue, 15 Mar 2022 12:19:16 +0300 Subject: [PATCH 4/5] F! set version to 1.18.6 --- appmetr/build.gradle | 4 ++-- demo/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/appmetr/build.gradle b/appmetr/build.gradle index 6680dcc..62654e8 100644 --- a/appmetr/build.gradle +++ b/appmetr/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 30 - versionCode 11805 - versionName "1.18.5" + versionCode 11806 + versionName "1.18.6" } buildTypes { release { diff --git a/demo/build.gradle b/demo/build.gradle index c6093fc..63a5e4b 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -7,8 +7,8 @@ android { applicationId "com.appmetr.android.demo" minSdkVersion 14 targetSdkVersion 30 - versionCode 11805 - versionName "1.18.5" + versionCode 11806 + versionName "1.18.6" } buildTypes { release { From 6b163670efda44120fd51a9acf0aa446caf879ca Mon Sep 17 00:00:00 2001 From: Andrey Gruzinov Date: Thu, 17 Mar 2022 15:29:25 +0300 Subject: [PATCH 5/5] F! Remove unused variable --- .../android/internal/RequestParameters.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java b/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java index 9cd230a..ceef11b 100644 --- a/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java +++ b/appmetr/src/main/java/com/appmetr/android/internal/RequestParameters.java @@ -280,17 +280,15 @@ private static void getAppSetId(Context context) { task.addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(AppSetIdInfo appSetIdInfo) { - int scope = appSetIdInfo.getScope(); appSetId = appSetIdInfo.getId(); } - }) - .addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(@NonNull Exception e) { - Log.e(TAG, "Failed to retrieve APP_SET_ID", e); - appSetId = ""; - } - }); + }).addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + Log.e(TAG, "Failed to retrieve APP_SET_ID", e); + appSetId = ""; + } + }); } catch (Throwable t) { if (BuildConfig.DEBUG) { Log.e(TAG, "Failed to retrieve APP_SET_ID", t);