app store connect expert
4
总安装量
0
周安装量
#50780
全站排名
安装命令
npx skills add https://github.com/willsigmon/sigstack --skill App Store Connect Expert
Skill 文档
App Store Connect Expert
Automate App Store submissions with the Connect API.
API Setup
Create API Key
- App Store Connect â Users and Access â Keys
- Generate new key with appropriate role
- Download .p8 file (only once!)
Environment Variables
export ASC_KEY_ID="XXXXXXXXXX"
export ASC_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
export ASC_KEY_PATH="~/.appstore/AuthKey_XXXXXXXXXX.p8"
Fastlane Integration
Deliver (Metadata & Screenshots)
lane :metadata do
deliver(
submit_for_review: false,
automatic_release: false,
force: true,
metadata_path: "./fastlane/metadata",
screenshots_path: "./fastlane/screenshots"
)
end
Metadata Structure
fastlane/
âââ metadata/
â âââ en-US/
â â âââ name.txt
â â âââ subtitle.txt
â â âââ description.txt
â â âââ keywords.txt
â â âââ promotional_text.txt
â â âââ privacy_url.txt
â â âââ support_url.txt
â âââ ja/
â âââ ...
âââ screenshots/
âââ en-US/
âââ iPhone 6.5"/
âââ iPhone 5.5"/
âââ iPad Pro 12.9"/
Screenshot Automation
Fastlane Snapshot
# Snapfile
devices([
"iPhone 15 Pro Max",
"iPhone 8 Plus",
"iPad Pro (12.9-inch) (6th generation)"
])
languages([
"en-US",
"ja"
])
scheme("AppUITests")
output_directory("./fastlane/screenshots")
Run Snapshots
fastlane snapshot
Frame Screenshots
lane :frames do
frameit(
white: true,
path: "./fastlane/screenshots"
)
end
Release Automation
Submit for Review
lane :release do
deliver(
submit_for_review: true,
automatic_release: true,
submission_information: {
add_id_info_uses_idfa: false
},
precheck_include_in_app_purchases: false
)
end
Phased Release
deliver(
phased_release: true,
automatic_release: true
)
App Store Connect CLI
Installation
brew install app-store-connect-cli
# Or
pip install appstoreconnect
List Apps
asc apps list
Get Build Status
asc builds list --app-id 123456789
API Direct Access
JWT Token Generation
import jwt
import time
def generate_token():
headers = {
"alg": "ES256",
"kid": KEY_ID,
"typ": "JWT"
}
payload = {
"iss": ISSUER_ID,
"exp": int(time.time()) + 1200, # 20 minutes
"aud": "appstoreconnect-v1"
}
with open(KEY_PATH, 'r') as f:
private_key = f.read()
return jwt.encode(payload, private_key,
algorithm='ES256', headers=headers)
API Request
import requests
token = generate_token()
response = requests.get(
"https://api.appstoreconnect.apple.com/v1/apps",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
)
Roles & Permissions
| Role | Capabilities |
|---|---|
| Admin | Everything |
| App Manager | Manage apps, no financials |
| Developer | Builds, TestFlight |
| Marketing | Metadata, screenshots |
| Sales | Reports, analytics |
Common Automations
Nightly Build Info
lane :check_status do
latest = latest_testflight_build_number
puts "Latest build: #{latest}"
# Check review status
# ... API call
end
Auto-Reply Reviews
# Note: App Store Connect doesn't support this via API
# Use third-party tools like AppFollow
Use when: App Store submission, metadata management, screenshot automation