この記事ではAppStore内評価レビュー画面への遷移、簡易の評価レビュー画面の表示、アプリのシェアをプログラムコードを利用して行う方法について紹介します。
◆動作検証環境
・ローカル環境:mac Catalina
・XCode:12.1
・SwiftUI:2.0
・iOS:14.0
・Life Cycle:SwiftUI App
・XCode:12.1
・SwiftUI:2.0
・iOS:14.0
・Life Cycle:SwiftUI App
スポンサードリンク
アプリのシェアの方法
インストールしているSNSのアプリなどと利用して、下記のようにアプリをシェアする方法を紹介します。
以下のメソッドを作成し、アプリのシェアを行います。
1 2 3 4 5 6 7 8 9 10 11 12 | func shareApp(){ let productURL:URL = URL(string: "https://apps.apple.com/xxxxxxxxxxxxxxxxxxxx")! let activityViewController = UIActivityViewController( activityItems: [productURL], applicationActivities: nil) UIApplication.shared.windows.first?.rootViewController?.present(activityViewController, animated: true, completion: nil) } |
productURL の指定は、すでにアプリをAppStoreにて公開している場合は、対象のアプリのURLを利用し、公開していない場合は、AppStoreConnect内の一般[App情報]→[AppStoreで表示]から参照します。
AppStoreの評価・レビュー画面への遷移方法
次に、AppStoreの評価・レビュー画面への遷移方法です。
下記のような画面へ遷移し、対象のアプリの評価、レビューを行います。
下記のメソッドを作成し、遷移を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | func reviewApp(){ let productURL:URL = URL(string: "https://apps.apple.com/xxxxxxxxxxxxxx")! var components = URLComponents(url: productURL, resolvingAgainstBaseURL: false) components?.queryItems = [ URLQueryItem(name: "action", value: "write-review") ] guard let writeReviewURL = components?.url else { return } UIApplication.shared.open(writeReviewURL) } |
AppStore内の評価、レビュー画面遷移の動作確認は、実機を利用して行います。
評価画面の表示方法
次に評価画面の表示方法です。
先程紹介した、AppStore内で評価するものと違い、以下のようなアプリ内に画面を表示させ星の数による評価を行う方法です。
下記のメソッドを作成し、評価画面を表示させます。
1 2 3 4 5 6 7 8 9 10 | import StoreKit func reviewAppRequest(){ if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene { SKStoreReviewController.requestReview(in: scene) } } |
これで、上記のメソッドを呼ぶと画面が表示されますが、アプリのリリース時には、アップルにより評価画面の表示には回数の制限等が設けられているためそちらを遵守する必要があるため、そちらの条件に対応する必要があります。
参考例として、以下のようにコードを編集します。
enum ReviewRequestControlの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | enum ReviewRequestControl{ static var trigegrNumber = 3 //新規バージョン時に何回目にreviewAppRequest()が呼ばれた時に画面を表示されるかを指定 @AppStorage("requestNumber") static var requestNumber = 0 //メソッドの呼ばれた回数をデバイスへ保存 @AppStorage("version") static var version = "" //現在のバージョン情報をデバイスへ保存 static func reviewAppRequest(){ requestNumber += 1 let appBuild = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String //ビルドバージョンの取得 let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String //アプリバージョンの取得 let thisVersion = "version: \(appVersion) build: \(appBuild)" //上記2つの情報より現在のバージョン情報を保存 if thisVersion != version{ //新しいバージョンになった場合の処理 if requestNumber >= trigegrNumber{ //指定したメソッドの呼ばれた回数になった場合の処理 if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene { SKStoreReviewController.requestReview(in: scene) //画面の表示 version = thisVersion //新たなバージョン情報をデバイスで管理する値とする requestNumber = 0 //回数の初期化 } } }else{ requestNumber = 0 //回数の初期化 } } } |
この変更により、さきほどreviewAppRequest() で画面表示していた箇所を、ReviewRequestControl.reviewAppRequest() と変更します。
実際の開発では、onAppear などで利用するパターンとなりそうです。
以上、AppStore内評価レビュー画面への遷移、簡易の評価レビュー画面の表示、アプリのシェアをプログラムコードを利用して行う方法について紹介しました。