【iOS】既存のリリースアプリのレーティング情報の取得方法
概要
fastlaneのdeliverを使っていて、オプションにapp_rating_config_path
(アプリのレーティング情報が載ったjsonのパス)も設定できるけど、どこからその情報取得できるんです??となって調べたので備忘録として残します。
取得方法
1. App Store ConnectのAPIリクエストのトークンの生成する
App Store Connect(以下ASC)にあるレーティング情報が欲しいので、まずはASCにアクセスするためのトークンを生成します。
トークンを生成するために、ASCのAPIキーを作成します。
APIキーの作成方法については下記記事が画像付きで分かりやすかったのでそちらを参考にしてください。
上記でAPIキーを生成すると以下3つが取得でき、これらを用いてトークンを生成します。
- キーID
- IssuerID
- .p18ファイル
まず、トークンを作成するためにJWT.ioにアクセスします。
次に、Generating Tokens for API Requestsを元に、以下画像のようにHEADER
、PAYLOAD
、VERIFY SIGNATURE
を入力します。
iat
とexp
はそれぞれトークン作成時間
、トークン有効期限
のUNIX時間です。
有効期間は作成時間から20分以内にする必要があります。
また、アプリのAppStoreのIDはASCの一般情報の「Apple ID」です。
入力が完了すると、左側にエンコードされたトークンが生成されるので、それを用いてASCのAPIを叩いていきます。
(JWT.ioはまだ使うのでそのままにしておきます。)
2. App Informationを取得する(appinfos用のidを取得する)
上記のAPIを叩いてまずはApp Informationを取得します。
先ほど生成したトークンをヘッダーに付与してAPIが叩ければなんでも良いのですが、自分は下記のようにVSCodeの拡張機能の「REST Client」を用いて叩いています。参考
GET https://api.appstoreconnect.apple.com/v1/apps/<アプリのAppStore ID>/appInfos Authorization: Bearer <生成したトークン>
するとレスポンスが下記のように返ってくるので、先ほどトークンを生成したJWT.ioで適当な値を入れていた「アプリのリソースID」にここで取得したid
のvalueを設定します。
そうするとトークンがまた変わるので、それをコピーしておきます。
3. レーティングに関する情報を取得する
GET /v1/appInfos/{id}/ageRatingDeclaration
最後に上記APIを叩きます。
GET https://api.appstoreconnect.apple.com/v1/<アプリのリソースID>/ageRatingDeclaration Authorization: Bearer <生成したトークン>
無事レーティング情報を取得できました!
fastlaneのapp_rating_config_path
に指定するjsonには上記からattributes
のvalueを転記すればOKです。
{ "alcoholTobaccoOrDrugUseOrReferences": "NONE", "contests": "NONE", "gamblingAndContests": false, "gambling": false, "gamblingSimulated": "NONE", "kidsAgeBand": null, "medicalOrTreatmentInformation": "NONE", "profanityOrCrudeHumor": "NONE", "sexualContentGraphicAndNudity": "NONE", "sexualContentOrNudity": "NONE", "seventeenPlus": false, "horrorOrFearThemes": "NONE", "matureOrSuggestiveThemes": "NONE", "unrestrictedWebAccess": false, "violenceCartoonOrFantasy": "NONE", "violenceRealisticProlongedGraphicOrSadistic": "NONE", "violenceRealistic": "NONE" }
まとめ
これでアプリのレーティングに関する情報もgitで管理できるようになりました!
少し面倒だったので、もっと簡単な方法があったらぜひ教えていただきたいです。🙏