From 4f7cc32a792565f7ee5923064d2c1677f49395c5 Mon Sep 17 00:00:00 2001 From: jinliu9508 Date: Tue, 21 May 2024 13:49:02 -0400 Subject: [PATCH] call yield() to force a suspension point --- .../permissions/impl/NotificationPermissionController.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt index df4683989b..b60f7700ac 100644 --- a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt +++ b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/permissions/impl/NotificationPermissionController.kt @@ -43,6 +43,7 @@ import com.onesignal.notifications.R import com.onesignal.notifications.internal.common.NotificationHelper import com.onesignal.notifications.internal.permissions.INotificationPermissionChangedHandler import com.onesignal.notifications.internal.permissions.INotificationPermissionController +import kotlinx.coroutines.yield internal class NotificationPermissionController( private val _application: IApplicationService, @@ -84,6 +85,10 @@ internal class NotificationPermissionController( * to notify of the status. */ override suspend fun prompt(fallbackToSettings: Boolean): Boolean { + // Calling yield() to force a suspension point because Kotlin Continuation won't work + // properly from java caller if a suspend function does not actually suspend + yield() + if (notificationsEnabled()) { return true }