| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //
- // QSLInAppReviewmanager.swift
- // QuickSearchLocation
- //
- // Created by Destiny on 2025/7/30.
- //
- import StoreKit
- class QSLInAppReviewmanager {
- // 记录应用启动次数
- static let launchCountKey = "AppLaunchCount"
-
- // 检查并请求评论
- static func requestReviewIfAppropriate() {
- // 获取应用启动次数
- let defaults = UserDefaults.standard
- var launchCount = defaults.integer(forKey: launchCountKey)
- launchCount += 1
- defaults.set(launchCount, forKey: launchCountKey)
-
- // 在适当的时机请求评论(例如第5次、第20次启动等)
- if launchCount == 5 || launchCount == 20 || launchCount == 50 {
- requestReview()
- }
- }
-
- // 直接请求评论(需要满足App Store的条件才会显示)
- static func requestReview() {
- if #available(iOS 14.0, *) {
- // 获取当前窗口场景
- if let windowScene = UIApplication.shared.connectedScenes
- .first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
- SKStoreReviewController.requestReview(in: windowScene)
- }
- } else {
- // iOS 14以下版本
- SKStoreReviewController.requestReview()
- }
- }
-
- // 引导用户到App Store评论页面(备用方案)
- static func openAppStoreReviewPage() {
- guard let appId = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as? String else { return }
- let urlString = "itms-apps://itunes.apple.com/app/id\(appId)?action=write-review"
-
- if let url = URL(string: urlString), UIApplication.shared.canOpenURL(url) {
- UIApplication.shared.open(url, options: [:], completionHandler: nil)
- }
- }
- }
- /*
- // 使用示例
- // 在应用启动时调用(通常在AppDelegate或SceneDelegate中)
- func applicationDidBecomeActive(_ application: UIApplication) {
- InAppReviewManager.requestReviewIfAppropriate()
- }
- // 或者在用户完成关键操作后调用
- func userCompletedSignificantAction() {
- InAppReviewManager.requestReview()
- }
- // 作为备用方案,在用户拒绝原生弹窗后引导到App Store
- func showAppStoreReviewPage() {
- InAppReviewManager.openAppStoreReviewPage()
- }
- */
|