Commit 56bb4473 by sikang

优化install_referrer、Android ID 采集

parent d11b7788
...@@ -105,6 +105,8 @@ dependencies { ...@@ -105,6 +105,8 @@ dependencies {
//firebase remoteConfig //firebase remoteConfig
// api 'com.google.firebase:firebase-config:16.0.0' // api 'com.google.firebase:firebase-config:16.0.0'
api 'com.android.installreferrer:installreferrer:1.0'
//facebook accountKit SDK //facebook accountKit SDK
api 'com.facebook.android:account-kit-sdk:4.37.0' api 'com.facebook.android:account-kit-sdk:4.37.0'
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<application> <application>
......
...@@ -6,6 +6,7 @@ import android.support.multidex.MultiDexApplication; ...@@ -6,6 +6,7 @@ import android.support.multidex.MultiDexApplication;
import signal.JNISignal; import signal.JNISignal;
import tech.starwin.LibConfig; import tech.starwin.LibConfig;
import tech.starwin.utils.InstallReferrerHelper;
import tech.starwin.utils.LogUtils; import tech.starwin.utils.LogUtils;
import tech.starwin.utils.context_utils.AppLanguageUtils; import tech.starwin.utils.context_utils.AppLanguageUtils;
...@@ -32,6 +33,9 @@ public abstract class BaseApplication extends MultiDexApplication { ...@@ -32,6 +33,9 @@ public abstract class BaseApplication extends MultiDexApplication {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
AppLanguageUtils.setLanguage(this, LibConfig.LANGUAGE); AppLanguageUtils.setLanguage(this, LibConfig.LANGUAGE);
InstallReferrerHelper.refershInstallReferrer(this);
LibConfig.initLib(this); LibConfig.initLib(this);
//已签名的APP,这里会输出当前签名的 hashCode 值,将 hashCode 在服务端备份(更换签名时要同时更新备份) //已签名的APP,这里会输出当前签名的 hashCode 值,将 hashCode 在服务端备份(更换签名时要同时更新备份)
......
...@@ -32,7 +32,7 @@ public class FirebaseHeaderInterceptor implements Interceptor { ...@@ -32,7 +32,7 @@ public class FirebaseHeaderInterceptor implements Interceptor {
Request.Builder builder = chain.request().newBuilder(); Request.Builder builder = chain.request().newBuilder();
LogUtils.d(TAG,"android_id: "+ AppInfoUtils.getAndroidID(LibConfig.getContext())); LogUtils.d(TAG,"android_id: "+ AppInfoUtils.getAndroidID(LibConfig.getContext()));
builder.addHeader("X-REFERRER", PreferencesManager.get().getInstallReferrer()) builder.addHeader("X-REFERRER", PreferencesManager.get().getInstallReferrer())
.addHeader("X-REFERRER-SDK", PreferencesManager.get().getInstallReferrer()) .addHeader("X-REFERRER-SDK", PreferencesManager.get().getInstallReferrerFromSDK())
.addHeader("X-ANDROID-ID", AppInfoUtils.getAndroidID(LibConfig.getContext())); .addHeader("X-ANDROID-ID", AppInfoUtils.getAndroidID(LibConfig.getContext()));
//登录后的上传 //登录后的上传
......
package tech.starwin.utils;
import android.content.Context;
import android.text.TextUtils;
import com.android.installreferrer.api.InstallReferrerClient;
import com.android.installreferrer.api.InstallReferrerStateListener;
import com.android.installreferrer.api.ReferrerDetails;
public class InstallReferrerHelper {
public static void refershInstallReferrer(Context context) {
try {
final InstallReferrerClient installReferrerClient = InstallReferrerClient.newBuilder(context).build();
installReferrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
// Connection established, get referrer
if (installReferrerClient != null) {
try {
ReferrerDetails response = installReferrerClient.getInstallReferrer();
String referrer = response.getInstallReferrer();
if (!TextUtils.isEmpty(referrer)) {
PreferencesManager.get().saveInstallReferrerFromSDK(referrer);
}
installReferrerClient.endConnection();
} catch (Exception ex) {
LogUtils.e("InstallReferrerHelper", ex.toString());
}
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app
LogUtils.d("InstallReferrerHelper", "FEATURE_NOT_SUPPORTED");
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection could not be established
LogUtils.d("InstallReferrerHelper", "SERVICE_UNAVAILABLE");
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
} catch (Exception ex) {
// LogUtil.e(ex);
LogUtils.e("InstallReferrerHelper", ex.toString());
}
}
}
...@@ -161,14 +161,34 @@ public class PreferencesManager { ...@@ -161,14 +161,34 @@ public class PreferencesManager {
saveData("session_id", sessionId); saveData("session_id", sessionId);
} }
/**
* 取出上传用户数据时使用的sessionId
*/
public String getSessionId() { public String getSessionId() {
return getString("session_id", ""); return getString("session_id", "");
} }
/** /**
* 保存上传用户数据时使用的sessionId
*/
public void saveDeviceUUID(String uuid) {
saveData("device_uuid", uuid);
}
public String getDeviceUUID() {
return getString("device_uuid", "");
}
/**
* 保存上传用户数据时使用的sessionId
*/
public void saveInstallReferrerFromSDK(String referrer) {
saveData("sdk_install_referrer", referrer);
}
public String getInstallReferrerFromSDK() {
return getString("sdk_install_referrer", "");
}
/**
* 更新政策 是否同意 状态 * 更新政策 是否同意 状态
*/ */
public void setPolicyStatus(boolean isAgreed) { public void setPolicyStatus(boolean isAgreed) {
......
...@@ -10,6 +10,10 @@ import android.support.v4.app.ActivityCompat; ...@@ -10,6 +10,10 @@ import android.support.v4.app.ActivityCompat;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import java.util.UUID;
import tech.starwin.utils.PreferencesManager;
/** /**
* Created by SiKang on 2018/12/10. * Created by SiKang on 2018/12/10.
*/ */
...@@ -34,9 +38,18 @@ public class AppInfoUtils { ...@@ -34,9 +38,18 @@ public class AppInfoUtils {
* 获取AndroidID * 获取AndroidID
*/ */
public static String getAndroidID(Context context) { public static String getAndroidID(Context context) {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); String android_id = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
if (TextUtils.isEmpty(android_id)) {
android_id = PreferencesManager.get().getDeviceUUID();
if (TextUtils.isEmpty(android_id)) {
android_id = UUID.randomUUID().toString();
PreferencesManager.get().saveDeviceUUID(android_id);
}
}
return android_id;
} }
/** /**
* 判断是否存在某个包且可获取入口 * 判断是否存在某个包且可获取入口
*/ */
...@@ -60,7 +73,7 @@ public class AppInfoUtils { ...@@ -60,7 +73,7 @@ public class AppInfoUtils {
@SuppressLint("MissingPermission") @SuppressLint("MissingPermission")
public static String getPhoneNumber(Context context) { public static String getPhoneNumber(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String[] permissions = new String[]{Manifest.permission.READ_SMS,Manifest.permission.READ_PHONE_STATE}; String[] permissions = new String[]{Manifest.permission.READ_SMS, Manifest.permission.READ_PHONE_STATE};
if (telephonyManager != null && PermissionsHelper.isGranted(context, permissions)) { if (telephonyManager != null && PermissionsHelper.isGranted(context, permissions)) {
return telephonyManager.getLine1Number(); return telephonyManager.getLine1Number();
} else { } else {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment