Dc7*_*Dc7 41 storekit swift ios14
在 iOS 14 中,Xcode 显示警告:
requestReview()' 在 iOS 14.0 中被弃用
我正在使用 StoreKit 在我的应用中自动询问评论。
func requestReview() {
    guard shouldRequestReview else {return}
    SKStoreReviewController.requestReview()
    lastRequest = Date()
}
如何摆脱那个警告?
paw*_*222 82
if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
    SKStoreReviewController.requestReview(in: scene)
}
这是一个真正的单线:
SKStoreReviewController.requestReviewInCurrentScene()
但首先您需要在 中创建以下扩展SKStoreReviewController:
extension SKStoreReviewController {
    public static func requestReviewInCurrentScene() {
        if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
            requestReview(in: scene)
        }
    }
}
这是一个带有不同 Swift 扩展的GitHub 存储库,包括requestReviewInCurrentScene().
该requestReview函数在 iOS 14 中已弃用:
@available(iOS, introduced: 10.3, deprecated: 14.0)
open class func requestReview()
您需要改用该requestReview(in:)函数:
@available(iOS 14.0, *)
open class func requestReview(in windowScene: UIWindowScene)
可能的解决方案
您可以创建以下扩展:
extension UIApplication {
    var currentScene: UIWindowScene? {
        connectedScenes
            .first { $0.activationState == .foregroundActive } as? UIWindowScene
    }
}
并像这样使用它:
if let scene = UIApplication.shared.currentScene {
    SKStoreReviewController.requestReview(in: scene)
}
if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
    SKStoreReviewController.requestReview(in: scene)
}
if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
    SKStoreReviewController.requestReview(in: scene)
}
Ash*_*iya 32
适用于 iOS 13 及更高版本的简单解决方案
斯威夫特 5+
    if #available(iOS 14.0, *) {
        if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
            SKStoreReviewController.requestReview(in: scene)
        }
    } else if #available(iOS 10.3, *) {
        SKStoreReviewController.requestReview()
    }
| 归档时间: | 
 | 
| 查看次数: | 6555 次 | 
| 最近记录: |