diff --git a/Readme.md b/Readme.md index 4fa8e30..0e608cd 100644 --- a/Readme.md +++ b/Readme.md @@ -1,13 +1,17 @@ Room 数据持久化;Worker管理上传任务,初次上传+重试共5次,重试间隔10s线性增加;多上传任务顺序处理; 网络请求 Retrofit + ### debug release 区别 -| BuildType | 域名 | 是否打印日志 | -|----------|------|--------------| -| debug | http://192.168.2.7:18828 | 是 | -| release | https://track.23544.com | 否 | + +| BuildType | 域名 | 是否打印日志 | HttpLoggingInterceptor依赖 | +|-----------|--------------------------|--------|--------------------------| +| debug | http://192.168.2.7:18828 | 是 | 有 | +| release | https://track.23544.com | 否 | 无 | ### 使用 -#### 1.0.12 + +#### 1.0.13 + ```kotlin repositories { google() @@ -34,6 +38,24 @@ debugImplementation("com.yuanxuan:tracking_point:x.x.x-SNAPSHOT") //生产环境 releaseImplementation("com.yuanxuan:tracking_point:x.x.x") ``` + +### 常见问题 +```kotlin +// aar中 使用 `retrofit:3.0.0` `okhttp:5.3.2` 如果你的项目使用的 `okhttp:4.x` 或更久的版本 +implementation("com.squareup.okhttp3:okhttp:4.12.0") +debugImplementation("com.yuanxuan:tracking_point:1.0.13-SNAPSHOT") { + // 排除掉aar中的 okhttp 相关依赖 + exclude(group = "com.squareup.okhttp3") +} +// 因为这是测试版的aar 还需要添加拦截器 +debugImplementation("com.squareup.okhttp3:logging-interceptor:4.12.0") + +// release版 就只需要排除掉okhttp +implementation("com.yuanxuan:tracking_point:1.0.13") { + exclude(group = "com.squareup.okhttp3", module = "okhttp") +} +``` + ```kotlin /** * 初始化 @@ -48,8 +70,8 @@ TrackingManager.init( /** * 实现 ITrackingPointUserInfo 获取 UserInfo 的方法 */ -class TrackingPointUserInfoImp: ITrackingPointUserInfo { - override fun uploadUserInfo(): UserInfo? { +class TrackingPointUserInfoImp : ITrackingPointUserInfo { + override fun uploadUserInfo(): UserInfo? { return UserInfo( userId = 123456, userName = "username", @@ -65,9 +87,9 @@ class TrackingPointUserInfoImp: ITrackingPointUserInfo { TrackingManager.push( eventType = "dianji", //通过管理平台获取 eventParams = EventParams( - buttonId = "${view.id}", + buttonId = "R.id.xxxxx", //最好传控件的 R.id.xxx 方便找到此控件 page = "Main", - url = "" + url = "" ) ) ``` diff --git a/library/build.gradle.kts b/library/build.gradle.kts index caf2f32..5d36e3f 100644 --- a/library/build.gradle.kts +++ b/library/build.gradle.kts @@ -7,7 +7,7 @@ plugins { id("maven-publish") } group = "com.yuanxuan" -version = "1.0.12" +version = "1.0.13" val baseReleaseUrl: Provider = providers.gradleProperty("baseReleaseUrl") @@ -117,7 +117,7 @@ dependencies { implementation(libs.androidx.work.ktx) implementation(libs.retrofit) implementation(libs.retrofit.converter.moshi) - implementation(libs.okhttp.logging.interceptor) + debugImplementation(libs.okhttp.logging.interceptor) implementation(libs.moshi) ksp(libs.moshi.kotlin.codegen) implementation(libs.androidx.room) diff --git a/library/src/debug/kotlin/com/yuanxuan/tracking_point/library/http/HttpLogger.kt b/library/src/debug/kotlin/com/yuanxuan/tracking_point/library/http/HttpLogger.kt new file mode 100644 index 0000000..243cb56 --- /dev/null +++ b/library/src/debug/kotlin/com/yuanxuan/tracking_point/library/http/HttpLogger.kt @@ -0,0 +1,14 @@ +package com.yuanxuan.tracking_point.library.http + +import com.yuanxuan.tracking_point.library.util.Logger +import okhttp3.Interceptor +import okhttp3.logging.HttpLoggingInterceptor + +object HttpLogger { + fun interceptor(): Interceptor = + HttpLoggingInterceptor { message -> + Logger.debug(message) + }.apply { + level = HttpLoggingInterceptor.Level.BODY + } +} \ No newline at end of file diff --git a/library/src/main/java/com/yuanxuan/tracking_point/library/http/RetrofitClient.kt b/library/src/main/java/com/yuanxuan/tracking_point/library/http/RetrofitClient.kt index ccf5b6d..8d553f5 100644 --- a/library/src/main/java/com/yuanxuan/tracking_point/library/http/RetrofitClient.kt +++ b/library/src/main/java/com/yuanxuan/tracking_point/library/http/RetrofitClient.kt @@ -1,9 +1,7 @@ package com.yuanxuan.tracking_point.library.http import com.yuanxuan.tracking_point.library.BuildConfig -import com.yuanxuan.tracking_point.library.util.Logger import okhttp3.OkHttpClient -import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import retrofit2.converter.moshi.MoshiConverterFactory import java.util.concurrent.TimeUnit @@ -11,18 +9,12 @@ import kotlin.jvm.java internal object RetrofitClient { private val okHttpClient: OkHttpClient by lazy { - val httpLoggingInterceptor by lazy { - HttpLoggingInterceptor { message -> - Logger.debug(message) - }.apply { - level = HttpLoggingInterceptor.Level.BODY - } - } + OkHttpClient.Builder() .connectTimeout(15L, TimeUnit.SECONDS) .readTimeout(30L, TimeUnit.SECONDS) .writeTimeout(30L, TimeUnit.SECONDS) - .addInterceptor(httpLoggingInterceptor) + .addInterceptor(HttpLogger.interceptor()) .build() } diff --git a/library/src/main/java/com/yuanxuan/tracking_point/library/http/bean/TrackingPoint.kt b/library/src/main/java/com/yuanxuan/tracking_point/library/http/bean/TrackingPoint.kt index f0cc513..991deb4 100644 --- a/library/src/main/java/com/yuanxuan/tracking_point/library/http/bean/TrackingPoint.kt +++ b/library/src/main/java/com/yuanxuan/tracking_point/library/http/bean/TrackingPoint.kt @@ -24,6 +24,9 @@ internal data class DeviceInfo( @JsonClass(generateAdapter = true) data class EventParams( + /** + * 最好传view的"R.id.xxxxx" 方便找到控件 + */ val buttonId: String, val page: String, val url: String diff --git a/library/src/release/kotlin/com.yuanxuan.tracking_point.library.http/HttpLogger.kt b/library/src/release/kotlin/com.yuanxuan.tracking_point.library.http/HttpLogger.kt new file mode 100644 index 0000000..3dde2ce --- /dev/null +++ b/library/src/release/kotlin/com.yuanxuan.tracking_point.library.http/HttpLogger.kt @@ -0,0 +1,8 @@ +package com.yuanxuan.tracking_point.library.http + +import okhttp3.Interceptor + +object HttpLogger { + fun interceptor(): Interceptor = + Interceptor { chain -> chain.proceed(chain.request()) } +} \ No newline at end of file