ZhgChg.Li

App Store Connect API|Customer Reviews 管理を強化:In-app purchases・Subscriptionsも対応

開発者向けにApp Store Connect API 2.0+がCustomer Reviewsの読み取り・管理を実現。In-app purchasesやSubscriptionsも統合し、レビュー対応の効率化と収益最大化をサポートします。

App Store Connect API|Customer Reviews 管理を強化:In-app purchases・Subscriptionsも対応
本記事は AI による翻訳です。お気づきの点があればお知らせください。

App Store Connect API は現在、カスタマーレビューの読み取りと管理をサポートしています

App Store Connect API 2.0+ が全面更新され、In-app purchases、Subscriptions、Customer Reviews の管理に対応

2022/07/19 ニュース

XMLフィードからApp Store Connect APIへの今後の移行

XMLフィードからApp Store Connect APIへの移行予定

今朝、Apple 開発者最新情報 を受け取りました。App Store Connect API に In-app purchases、Subscriptions、Customer Reviews 管理の3つの新機能が追加されました。これにより、開発者は Apple の開発プロセスを CI/CD やビジネスバックエンドとより柔軟かつ効率的に統合できるようになります!

In-app purchases、Subscriptions は触っていませんが、Customer Reviews には非常に興奮しています。以前、「AppStore APP’s Reviews Slack Bot 那些事」という記事で、App の評価とワークフロー統合の方法について紹介しました。

Slack レビュー・ボット — ZReviewsBot

Slack レビュー ボット — ZReviewsBot

App Store Connect API がサポートされる前は、iOSアプリのレビューを取得する方法は2つしかありませんでした:

一 は サブスクリプションで Public RSS を取得していますが、この RSS は柔軟なフィルタリングができず、提供される情報も少なく、件数制限があり、時折データの不整合が発生するため非常に不安定です。

二 は Fastlane SpaceShip を使って複雑なウェブ操作やセッション管理をラップし、App Store Connect の管理画面からレビューを取得します(ウェブブラウザのエミュレーターでスクレイピングしてデータを取得するようなものです)。

  • メリットはデータが完全かつ安定していることで、私たちは1年間連携して問題なく運用できています。

  • 欠点は、Session が毎月期限切れになり、手動で再ログインが必要なことです。また、Apple ID は現在すべて 2FA 認証が必須なので、この操作も手動で行わなければなりません。そうしないと有効な Session を生成できません。さらに、Session を生成した IP と使用する IP が異なるとすぐに期限切れになるため(そのため、固定 IP でないネットワークサービスにボットを置くのは難しいです)。

Fastlaneによるセッションの有効期間に関する重要な注意点

important-note-about-session-duration by Fastlane

  • 毎月不定期に期限切れになるため、その都度更新が必要で、長期間続くと非常に面倒です;さらにこの「Know How」は実際には他の同僚に引き継ぐのが難しいです。

しかし他に方法がなかったため、このままにしていましたが、今朝になって通知を受けました…。

⚠️ 注意:公式は2022年11月に従来のXML(RSS)アクセス方式を廃止する予定です。

2022/08/10 更新

私は新しい App Store Connect API を基に、新しい「ZReviewTender — 無料オープンソースの App Reviews 監視ロボット」を開発しました。

App Store Connect API 2.0+ カスタマーレビュー 試用

App Store Connect API キーの作成

まずは App Store Connect の管理画面にログインし、「Users and Access」->「Keys」->「App Store Connect API」に進みます:

「+」をクリックし、名前と権限を入力します。権限の詳細については公式サイトの説明を参照してください。テストの問題を減らすため、ここではまず「App Manager」を選択して最大の権限を付与します。

右側の「Download API Key」をクリックして、「AuthKey_XXX.p8」キーを保存してください。

⚠️ 注意:このキーは一度だけダウンロード可能ですので、大切に保管してください。紛失した場合は既存のキーを取り消して再作成する必要があります。⚠️

⚠️ .p8 キーファイルを絶対に漏洩しないでください⚠️

App Store Connect API アクセス方法

curl -v -H 'Authorization: Bearer [signed token]' "https://api.appstoreconnect.apple.com/v1/apps"

Authorization ヘッダーに署名済みトークンを設定して、App Store Connect API のアプリ一覧を取得するコマンド例です。

Signed Token (JWT, JSON Web Token) の生成方法

参考 公式ドキュメント

  • JWT ヘッダー:
{kid:"YOUR_KEY_ID", typ:"JWT", alg:"ES256"}

YOUR_KEY_ID :上の図を参照してください。

  • JWT ペイロード:
{
  iss: 'YOUR_ISSUE_ID',
  iat: TOKEN 作成時間 (UNIXタイムスタンプ 例: 1658326020),
  exp: TOKEN 有効期限 (UNIXタイムスタンプ 例: 1658327220),
  aud: 'appstoreconnect-v1'
}

YOUR_ISSUE_ID :上の図を参照してください。

exp TOKEN の有効期限 :アクセスする機能や設定によって有効期限が異なります。永続的なものもあれば、20分以上経過すると無効になり再生成が必要なものもあります。詳細は公式説明をご参照ください。

JWT.IO または以下の Ruby サンプルを使って JWT を生成する

jwt.rb:

require 'jwt'
require 'time'

keyFile = File.read('./AuthKey_XXXX.p8') # あなたの .p8 プライベートキーのファイルパス
privateKey = OpenSSL::PKey::EC.new(keyFile)

payload = {
            iss: 'YOUR_ISSUE_ID',
            iat: Time.now.to_i,
            exp: Time.now.to_i + 60*20,
            aud: 'appstoreconnect-v1'
          }

token = JWT.encode payload, privateKey, 'ES256', header_fields={kid:"YOUR_KEY_ID", typ:"JWT"}
puts token


decoded_token = JWT.decode token, privateKey, true, { algorithm: 'ES256' }
puts decoded_token

最終的に以下のような JWT 結果が得られます:

4oxjoi8j69rHQ58KqPtrFABBWHX2QH7iGFyjkc5q6AJZrKA3AcZcCFoFMTMHpM.pojTEWQufMTvfZUW1nKz66p3emsy2v5QseJX5UJmfRjpxfjgELUGJraEVtX7tVg6aicmJT96q0snP034MhfgoZAB46MGdtC6kv2Vj6VeL2geuXG87Ys6ADijhT7mfHUcbmLPJPNZNuMttcc.fuFAJZNijRHnCA2BRqq7RZEJBB7TLsm1n4WM1cW0yo67KZp-Bnwx9y45cmH82QPAgKcG-y1UhRUrxybi5b9iNN

試してみる?

Token があれば、App Store Connect API を試してみましょう!

curl -H 'Authorization: Bearer JWT' "https://api.appstoreconnect.apple.com/v1/apps/APPID/customerReviews"

JWT トークンを使ってカスタマーレビューを取得する例

  • APPID は App Store Connect の管理画面から取得できます:

または App ストアのページ:

  • 成功!🚀 私たちは今、この方法でAppのレビューを取得できます。データは完全で、すべて自動化可能で、人手による定期的なメンテナンスは不要です(JWTは期限切れになりますが、プライベートキーは変わらず、毎回プライベートキーで署名してJWTを生成しアクセスできます)。

  • その他のフィルター条件や操作方法については、公式ドキュメント を参照してください。

⚠️ あなたが権限を持つアプリのレビューのみアクセス可能です ⚠️

完全な Ruby テストプロジェクト

Rubyファイルで上記の手順を実装しており、そのままクローンして必要な情報を入力するだけでテストが可能です。

初回起動:

bundle install

使い始める:

bundle exec ruby jwt.rb

次へ

同様に API を通じてアクセス管理が可能です ( API Overview ):

Post Mediumから変換 by ZMediumToMarkdown.

GitHub で編集
この記事を改善
本記事は Medium で初公開
オリジナルを読む
この記事をシェア
リンクをコピー · SNS でシェア
ZhgChgLi
著者

ZhgChgLi

An iOS, web, and automation developer from Taiwan 🇹🇼 who also loves sharing, traveling, and writing.

コメント