Upgrade to Pro — share decks privately, control downloads, hide ads and more …

App Store Connect APIで 作業時間を増やそう

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for GO Inc. dev GO Inc. dev
October 02, 2024

App Store Connect APIで 作業時間を増やそう

「【GO/note/令和トラベル】After iOSDC & DroidKaigi 2024」で発表した資料です。
https://reiwatravel.connpass.com/event/327079/

Avatar for GO Inc. dev

GO Inc. dev

October 02, 2024
Tweet

More Decks by GO Inc. dev

Other Decks in Programming

Transcript

  1. © GO Inc. 2 自己紹介 GO株式会社 開発本部 ソフトウェア開発統括部 フルスタックエンジニア /

    伊藤 伸裕 Webシステム、モバイルアプリの受託開発、環境系ベンチャーでのエンジニアリ ングマネージャー経験を経て、2023年9月にGO株式会社にフルスタックエンジニ アとして入社。 ベースはiOSアプリエンジニアですが、アプリ・バックエンドを問わずGOのシス テム全体を渡り歩きながら開発をしています。
  2. © GO Inc. App Store Connect・Apple Developer Portal のAPI これらのサイト上の作業のほぼすべての操作にアクセスできる。

    (証明書発行、規約同意など、一部できないこともある) iOSアプリのCIを設定したことがあれば、 fastlaneなどを通して知らず知らず使っているかも。 8 App Store Connect API
  3. © GO Inc. TestFlight参加できる画面をApp Store Connect APIで作成 権限のあるスタッフは 参加ページからボタンクリックだけで TestFlightに自分で

    参加できるようになった 誰が登録しているかもわかるので、 退職処理も確実にできるように。 11 TestFlightセルフサービス参加 Google Cloud Identity-Aware Proxy App Engine Staffs App Store Connect API (TestFlight)
  4. © GO Inc. App Store Connect APIを使いこなすには、 普段から使える環境を用意するのが大事 ドキュメントをブックマークに入れておく https://developer.apple.com/documentation/appstoreconnectapi/

    認証を通したcurlを使えるようにラッパーコマンドを作っておく 16 App Store Connect APIと普段から仲良く $ ./asccurl -s "https://api.appstoreconnect.apple.com/v1/apps/XXXXXXXXXX" | jq ".data.attributes" { "name": "GO / Taxi app for Japan", "bundleId": "com.dena.automotive.taxibell", (中略) }
  5. © GO Inc. 18 Appendix: asccurlの実装 source "https://rubygems.org" gem "jwt"

    #!/bin/bash export ISSUER_ID="00000000-0000-0000-0000-000000000000" export KEY_ID="0000000000" SERVICE_NAME="AppStoreConnect_AuthKey" export KEY=$(security find-generic-password -a $KEY_ID -s $SERVICE_NAME -w \ | xxd -p -r | rev | cut -c 1- | rev) token=$(bundle exec ruby <<EOF require "jwt" puts JWT.encode( { iss: ENV["ISSUER_ID"], exp: Time.now.to_i + 20 * 60, aud: "appstoreconnect-v1" }, OpenSSL::PKey.read(ENV["KEY"]), "ES256", header_fields={ kid: ENV["KEY_ID"] } ) EOF ) curl -H "Authorization: Bearer $token" $@ 2. 左のスクリプト内の ISSUER_ID、KEY_ID を適切に設定しておく また、実行権限も付与しておく 3. キーチェーンアクセスで「新規パスワード項目」 以下の内容で保存しておく キーチェーン項目名 AppStoreConnect_AuthKey アカウント名 KEY_ID と同じ パスワード APIキーのp8ファイルの内容 1. Gemfileを作成してbundle installしておく