老闆要求後台能看到每個裝置的版本號,找出未成功安裝的用戶。
// Android 客戶端:每次請求 Header 帶上版本
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(chain -> {
Request original = chain.request();
Request.Builder builder = original.newBuilder()
.header("X-App-Version", BuildConfig.VERSION_NAME) // 或 VERSION_CODE
.header("X-Device-Id", getUniqueDeviceId()) // 識別裝置
.method(original.method(), original.body());
return chain.proceed(builder.build());
})
.build();
X-App-Version、X-Device-Id。device_id, version, last_active_time。SELECT device_id, version FROM devices WHERE version < latest_version。| 方案 | 優點 | 缺點 |
|---|---|---|
| HTTP Header 帶版本(推薦) | 無侵入業務邏輯、即時、準確 | 需修改網路層 |
| 專用上報介面 | 邏輯清晰 | 需額外呼叫、用戶不開啟 App 就無數據 |
| 應用市場統計 | 免開發 | 無法綁定具體用戶/裝置、延遲大 |
Settings.Secure.ANDROID_ID 或生成 UUID 存儲於 SharedPreferences。BuildConfig.VERSION_CODE(整數)比較大小,VERSION_NAME 供顯示。一言以蔽之:**客戶端請求帶版本,服務端聚合分析**,最輕量且有效。