diff --git a/app/src/main/java/com/gh/common/util/DataUtils.java b/app/src/main/java/com/gh/common/util/DataUtils.java index 1d9bba00db..df5f13704a 100644 --- a/app/src/main/java/com/gh/common/util/DataUtils.java +++ b/app/src/main/java/com/gh/common/util/DataUtils.java @@ -16,6 +16,7 @@ import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.exposure.meta.MetaUtil; import com.gh.gamecenter.common.retrofit.BiResponse; +import com.gh.gamecenter.common.utils.SensorsBridge; import com.gh.gamecenter.core.AppExecutor; import com.gh.gamecenter.core.provider.ISentryProvider; import com.gh.gamecenter.core.utils.GsonUtils; @@ -39,6 +40,11 @@ import io.reactivex.schedulers.Schedulers; */ public class DataUtils { + // 神策 OAID 是否已绑定 + private static boolean isSensorOAIDBounded = false; + // 原始的 OAID 是否已成功获取 + private static boolean originalOAIDIsReceived = false; + private DataUtils() { throw new IllegalStateException("Utility class"); } @@ -65,7 +71,6 @@ public class DataUtils { // 默认用 APP 级已存储的 GID 来使用,不使用外部 GID String savedGid = SPUtils.getString(Constants.GID); if (!TextUtils.isEmpty(savedGid)) { - HaloApp.getInstance().setGid(savedGid); onGidReceived(savedGid); } else { GidHelper.getInstance().registerDevice(HaloApp.getInstance().getApplication(), new GidCallback() { @@ -89,6 +94,8 @@ public class DataUtils { } private static void onGidReceived(String gid) { + bindValidOaidToSensor(false); + HaloApp.getInstance().setGid(gid); // 更新广告配置 AdDelegateHelper.INSTANCE.requestAdConfig(false, "", null); @@ -111,6 +118,35 @@ public class DataUtils { }); } + /** + * 为神策绑定有效的 OAID + */ + public static void bindValidOaidToSensor(boolean fromOaidResult) { + if (isSensorOAIDBounded) return; + + String oaid = HaloApp.getInstance().getOAID(); + + // 来自于 oaid 获取回调,或者说原始 oaid 已经获取成功 + if (fromOaidResult || originalOAIDIsReceived) { + originalOAIDIsReceived = true; + // 遇到异常的 OAID + if (Constants.INVALID_OAID_1.equals(oaid) + || Constants.INVALID_OAID_2.equals(oaid) + || Constants.INVALID_OAID_3.equals(oaid) + || TextUtils.isEmpty(oaid)) { + // 若 gid 不为空,那么整合 gid 作为 oaid https://jira.shanqu.cc/browse/GHZSCY-7004 + if (HaloApp.getInstance().getGid() != null) { + oaid = "GID" + HaloApp.getInstance().getGid(); + SensorsBridge.INSTANCE.setOAID(oaid); + isSensorOAIDBounded = true; + } + } else { + SensorsBridge.INSTANCE.setOAID(oaid); + isSensorOAIDBounded = true; + } + } + } + /** * 获取应用 gid 绑定的实名信息 */ diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 501375b3e1..8ea7f05261 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -25,7 +25,6 @@ import com.facebook.imagepipeline.core.ImageTranscoderType; import com.facebook.imagepipeline.core.MemoryChunkType; import com.facebook.imagepipeline.decoder.ImageDecoderConfig; import com.gh.ad.AdDelegateHelper; -import com.gh.ad.AdPluginDownloadHelper; import com.gh.base.GlobalActivityLifecycleObserver; import com.gh.common.FixedRateJobHelper; import com.gh.common.filter.RegionSettingHelper; @@ -57,7 +56,6 @@ import com.gh.gamecenter.common.utils.DeviceUtils; import com.gh.gamecenter.common.utils.EnvHelper; import com.gh.gamecenter.common.utils.ExtensionsKt; import com.gh.gamecenter.common.utils.ImageUtils; -import com.gh.gamecenter.common.utils.SensorsBridge; import com.gh.gamecenter.core.AppExecutor; import com.gh.gamecenter.core.iinterface.IApplication; import com.gh.gamecenter.core.provider.IFlavorProvider; @@ -329,11 +327,10 @@ public class HaloApp extends MultiDexApplication { // 港澳APP去掉oaid的获取 if (!EnvHelper.isGATApp()) { OAIDHelper.INSTANCE.getOAID(HaloApp.this, (s, isSuccess) -> { - String oaid = getValidOAID(s); - - setOAID(oaid); + setOAID(s); MetaUtil.INSTANCE.refreshMeta(); - SensorsBridge.INSTANCE.setOAID(s); + + DataUtils.bindValidOaidToSensor(true); if (getGid() != null) { DataUtils.getDeviceCertification(getGid()); @@ -418,27 +415,6 @@ public class HaloApp extends MultiDexApplication { }, delay); } - /** - * 获取有效的 OAID - */ - private String getValidOAID(String s) { - String oaid = s; - - // 过滤异常的 OAID - if (Constants.INVALID_OAID_1.equals(oaid) - || Constants.INVALID_OAID_2.equals(oaid) - || Constants.INVALID_OAID_3.equals(oaid) - || TextUtils.isEmpty(oaid)) { - // 若 gid 不为空,那么整合 gid 作为 oaid https://jira.shanqu.cc/browse/GHZSCY-7004 - if (getGid() != null) { - oaid = "GID" + getGid(); - } else { - oaid = ""; - } - } - return oaid; - } - private void initArouter() { if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效 ARouter.openLog(); // 打印日志