✍️

【UIKit】iOS18で終わるSKStoreReviewControllerに変わるAppStore.requestReview(in:)

2024/12/16に公開

iOS16から始まった(というか実際の心理的にはiOS18で引退する SKStoreReviewController.requestReview(in:) の替わりになる)レビュー依頼のやり方は、SwiftUIのものはいくつか紹介しているものがある(最後に紹介)。この記事ではUIKitのやり方を紹介する。

UIKitの書き方は

extension AppStore {
    @available(iOS 16.0, visionOS 1.0, *)
    @available(macOS, unavailable)
    @available(watchOS, unavailable)
    @available(tvOS, unavailable)
    @MainActor public static func requestReview(in scene: UIWindowScene)
}

を使って、sceneUIWindowScene を入れて

import StoreKit

AppStore.requestReview(in: scene)

とする。scene の取得は従来通りかと( SKStoreReviewController.requestReview(in:) で検索すると解説しているものが多くある)。

背景

第1期 SKStoreReviewController.requestReview() 10.3-14.0
第2期 SKStoreReviewController.requestReview(in:) 14.0-18.0
第3期 AppStore.requestReview(in:) 18.0-

@available(iOS, introduced: 10.3, deprecated: 18.0, message: "Use AppStore.requestReview(in:)")
open class SKStoreReviewController : NSObject, @unchecked Sendable {

    @available(iOS, introduced: 10.3, deprecated: 14.0, message: "Use -[SKStoreReviewController requestReviewInScene:]")
    open class func requestReview()

    @available(iOS, introduced: 14.0, deprecated: 18.0, message: "Use AppStore.requestReview(in:)")
    @MainActor open class func requestReview(in windowScene: UIWindowScene)
}

確認

シミュレータで表示を確認できました。

SwiftUI向けのもの

https://zenn.dev/littleossa/articles/8abbf621963922

https://qiita.com/Hackenbacker/items/d27faf38de3c5b250c89

おまけ

OSにこんな機能がほしい
気が向いた時にまとめていくつか入力できる。

Discussion