Skip to content
This repository has been archived by the owner on Apr 6, 2022. It is now read-only.

Commit

Permalink
Merge pull request #20 from appmetr/feature/device-key-hashes
Browse files Browse the repository at this point in the history
 Send hashes instead of real mobile ids via deviceKey
  • Loading branch information
grooze authored Jul 16, 2019
2 parents fc4b1d5 + 40bbab6 commit 6e38943
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 18 deletions.
7 changes: 4 additions & 3 deletions appmetr/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
versionCode 11300
versionName "1.13.0"
versionCode 11400
versionName "1.14.0"
}
buildTypes {
release {
Expand All @@ -24,8 +24,9 @@ android {

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.gms:play-services-ads-identifier:16.0.0'
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0'
implementation 'com.android.installreferrer:installreferrer:1.0'
implementation 'com.google.guava:guava:28.0-android'
}

task clearLibraryJar(type: Delete) {
Expand Down
3 changes: 2 additions & 1 deletion appmetr/src/main/java/com/appmetr/android/UploadService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.support.annotation.Nullable;
import android.text.TextUtils;

import androidx.annotation.Nullable;

import com.appmetr.android.internal.ContextProxy;
import com.appmetr.android.internal.LibraryPreferences;
import com.appmetr.android.internal.UploadCacheTask;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
import android.content.Context;
import android.content.Intent;
import android.os.PersistableBundle;
import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.WorkerThread;

import com.appmetr.android.AppMetr;
import com.appmetr.android.AppmetrConstants;
import com.appmetr.android.BuildConfig;
Expand All @@ -25,7 +26,11 @@

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,22 @@
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.AsyncTask;
import android.os.Build;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;

import androidx.annotation.NonNull;

import com.appmetr.android.BuildConfig;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
import com.google.common.base.Charsets;
import com.google.common.hash.Hashing;

import java.lang.reflect.Field;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
Expand Down Expand Up @@ -46,13 +52,19 @@ public class RequestParameters {
/**
* Retrieve request parameters from context
*/
public RequestParameters(Context context, String token) {
public RequestParameters(@NonNull final Context context, @NonNull String token) {
this.token = token;
macAddress = getMacAddress(context);
deviceId = getDeviceID(context);
buildSerial = getBuildSerial();
androidId = getAndroidID(context);
userId = getUserID();
AsyncTask.execute(new Runnable() {
@Override
public void run() {
googleAid = getGoogleId(context);
}
});
}

public String getToken() {
Expand All @@ -65,12 +77,14 @@ public String getUID() {

public String getDeviceKey(Context context) {
List<HttpNameValuePair> nameValuePairs = new ArrayList<HttpNameValuePair>();
nameValuePairs.add(new HttpNameValuePair("token", getToken().toLowerCase(Locale.US)));
nameValuePairs.add(new HttpNameValuePair("mobDeviceType", getDeviceType()));
nameValuePairs.add(new HttpNameValuePair("mobMac", getMacAddress(context)));
nameValuePairs.add(new HttpNameValuePair("mobTmDevId", getDeviceID(context)));
nameValuePairs.add(new HttpNameValuePair("mobAndroidID", getAndroidID(context)));
nameValuePairs.add(new HttpNameValuePair("mobGoogleAid", getGoogleId(context)));
nameValuePairs.add(new HttpNameValuePair("mobFireOsAid", getFireOsId(context)));
nameValuePairs.add(new HttpNameValuePair("mobMac", getHash(getMacAddress(context))));
nameValuePairs.add(new HttpNameValuePair("mobTmDevId", getHash(getDeviceID(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("mobFireOsAid", getHash(getFireOsId(context))));
StringBuilder res = new StringBuilder();
for (HttpNameValuePair pair : nameValuePairs) {
if(TextUtils.isEmpty(pair.getValue()))
Expand Down Expand Up @@ -141,7 +155,7 @@ private static String getMacAddress(Context context) {
if (wifiInfo != null) {
ret = wifiInfo.getMacAddress();
if (ret != null) {
ret = ret.replace(":", "").toLowerCase(Locale.getDefault());
ret = ret.replaceAll("\\W", "").toUpperCase(Locale.US);
}
}
}
Expand Down Expand Up @@ -253,7 +267,7 @@ private static String getGoogleId(Context context) {
* doesn't return null in any situation.
*
* @param context Current context
* @return Google Advertising Id
* @return FireOS Advertising Id
*/
private static String getFireOsId(Context context) {
if(fireOsId == null) {
Expand All @@ -270,4 +284,10 @@ private static String getFireOsId(Context context) {
}
return fireOsId;
}

private static String getHash(String data) {
if(TextUtils.isEmpty(data))
return data;
return Hashing.murmur3_128().hashString(data.toLowerCase(Locale.US), Charsets.UTF_8).toString();
}
}
6 changes: 3 additions & 3 deletions demo/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ android {
applicationId "com.appmetr.android.demo"
minSdkVersion 14
targetSdkVersion 28
versionCode 11300
versionName "1.13.0"
versionCode 11400
versionName "1.14.0"
}
buildTypes {
release {
Expand All @@ -21,5 +21,5 @@ android {
dependencies {
implementation project(":appmetr")
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
}
2 changes: 1 addition & 1 deletion dummy/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ dependencies {
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'androidx.appcompat:appcompat:1.0.2'
}

0 comments on commit 6e38943

Please sign in to comment.