diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index 1c11c59755..10b53c7a6c 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -103,6 +103,9 @@ object DownloadObserver { Utils.log("DownloadObserver", "下载自动暂停->" + downloadEntity.toJson()) } } + } else if (DownloadStatus.redirected == downloadEntity.status) { + debugOnly { Utils.log("重定向完毕") } + DownloadDataHelper.uploadRedirectEvent(downloadEntity) } if (DownloadStatus.done == downloadEntity.status) { if (downloadEntity.name.contains(mApplication.getString(R.string.app_name))) { diff --git a/app/src/main/java/com/gh/download/DownloadDataHelper.kt b/app/src/main/java/com/gh/download/DownloadDataHelper.kt index 73895726d3..f41e83d39a 100644 --- a/app/src/main/java/com/gh/download/DownloadDataHelper.kt +++ b/app/src/main/java/com/gh/download/DownloadDataHelper.kt @@ -66,11 +66,45 @@ object DownloadDataHelper { "解析包错误-下载过程中" } else if (status == DownloadStatus.hijack || status == DownloadStatus.notfound) { "下载失败" + } else if (status == DownloadStatus.redirected) { + "重定向至最终地址" } else { "未知状态" } } + fun uploadRedirectEvent(downloadEntity: DownloadEntity) { + val jsonObject = JSONObject() + + try { + jsonObject.put("event", "download_redirect") + val startupStatus = downloadEntity.meta[DownloadEntity.DOWNLOAD_STARTUP_STATUS_KEY] + if (startupStatus != null) { + jsonObject.put("msg", getDownloadStatusAlias(downloadEntity, DownloadStatus.valueOf(startupStatus))) + } + + jsonObject.put("meta", getMetaJson()) + jsonObject.put("timestamp", System.currentTimeMillis() / 1000) + + // payload + val payloadObject = JSONObject() + payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") + payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") + payloadObject.put("game_id", downloadEntity.gameId) + payloadObject.put("gameName", downloadEntity.name) + payloadObject.put("platform", downloadEntity.platform) + payloadObject.put("package", downloadEntity.packageName) + payloadObject.put("filename", downloadEntity.path.substring(downloadEntity.path.lastIndexOf("/") + 1)) + jsonObject.put("payload", payloadObject) + } catch (e: Exception) { + e.printStackTrace() + } + if (BuildConfig.DEBUG) { + Utils.log("LogUtils->$jsonObject") + } + LoghubUtils.log(jsonObject, "download_debug", false) + } + @JvmStatic fun uploadDownloadEvent(downloadEntity: DownloadEntity) { if (downloadEntity.status != DownloadStatus.downloading) { @@ -136,6 +170,8 @@ object DownloadDataHelper { // payload val payloadObject = JSONObject() + payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") + payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") payloadObject.put("game_id", downloadEntity.gameId) payloadObject.put("gameName", downloadEntity.name) payloadObject.put("platform", downloadEntity.platform) @@ -165,6 +201,8 @@ object DownloadDataHelper { // payload val payloadObject = JSONObject() + payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") + payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") payloadObject.put("game_id", downloadEntity.gameId) payloadObject.put("gameName", downloadEntity.name) payloadObject.put("platform", downloadEntity.platform) @@ -207,6 +245,8 @@ object DownloadDataHelper { // payload val payloadObject = JSONObject() + payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") + payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") payloadObject.put("game_id", downloadEntity.gameId) payloadObject.put("gameName", downloadEntity.name) payloadObject.put("platform", downloadEntity.platform) @@ -236,8 +276,8 @@ object DownloadDataHelper { var sheet = mDownloadHeartbeatSheet[downloadEntity.url] if (sheet == null) { sheet = JSONObject() - val host = downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown" - sheet.put("host", host) + sheet.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") + sheet.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") sheet.put("game_id", downloadEntity.gameId) sheet.put("platform", downloadEntity.platform) sheet.put("package", downloadEntity.packageName) @@ -247,6 +287,8 @@ object DownloadDataHelper { mDownloadHeartbeatSheet[downloadEntity.url] = sheet } else { val progressSize = sheet.getLong("current_progress_size") + sheet.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown") // 初始化记录的 host 为空 + sheet.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown") // 初始化记录的 path 为空 sheet.put("total_size", downloadEntity.size / 1024 / 1024) // 初始化记录的 total_size 有可能为0 sheet.put("progress_size", downloadEntity.progress / 1024 - progressSize) sheet.put("current_progress_size", downloadEntity.progress / 1024) diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index eb80e2668d..5985441215 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -16,6 +16,7 @@ import com.gh.common.AppExecutor; import com.gh.common.constant.Constants; import com.gh.common.exposure.ExposureEvent; import com.gh.common.exposure.ExposureUtils; +import com.gh.common.exposure.meta.MetaUtil; import com.gh.common.history.HistoryHelper; import com.gh.common.util.AppDebugConfig; import com.gh.common.util.DataCollectionUtils; @@ -28,6 +29,7 @@ import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageInstaller; import com.gh.common.util.PackageUtils; import com.gh.common.util.SPUtils; +import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; @@ -35,8 +37,10 @@ import com.gh.gamecenter.entity.HomePluggableFilterEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.manager.PackagesManager; +import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.packagehelper.PackageRepository; import com.google.gson.Gson; +import com.halo.assistant.HaloApp; import com.lightgame.config.CommonDebug; import com.lightgame.download.ConnectionUtils; import com.lightgame.download.DataChanger; @@ -49,6 +53,7 @@ import com.lightgame.download.DownloadStatus; import com.lightgame.download.DownloadStatusListener; import com.lightgame.download.DownloadStatusManager; import com.lightgame.download.FileUtils; +import com.lightgame.download.HttpDnsManager; import com.lightgame.utils.Utils; import com.qq.gdt.action.ActionType; @@ -56,6 +61,7 @@ import org.greenrobot.eventbus.EventBus; import java.io.File; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -269,6 +275,8 @@ public class DownloadManager implements DownloadStatusListener { downloadEntity.setUpdate(true); } + updateMetaMap(); + downloadEntity.setPlugin(!TextUtils.isEmpty(apkEntity.getGhVersion())); ExposureUtils.DownloadType downloadType = ExposureUtils.getDownloadType(apkEntity, gameEntity.getId()); @@ -929,4 +937,16 @@ public class DownloadManager implements DownloadStatusListener { msg.obj = url; sendMessageDelayed(msg, 1000); } + + public static void updateMetaMap() { + HashMap map = new HashMap<>(); + map.put(HttpDnsManager.APP_VERSION, BuildConfig.VERSION_NAME); + map.put(HttpDnsManager.CHANNEL, HaloApp.getInstance().getChannel()); + map.put(HttpDnsManager.GID, HaloApp.getInstance().getGid()); + map.put(HttpDnsManager.OAID, HaloApp.getInstance().getOAID()); + map.put(HttpDnsManager.USER_ID, UserManager.getInstance().getUserId()); + map.put(HttpDnsManager.IMEI, MetaUtil.INSTANCE.getIMEI()); + + HttpDnsManager.metaMap = map; + } } diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index 56e277c0f6..7fd2dc910b 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -543,6 +543,8 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter implemen GameEntity gameEntity = new GameEntity(updateEntity.getId(), updateEntity.getName()); gameEntity.setGameVersion(updateEntity.getVersion()); + DownloadManager.updateMetaMap(); + ExposureEvent event = ExposureUtils.logADownloadExposureEvent(gameEntity, updateEntity.getPlatform(), updateEntity.getExposureEvent(), downloadType); downloadEntity.setExposureTrace(GsonUtils.toJson(event)); diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 2f76fab0b9..1d725ccbd5 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -45,6 +45,7 @@ import com.gh.gid.GidHelper; import com.github.piasy.biv.BigImageViewer; import com.github.piasy.biv.loader.fresco.FrescoImageLoader; import com.leon.channel.helper.ChannelReaderUtil; +import com.lightgame.download.HttpDnsManager; import com.lightgame.utils.Utils; import com.llew.huawei.verifier.LoadedApkHuaWei; import com.m7.imkfsdk.chat.ChatActivity; @@ -140,6 +141,9 @@ public class HaloApp extends TinkerAppLike { mChannel = Config.DEFAULT_CHANNEL; } + // HttpDns 需要在友盟前初始化,不然单例帐号会被友盟占了 + HttpDnsManager.getInstance(getApplication()); + PushManager.init(mChannel); DataUtils.init(getApplication(), mChannel); diff --git a/libraries/LGLibrary b/libraries/LGLibrary index cfa175476d..8a4ae2dfdd 160000 --- a/libraries/LGLibrary +++ b/libraries/LGLibrary @@ -1 +1 @@ -Subproject commit cfa175476d3001bd7dd70d71081e159e32a5258a +Subproject commit 8a4ae2dfddfc2999be196b2cb5980e5ec1712772