From c4945f6ab9455b4d4141939b8ff9af90889b590f Mon Sep 17 00:00:00 2001 From: b3ni15 Date: Mon, 9 Mar 2026 08:32:51 +0100 Subject: [PATCH] Add cleanup flag to prevent dismiss notifications during activity cleanup --- refilc/ios/Runner/public_vars.swift | 2 ++ refilc/ios/livecard/LiveActivityManager.swift | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/refilc/ios/Runner/public_vars.swift b/refilc/ios/Runner/public_vars.swift index 722cc4a5..4019ce74 100644 --- a/refilc/ios/Runner/public_vars.swift +++ b/refilc/ios/Runner/public_vars.swift @@ -11,3 +11,5 @@ var lessonDataDictionary: [String: Any] = [:] var globalLessonData = LessonData(from: lessonDataDictionary) var activityID: String? = "" var activityPushToken: String? = nil +/// Ha true, a monitorActivityState nem küld dismiss notification-t (cleanup közben vagyunk) +var isCleaningUpOldActivities = false diff --git a/refilc/ios/livecard/LiveActivityManager.swift b/refilc/ios/livecard/LiveActivityManager.swift index 5719a373..792012fc 100644 --- a/refilc/ios/livecard/LiveActivityManager.swift +++ b/refilc/ios/livecard/LiveActivityManager.swift @@ -32,9 +32,14 @@ final class LiveActivityManager { class func create(completion: @escaping (Bool) -> Void) { Task { // Előző activity-k eltakarítása, hogy ne legyen dupla + // Flag beállítása, hogy a monitorActivityState ne küldjön dismiss notification-t + isCleaningUpOldActivities = true for activity in Activity.activities { await activity.end(nil, dismissalPolicy: .immediate) } + // Kis várakozás, hogy a state update-ek lefussanak + try? await Task.sleep(nanoseconds: 200_000_000) + isCleaningUpOldActivities = false do { let contentState = LiveActivitiesAppAttributes.ContentState( @@ -96,6 +101,11 @@ final class LiveActivityManager { private class func monitorActivityState(activity: Activity) async { for await state in activity.activityStateUpdates { if state == .dismissed || state == .ended { + // Ha cleanup közben vagyunk (create() hívta), ne küldjünk dismiss notification-t + if isCleaningUpOldActivities { + print("Live Activity ended during cleanup - ignoring dismiss") + break + } print("Live Activity dismissed/ended by user or system") activityID = nil activityPushToken = nil