Skip to content

Commit 77fc5e2

Browse files
authored
Merge pull request #2111 from OneSignal/fix/group_notifications_ctr
Fix: Update onNotificationOpened to process each notification ID
2 parents 53ddae8 + c270e28 commit 77fc5e2

File tree

6 files changed

+16
-9
lines changed

6 files changed

+16
-9
lines changed

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/lifecycle/INotificationLifecycleEventHandler.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,5 @@ interface INotificationLifecycleEventHandler {
1313
suspend fun onNotificationOpened(
1414
activity: Activity,
1515
data: JSONArray,
16-
notificationId: String,
1716
)
1817
}

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/lifecycle/INotificationLifecycleService.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,5 @@ interface INotificationLifecycleService {
6969
suspend fun notificationOpened(
7070
activity: Activity,
7171
data: JSONArray,
72-
notificationId: String,
7372
)
7473
}

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/lifecycle/impl/NotificationLifecycleService.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,8 @@ internal class NotificationLifecycleService(
9595
override suspend fun notificationOpened(
9696
activity: Activity,
9797
data: JSONArray,
98-
notificationId: String,
9998
) {
100-
intLifecycleHandler.suspendingFire { it.onNotificationOpened(activity, data, notificationId) }
99+
intLifecycleHandler.suspendingFire { it.onNotificationOpened(activity, data) }
101100

102101
// queue up the opened notification in case the handler hasn't been set yet. Once set,
103102
// we will immediately fire the handler.

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/listeners/NotificationListener.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import com.onesignal.notifications.internal.INotificationActivityOpener
1414
import com.onesignal.notifications.internal.analytics.IAnalyticsTracker
1515
import com.onesignal.notifications.internal.backend.INotificationBackendService
1616
import com.onesignal.notifications.internal.common.NotificationConstants
17+
import com.onesignal.notifications.internal.common.NotificationFormatHelper
1718
import com.onesignal.notifications.internal.common.NotificationGenerationJob
1819
import com.onesignal.notifications.internal.common.NotificationHelper
1920
import com.onesignal.notifications.internal.common.OSNotificationOpenAppSettings
@@ -67,17 +68,19 @@ internal class NotificationListener(
6768
override suspend fun onNotificationOpened(
6869
activity: Activity,
6970
data: JSONArray,
70-
notificationId: String,
7171
) {
7272
val config = _configModelStore.model
7373
val appId: String = config.appId ?: ""
7474
val subscriptionId: String = _subscriptionManager.subscriptions.push.id
7575
val deviceType = _deviceService.deviceType
7676

7777
for (i in 0 until data.length()) {
78+
val notificationId = NotificationFormatHelper.getOSNotificationIdFromJson(data[i] as JSONObject?) ?: continue
79+
7880
if (postedOpenedNotifIds.contains(notificationId)) {
7981
continue
8082
}
83+
8184
postedOpenedNotifIds.add(notificationId)
8285

8386
try {
@@ -98,10 +101,15 @@ internal class NotificationListener(
98101
NotificationHelper.getCampaignNameFromNotification(openResult.notification),
99102
)
100103

104+
// Handle the first element in the data array as the latest notification
105+
val latestNotificationId = getLatestNotificationId(data)
106+
101107
if (shouldInitDirectSessionFromNotificationOpen(activity)) {
102108
// We want to set the app entry state to NOTIFICATION_CLICK when coming from background
103109
_applicationService.entryState = AppEntryAction.NOTIFICATION_CLICK
104-
_influenceManager.onDirectInfluenceFromNotification(notificationId)
110+
if (latestNotificationId != null) {
111+
_influenceManager.onDirectInfluenceFromNotification(latestNotificationId)
112+
}
105113
}
106114

107115
_activityOpener.openDestinationActivity(activity, data)
@@ -119,4 +127,9 @@ internal class NotificationListener(
119127
}
120128
return true
121129
}
130+
131+
private fun getLatestNotificationId(data: JSONArray): String? {
132+
val latestNotification = if (data.length() > 0) data[0] as JSONObject else null
133+
return NotificationFormatHelper.getOSNotificationIdFromJson(latestNotification)
134+
}
122135
}

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/open/impl/NotificationOpenedProcessor.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ import com.onesignal.core.internal.config.ConfigModelStore
3838
import com.onesignal.core.internal.database.impl.OneSignalDbContract
3939
import com.onesignal.debug.internal.logging.Logging
4040
import com.onesignal.notifications.internal.common.NotificationConstants
41-
import com.onesignal.notifications.internal.common.NotificationFormatHelper
4241
import com.onesignal.notifications.internal.common.NotificationHelper
4342
import com.onesignal.notifications.internal.data.INotificationRepository
4443
import com.onesignal.notifications.internal.lifecycle.INotificationLifecycleService
@@ -131,7 +130,6 @@ internal class NotificationOpenedProcessor(
131130
_lifecycleService.notificationOpened(
132131
context,
133132
intentExtras!!.dataArray,
134-
NotificationFormatHelper.getOSNotificationIdFromJson(intentExtras.jsonData)!!,
135133
)
136134
}
137135
}

OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/open/impl/NotificationOpenedProcessorHMS.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ internal class NotificationOpenedProcessorHMS(
6666
_lifecycleService.notificationOpened(
6767
activity,
6868
JSONUtils.wrapInJsonArray(jsonData),
69-
NotificationFormatHelper.getOSNotificationIdFromJson(jsonData)!!,
7069
)
7170
}
7271
}

0 commit comments

Comments
 (0)