Skip to content

Commit

Permalink
[analytics] identify on Android
Browse files Browse the repository at this point in the history
  • Loading branch information
Him188 committed Mar 4, 2025
1 parent 74506d9 commit 55adc28
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 11 deletions.
1 change: 1 addition & 0 deletions app/android/src/main/kotlin/AniApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ class AniApplication : Application() {
AnalyticsHolder.init(
AnalyticsImpl(
AnalyticsConfig.create(),
userId = settings.userId,
).apply {
init(
this@AniApplication,
Expand Down
12 changes: 9 additions & 3 deletions utils/analytics/src/androidMain/kotlin/IAnalytics.android.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ import android.content.Context
import com.posthog.PostHog
import com.posthog.android.PostHogAndroid
import com.posthog.android.PostHogAndroidConfig
import java.util.UUID

class AnalyticsImpl(config: AnalyticsConfig) : CommonAnalyticsImpl(config), IAnalytics {
class AnalyticsImpl(
config: AnalyticsConfig,
private val userId: String, // anonymous id
) : CommonAnalyticsImpl(config), IAnalytics {
fun init(
context: Context,
apiKey: String,
Expand All @@ -23,17 +27,19 @@ class AnalyticsImpl(config: AnalyticsConfig) : CommonAnalyticsImpl(config), IAna
val config = PostHogAndroidConfig(
apiKey = apiKey,
host = host,
).apply {
).apply {
debug = config.debugLogging
this.getAnonymousId = { UUID.fromString(userId) }
}
PostHogAndroid.setup(context, config)
}

override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any?>) {
override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any>) {
PostHog.capture(event = event.event)
}

override fun onAppStart() {
PostHog.identify(userId, userProperties = intrinsicProperties)
}
}

Expand Down
2 changes: 1 addition & 1 deletion utils/analytics/src/appleMain/kotlin/IAnalytics.apple.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class AnalyticsImpl(config: AnalyticsConfig) : IAnalytics, CommonAnalyticsImpl(c

}

override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any?>) {
override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any>) {
// TODO: ios analytics
}
}
Expand Down
12 changes: 6 additions & 6 deletions utils/analytics/src/commonMain/kotlin/IAnalytics.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ val Analytics: IAnalytics get() = AnalyticsHolder.getInstance()
interface IAnalytics {
fun recordEvent(
event: AnalyticsEvent,
properties: Map<String, Any?> = emptyMap(),
properties: Map<String, Any> = emptyMap(),
)

fun onAppStart() {}
}

inline fun IAnalytics.recordEvent(
event: AnalyticsEvent,
buildProperties: MutableMap<String, Any?>.() -> Unit = {},
buildProperties: MutableMap<String, Any>.() -> Unit = {},
) {
recordEvent(event, buildMap(buildProperties))
}
Expand Down Expand Up @@ -64,18 +64,18 @@ data class AnalyticsConfig(
abstract class CommonAnalyticsImpl(
protected val config: AnalyticsConfig,
) : IAnalytics {
protected val intrinsicProperties: Map<String, Any?> = buildMap {
protected val intrinsicProperties: Map<String, Any> = buildMap {
val platform = currentPlatform()
put("os", platform.name)
put("arch", platform.arch.name)
put("version", config.appVersion)
}

final override fun recordEvent(event: AnalyticsEvent, properties: Map<String, Any?>) {
final override fun recordEvent(event: AnalyticsEvent, properties: Map<String, Any>) {
recordEventImpl(event, intrinsicProperties + properties)
}

protected abstract fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any?> = emptyMap())
protected abstract fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any> = emptyMap())
}

object AnalyticsHolder {
Expand All @@ -96,7 +96,7 @@ object AnalyticsHolder {
}

private object NoopAnalytics : IAnalytics {
override fun recordEvent(event: AnalyticsEvent, properties: Map<String, Any?>) {
override fun recordEvent(event: AnalyticsEvent, properties: Map<String, Any>) {
}

override fun onAppStart() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class AnalyticsImpl(
}

private val logger = logger<AnalyticsImpl>()
override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any?>) {
override fun recordEventImpl(event: AnalyticsEvent, properties: Map<String, Any>) {
postHog.capture(UUID.randomUUID().toString(), event.event, properties)
}

Expand Down

0 comments on commit 55adc28

Please sign in to comment.