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