Skip to content

Commit 286d601

Browse files
Ojongseokclaude
andcommitted
[feat] #223: notification_click 이벤트 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 18afd1b commit 286d601

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

app/src/main/java/com/neki/android/app/MainActivity.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ import com.neki.android.core.navigation.root.RootNavigationState
3131
import com.neki.android.core.navigation.root.RootNavigator
3232
import com.neki.android.feature.auth.api.AuthNavKey
3333
import com.neki.android.feature.auth.impl.navigation.authEntryProvider
34+
import com.neki.android.core.analytics.event.GlobalAnalyticsEvent
35+
import com.neki.android.core.analytics.logger.AnalyticsLogger
3436
import com.neki.android.feature.photo_upload.api.navigateToQRScan
3537
import com.neki.android.feature.select_album.api.navigateToSelectAlbum
3638
import android.net.Uri
@@ -78,12 +80,18 @@ class MainActivity : ComponentActivity() {
7880
@Inject
7981
lateinit var authEventManager: AuthEventManager
8082

83+
@Inject
84+
lateinit var analyticsLogger: AnalyticsLogger
85+
8186
private var pendingShareUriStrings by mutableStateOf<ImmutableList<String>>(persistentListOf())
8287

8388
override fun onCreate(savedInstanceState: Bundle?) {
8489
super.onCreate(savedInstanceState)
8590

8691
pendingShareUriStrings = intent.extractShareUriStrings()
92+
if (intent.getBooleanExtra(NekiFirebaseMessagingService.EXTRA_FROM_NOTIFICATION, false)) {
93+
analyticsLogger.log(GlobalAnalyticsEvent.NotificationClick)
94+
}
8795

8896
enableEdgeToEdge(
8997
navigationBarStyle = SystemBarStyle.auto(
@@ -138,6 +146,9 @@ class MainActivity : ComponentActivity() {
138146

139147
override fun onNewIntent(intent: Intent) {
140148
super.onNewIntent(intent)
149+
if (intent.getBooleanExtra(NekiFirebaseMessagingService.EXTRA_FROM_NOTIFICATION, false)) {
150+
analyticsLogger.log(GlobalAnalyticsEvent.NotificationClick)
151+
}
141152
val uriStrings = intent.extractShareUriStrings()
142153
if (uriStrings.isNotEmpty()) {
143154
pendingShareUriStrings = uriStrings

app/src/main/java/com/neki/android/app/NekiFirebaseMessagingService.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,12 @@ class NekiFirebaseMessagingService : FirebaseMessagingService() {
3636
private fun showNotification(title: String, body: String) {
3737
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
3838

39+
val launchIntent = (packageManager.getLaunchIntentForPackage(packageName) ?: Intent())
40+
.putExtra(EXTRA_FROM_NOTIFICATION, true)
3941
val pendingIntent = PendingIntent.getActivity(
4042
this,
4143
0,
42-
packageManager.getLaunchIntentForPackage(packageName) ?: Intent(),
44+
launchIntent,
4345
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE,
4446
)
4547

@@ -58,5 +60,6 @@ class NekiFirebaseMessagingService : FirebaseMessagingService() {
5860
companion object {
5961
const val CHANNEL_ID = "neki_default_channel_id"
6062
const val CHANNEL_NAME = "Neki-Notification-Channel"
63+
const val EXTRA_FROM_NOTIFICATION = "extra_from_notification"
6164
}
6265
}

core/analytics/src/main/kotlin/com/neki/android/core/analytics/event/GlobalAnalyticsEvent.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ sealed interface GlobalAnalyticsEvent : AnalyticsEvent {
55
data object AppOpen : GlobalAnalyticsEvent {
66
override val name = "app_open"
77
}
8+
9+
data object NotificationClick : GlobalAnalyticsEvent {
10+
override val name = "notification_click"
11+
}
812
}

0 commit comments

Comments
 (0)