From 7b34337678f2f472a312b152695a3f7c60b1f59d Mon Sep 17 00:00:00 2001 From: James O'Claire Date: Thu, 13 Feb 2025 15:04:37 +0800 Subject: [PATCH 1/3] Send data in JSON instead of query params --- .../java/dev/openattribution/sdk/OAWorker.kt | 51 ++++++++++++++++--- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/OpenAttribution/src/main/java/dev/openattribution/sdk/OAWorker.kt b/OpenAttribution/src/main/java/dev/openattribution/sdk/OAWorker.kt index 5e80e49..5fa69ea 100644 --- a/OpenAttribution/src/main/java/dev/openattribution/sdk/OAWorker.kt +++ b/OpenAttribution/src/main/java/dev/openattribution/sdk/OAWorker.kt @@ -8,11 +8,24 @@ import androidx.work.WorkerParameters import kotlinx.coroutines.Dispatchers import com.google.android.gms.ads.identifier.AdvertisingIdClient import kotlinx.coroutines.withContext +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONObject import java.util.UUID import java.util.concurrent.TimeUnit + +data class TrackingEvent( + val oaUid: String, + val ifa: String?, + val androidId: String, + val eventId: String, + val eventUid: String, + val eventTime: Long, +) + class TrackAppOpenWorker( private val appContext: Context, workerParams: WorkerParameters @@ -47,7 +60,7 @@ class TrackAppOpenWorker( } } - val url = constructTrackingUrl( + val (url, trackingEvent) = constructTrackingRequest( baseUrl, appendedPackageName, myOaUid, @@ -64,8 +77,22 @@ class TrackAppOpenWorker( .writeTimeout(10, TimeUnit.SECONDS) .build() + val jsonBody = JSONObject().apply { + put("oa_uid", trackingEvent.oaUid) + put("ifa", trackingEvent.ifa) + put("android_id", trackingEvent.androidId) + put("event_id", trackingEvent.eventId) + put("event_uid", trackingEvent.eventUid) + put("event_time", trackingEvent.eventTime) + } + + val request = Request.Builder() + .url(url) + .post(jsonBody.toString().toRequestBody("application/json".toMediaType())) + .build() + withContext(Dispatchers.IO) { - client.newCall(Request.Builder().url(url).build()).execute() + client.newCall(request).execute() }.use { response -> return if (response.isSuccessful) { Log.i("OpenAttribution", "Tracking request successful: ${response.code}") @@ -79,11 +106,9 @@ class TrackAppOpenWorker( Log.e("OpenAttribution", "Error in TrackAppOpenWorker: ${e.message}") return Result.retry() } - - } - private fun constructTrackingUrl( + private fun constructTrackingRequest( baseUrl: String, packageName: String, oauid: String, @@ -92,9 +117,19 @@ class TrackAppOpenWorker( eventId: String, eventUid: String, eventTime: Long - ): String { - val url = "$baseUrl/collect/events/$packageName?oa_uid=$oauid&ifa=$gaid&android_id=$androidId&event_id=$eventId&event_uid=$eventUid&event_time=$eventTime&b=A" + ): Pair { + val url = "$baseUrl/collect/events/$packageName" + + val trackingEvent = TrackingEvent( + oaUid = oauid, + ifa = gaid, + androidId = androidId, + eventId = eventId, + eventUid = eventUid, + eventTime = eventTime + ) + Log.i("OpenAttribution", "Constructing tracking URL $url") - return url + return Pair(url, trackingEvent) } } From 36d73a0f0d3f473bc39bfe55b8ca6c77dbbba808 Mon Sep 17 00:00:00 2001 From: James O'Claire Date: Thu, 13 Feb 2025 15:07:48 +0800 Subject: [PATCH 2/3] Update release notes --- CHANGELOG.md | 8 ++++++++ RELEASING.md | 2 +- gradle/libs.versions.toml | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0775cae..955f172 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Change Log +## 0.0.9 *(2025-02-13)* + +### THIS SDK IS NOT YET STABLE +Please feel free to try but note that this is a work in progress. Feel free to join Open Attribution for questions or contributing. + +### Changes +- Send data vis JSON + ## 0.0.8 *(2025-01-21)* ### THIS SDK IS NOT YET STABLE diff --git a/RELEASING.md b/RELEASING.md index 94a728b..ec9ed27 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -5,7 +5,7 @@ Prerequisites check `git remote -v` that `OpenAttribution/oa-android-sdk` is there. If you do not see it, add it: `git remote add upstream https://github.com/OpenAttribution/oa-android-sdk.git` -1. Make sure `CHANGELOG.md` is up-to-date on `main` for the impeding release. Info under `X.Y.Z` will be used on the GitHub release page. +1. Make sure `CHANGELOG.md` is up-to-date on `main` for the impending release. Info under `X.Y.Z` will be used on the GitHub release page. 2. Update `libs.versions.toml` to use `X.Y.Z` 3. Create pull request from your repo to OpenAttribution 4. Make a new tag: `git tag X.Y.Z` diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b9d412c..7cda1ca 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -oaReleaseVersion = "0.0.8" +oaReleaseVersion = "0.0.9" agp = "8.7.2" kotlin = "1.9.24" coreKtx = "1.15.0" From 807db61c1e48a9defc0b0488692c18359ff7ebf5 Mon Sep 17 00:00:00 2001 From: James O'Claire Date: Thu, 13 Feb 2025 15:12:27 +0800 Subject: [PATCH 3/3] fix bug with awk for cutting the release notes based on the first ## block --- .github/workflows/publish-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index d5fbd28..de18226 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -24,7 +24,7 @@ jobs: - name: Get release notes run: | echo "RELEASE_NOTES<> $GITHUB_ENV - echo "$(awk "/^## $version/{flag=1;next}/^## /{flag=0}flag" CHANGELOG.md)" >> $GITHUB_ENV + echo "$(awk '/^## [^ ]/{if (found) exit; found=1} found' CHANGELOG.md)" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV - name: Set version for tag