From f9a72012828064d6aae73c4c16758b53c4c3224f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6ttger?= Date: Wed, 20 Aug 2025 10:03:01 +0200 Subject: [PATCH] Fix review prompt on iOS --- QuickDropiOS/ContentView.swift | 17 ++++++++++++++++- QuickDropiOS/ReceiveModel.swift | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/QuickDropiOS/ContentView.swift b/QuickDropiOS/ContentView.swift index 12fc993..5bbfb11 100644 --- a/QuickDropiOS/ContentView.swift +++ b/QuickDropiOS/ContentView.swift @@ -7,6 +7,7 @@ import SwiftUI import LUI +import StoreKit struct ContentView: View { @@ -37,6 +38,7 @@ struct DeviceListView: View { #endif @Environment(\.scenePhase) var scenePhase + @AppStorage("requestedReview") private var requestedReview = false @ObservedObject var nearbyConnectionManager = NearbyConnectionManager.shared var body: some View { @@ -144,10 +146,23 @@ struct DeviceListView: View { if newValue == .active { log("App became active") + NearbyConnectionManager.shared.startDeviceDiscovery() #if !EXTENSION NearbyConnectionManager.shared.becomeVisible() + + if incomingTransmissionCount() > 0 && !requestedReview { + runAfter(seconds: 0.3) { + if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene { + + SKStoreReviewController.requestReview(in: scene) + requestedReview = true + } + else { + log("Error Requesting Review!") + } + } + } #endif - NearbyConnectionManager.shared.startDeviceDiscovery() } if newValue == .background { diff --git a/QuickDropiOS/ReceiveModel.swift b/QuickDropiOS/ReceiveModel.swift index ffc66c8..e3bfccc 100644 --- a/QuickDropiOS/ReceiveModel.swift +++ b/QuickDropiOS/ReceiveModel.swift @@ -156,11 +156,14 @@ class ReceiveModel: ObservableObject, InboundAppDelegate { } let currentCount = incomingTransmissionCount() + + #if os(macOS) if currentCount == 0 { DispatchQueue.main.asyncAfter(deadline: .now() + 1) { SKStoreReviewController.requestReview() } } + #endif UserDefaults.standard.set(currentCount + 1, forKey: UserDefaultsKeys.transmissionCount.rawValue) log("[ReceiveModel] Successful transmission. Current count: \(currentCount)")