Skip to content

Commit 0ee5d33

Browse files
committed
[FEAT/#384] 이벤트 중복되지 않게 구현
1 parent 8599cd9 commit 0ee5d33

2 files changed

Lines changed: 34 additions & 17 deletions

File tree

core/firebase/src/main/java/com/terning/core/firebase/messageservice/TerningMessagingService.kt

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class TerningMessagingService : FirebaseMessagingService() {
3737
lateinit var navigatorProvider: NavigatorProvider
3838

3939
@Inject
40-
lateinit var tracker: AmplitudeTracker
40+
lateinit var amplitudeTracker: AmplitudeTracker
4141

4242
override fun onNewToken(token: String) {
4343
super.onNewToken(token)
@@ -48,23 +48,27 @@ class TerningMessagingService : FirebaseMessagingService() {
4848
override fun handleIntent(intent: Intent?) {
4949
super.handleIntent(intent)
5050

51-
extractInformation(
52-
title = intent?.getStringExtra(TITLE),
53-
body = intent?.getStringExtra(BODY),
54-
type = intent?.getStringExtra(TYPE),
55-
imageUrl = intent?.getStringExtra(IMAGE_URL)
56-
)
51+
if (!isAppInForeground()) {
52+
extractInformation(
53+
title = intent?.getStringExtra(TITLE),
54+
body = intent?.getStringExtra(BODY),
55+
type = intent?.getStringExtra(TYPE),
56+
imageUrl = intent?.getStringExtra(IMAGE_URL)
57+
)
58+
}
5759
}
5860

5961
override fun onMessageReceived(message: RemoteMessage) {
6062
super.onMessageReceived(message)
6163

62-
extractInformation(
63-
title = message.data[TITLE],
64-
body = message.data[BODY],
65-
type = message.data[TYPE],
66-
imageUrl = message.data[IMAGE_URL]
67-
)
64+
if (isAppInForeground()) {
65+
extractInformation(
66+
title = message.data[TITLE],
67+
body = message.data[BODY],
68+
type = message.data[TYPE],
69+
imageUrl = message.data[IMAGE_URL]
70+
)
71+
}
6872
}
6973

7074
private fun extractInformation(
@@ -75,7 +79,7 @@ class TerningMessagingService : FirebaseMessagingService() {
7579
) {
7680
if (title.isNullOrEmpty() || !userRepository.getAlarmAvailable()) return
7781

78-
tracker.track(
82+
amplitudeTracker.track(
7983
type = EventType.PUSH_NOTIFICATION,
8084
name = "received"
8185
)
@@ -101,6 +105,7 @@ class TerningMessagingService : FirebaseMessagingService() {
101105
action = Intent.ACTION_VIEW
102106
data = deeplink.toUri()
103107
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
108+
putExtra(FROM_NOTIFICATION, true)
104109
}
105110
val pendingIntent = PendingIntent.getActivity(
106111
this@TerningMessagingService,
@@ -169,5 +174,6 @@ class TerningMessagingService : FirebaseMessagingService() {
169174
private const val BODY: String = "body"
170175
private const val TYPE: String = "type"
171176
private const val IMAGE_URL: String = "imageUrl"
177+
const val FROM_NOTIFICATION: String = "fromNotification"
172178
}
173179
}

feature/main/src/main/java/com/terning/feature/main/MainActivity.kt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.terning.core.analytics.EventType
1414
import com.terning.core.analytics.LocalTracker
1515
import com.terning.core.designsystem.theme.TerningPointTheme
1616
import com.terning.core.designsystem.util.DeeplinkDefaults.REDIRECT
17+
import com.terning.core.firebase.messageservice.TerningMessagingService.Companion.FROM_NOTIFICATION
1718
import dagger.hilt.android.AndroidEntryPoint
1819
import javax.inject.Inject
1920

@@ -45,20 +46,30 @@ class MainActivity : ComponentActivity() {
4546

4647
private fun handleDeeplink(intent: Intent?): Pair<String?, String?> {
4748
val uri = intent?.data
48-
val host = uri?.host
49-
val redirect = uri?.getQueryParameter(REDIRECT)
49+
val uriString = uri?.toString()
5050

51-
if (uri != null) {
51+
if (uriString.isNullOrEmpty()) return null to null
52+
53+
val host = uri.host
54+
val redirect = uri.getQueryParameter(REDIRECT)
55+
56+
if (!intent.getBooleanExtra(ALREADY_TRACKED, false)
57+
&& intent.getBooleanExtra(FROM_NOTIFICATION, false)
58+
) {
5259
tracker.track(
5360
type = EventType.PUSH_NOTIFICATION,
5461
name = "opened"
5562
)
5663
}
5764

65+
intent.putExtra(ALREADY_TRACKED, true)
66+
5867
return host to redirect
5968
}
6069

6170
companion object {
71+
private const val ALREADY_TRACKED: String = "alreadyTracked"
72+
6273
fun getIntent(
6374
context: Context,
6475
) = Intent(context, MainActivity::class.java)

0 commit comments

Comments
 (0)