Skip to content

Commit

Permalink
Merge release/2024.12.13T01.14.35 into master
Browse files Browse the repository at this point in the history
  • Loading branch information
harukitosa committed Dec 13, 2024
2 parents 72d272b + 2894afb commit c3af403
Show file tree
Hide file tree
Showing 10 changed files with 83 additions and 22 deletions.
32 changes: 25 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,31 @@
# Latest Version

| モジュール/プラグイン名 | Description | 最新のバージョン |
| :-- | :-- |:---------|
| core | イベントトラッキング機能を提供します。 | 2.25.0 |
| :-- | :-- | :-- |
| core | イベントトラッキング機能を提供します。 | 2.25.1 |
| inappmessaging | アプリ内メッセージ機能を提供します。 | 2.20.0 |
| notifications | プッシュ通知の受信および効果測定機能を提供します。 | 2.11.0 |
| variables | 設定値配信機能を提供します。 | 2.7.0 |
| visualtracking | ビジュアルトラッキング機能を提供します。| 2.9.0 |
| Karte Gradle Plugin | ビジュアルトラッキング機能に必要なプラグインです。| 2.5.1 |
| notifications | プッシュ通知の受信および効果測定機能を提供します。 | 2.11.0 |
| variables | 設定値配信機能を提供します。 | 2.7.0 |
| visualtracking | ビジュアルトラッキング機能を提供します。| 2.9.0 |
| Karte Gradle Plugin | ビジュアルトラッキング機能に必要なプラグインです。| 2.5.1 |

# Releases - 2024.12.13

### Core 2.25.1
** 🔨FIXED **
- 古い関数の修正を行いました

** 🔨CHANGED**
- イベント送信のログにイベント内容を付与しました。

### InAppMessaging 2.20.1
** 🔨FIXED **
- _message_suppressed送信前に、まれにクラッシュする不具合を修正しました。


### notifications 2.12.0
** 🔨FIXED**
- タスクキル状態でPush通知を開封した際の不具合を修正しました。

# Releases - 2024.08.21

Expand Down Expand Up @@ -43,7 +61,7 @@
** 🔨CHANGED**
- targetSdkVersionを 29 -> 31 に変更しました。

## Variables 2.6.0
### Variables 2.6.0
** 🔨CHANGED**
- 設定値配信のキャッシュを削除するclearCacheAll/clearCacheByKeyというメソッドを追加しました

Expand Down
33 changes: 33 additions & 0 deletions core/src/main/java/io/karte/android/tracking/queue/Dispatcher.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ import io.karte.android.KarteApp
import io.karte.android.core.library.ActionModule
import io.karte.android.core.library.TrackModule
import io.karte.android.core.logger.Logger
import io.karte.android.tracking.BaseEventName
import io.karte.android.tracking.EventValidator
import io.karte.android.tracking.MessageEventName
import io.karte.android.tracking.TrackCompletion
import io.karte.android.tracking.client.TrackResponse
import io.karte.android.tracking.client.requestOf
Expand All @@ -32,6 +34,7 @@ import io.karte.android.utilities.connectivity.retryIntervalMs
import io.karte.android.utilities.datastore.DataStore
import io.karte.android.utilities.datastore.RelationalOperator
import io.karte.android.utilities.http.Client
import java.util.UUID
import kotlin.math.min

private const val LOG_TAG = "Karte.Dispatcher"
Expand Down Expand Up @@ -164,6 +167,8 @@ internal class Dispatcher {
}

private fun request(key: GroupingKey, events: List<EventRecord>) {
logRequestEvents(UUID.randomUUID(), events)

rateLimit.increment(events.size)
val (visitorId, originalPvId, pvId) = key
var request = requestOf(
Expand Down Expand Up @@ -207,6 +212,34 @@ internal class Dispatcher {
rateLimit.decrementWithDelay(events.size, ::dequeue)
}

private fun logRequestEvents(requestId: UUID, events: List<EventRecord>) {
events.forEach {
val eventRecordId = it.recordId
val visitorId = it.visitorId
val eventName = it.event.eventName.value
Logger.v(LOG_TAG, "request event request_id=$requestId event_record_id=$eventRecordId visitor_id=$visitorId event_name=$eventName ${it.event.values}")

when (eventName) {
BaseEventName.View.value -> {
val viewName = it.event.values.getString("view_name")
val title = it.event.values.getString("title")
Logger.i(LOG_TAG, "request event request_id=$requestId event_record_id=$eventRecordId visitor_id=$visitorId view_name=$viewName title=$title")
}
MessageEventName.MessageOpen.value,
MessageEventName.MessageSuppressed.value,
MessageEventName.MessageReady.value,
MessageEventName.MessageClick.value,
MessageEventName.MessageClose.value -> {
val message = it.event.values.getJSONObject("message")
val campaignId = message.getString("campaign_id")
val shortenId = message.getString("shorten_id")
Logger.i(LOG_TAG, "request event request_id=$requestId event_record_id=$eventRecordId visitor_id=$visitorId campaign_id=$campaignId shorten_id=$shortenId")
}
else -> {}
}
}
}

private fun removeFromQueue(events: List<EventRecord>, isSuccessful: Boolean) {
events.forEach {
DataStore.delete(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ import android.database.Cursor
import io.karte.android.tracking.Event
import io.karte.android.utilities.datastore.Contract
import io.karte.android.utilities.datastore.Persistable
import java.util.UUID

internal class EventRecord() : Persistable() {
val recordId: UUID get() = UUID.randomUUID()
val visitorId: String get() = values[EventContract.VISITOR_ID] as String
val originalPvId: String get() = values[EventContract.ORIGINAL_PV_ID] as String
val pvId: String get() = values[EventContract.PV_ID] as String
Expand Down
3 changes: 2 additions & 1 deletion core/src/main/java/io/karte/android/utilities/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ internal fun <K, V> Map<K, V?>.filterNotNull(): Map<K, V> {
//region Any
/** クラスの小文字表現を返します。 */
@Deprecated("Does not return the name you expect when obfuscated", ReplaceWith(""))
fun Any.getLowerClassName(): String = this::class.java.simpleName.toLowerCase(Locale.ROOT)
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
fun Any.getLowerClassName(): String = (this::class.java.simpleName as java.lang.String).toLowerCase(Locale.ROOT)

private fun Any?.unwrapJson(): Any? {
return when (this) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ private fun getCursorWindowSize(): Int {
}

private class DbHelper(context: Context) :
SQLiteOpenHelper(context, "krt_cache.db", null, persistableContracts.sumBy { it.version }) {
SQLiteOpenHelper(context, "krt_cache.db", null, persistableContracts.sumOf { it.version }) {
override fun onCreate(db: SQLiteDatabase) {
persistableContracts.forEach { contract ->
createTable(db, contract)
Expand Down
2 changes: 1 addition & 1 deletion core/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.25.0
2.25.1
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import io.karte.android.tracking.client.TrackRequest
import io.karte.android.tracking.client.TrackResponse
import io.karte.android.tracking.queue.TrackEventRejectionFilterRule
import io.karte.android.utilities.ActivityLifecycleCallback
import org.json.JSONException
import org.json.JSONObject

private const val LOG_TAG = "Karte.InAppMessaging"
Expand Down Expand Up @@ -273,15 +274,19 @@ class InAppMessaging : Library, ActionModule, UserModule, TrackModule, ActivityL
}

private fun trackMessageSuppressed(message: JSONObject, reason: String) {
val action = message.getJSONObject("action")
val campaignId = action.getString("campaign_id")
val shortenId = action.getString("shorten_id")
val campaign = message.getJSONObject("campaign")
val serviceActionType = campaign.getString("service_action_type")
if (serviceActionType == "remote_config") {
return
try {
val action = message.getJSONObject("action")
val campaignId = action.getString("campaign_id")
val shortenId = action.getString("shorten_id")
val campaign = message.getJSONObject("campaign")
val serviceActionType = campaign.getString("service_action_type")
if (serviceActionType == "remote_config") {
return
}
val values = mapOf("reason" to reason)
Tracker.track(MessageEvent(MessageEventType.Suppressed, campaignId, shortenId, values))
} catch (e: JSONException) {
Logger.d(LOG_TAG, "Failed to parse json.", e)
}
val values = mapOf("reason" to reason)
Tracker.track(MessageEvent(MessageEventType.Suppressed, campaignId, shortenId, values))
}
}
2 changes: 1 addition & 1 deletion inappmessaging/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.20.0
2.20.1
4 changes: 3 additions & 1 deletion notifications/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@

<application>
<receiver android:name="io.karte.android.notifications.MessageReceiver" />
<activity android:name="io.karte.android.notifications.MessageReceiveActivity" />
<activity
android:name="io.karte.android.notifications.MessageReceiveActivity"
android:excludeFromRecents="true" />
</application>
</manifest>
2 changes: 1 addition & 1 deletion notifications/version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.11.0
2.12.0

0 comments on commit c3af403

Please sign in to comment.