Spaceship
Bài đăng này đã không được cập nhật trong 8 năm
1. Giới thiệu
Chắc hẳn mọi người không chỉ một lần bị gián đoạn công việc vì những thay đổi về web của Apple Dev Portal, ví dụ như không thể tạo app mới hay không thể đưa app lên Beta TestFlight. Với sự ra đời của Spaceship thì những phiền phức trên sẽ được giải quyết.
Spaceship là một thư viện Ruby cho phép tương tác với các webservice của Apple. Với spaceship chúng ta có thể trực tiếp truy cập vào các hàm API chỉ với một HTTP client.
Spaceship sử dụng kết hợp ba loại API được sử dụng bởi Apple Developer Portal và Xcode.
Ưu điểm:
- Cho kết nối cực nhanh, chỉ cần sử dụng một HTML client.
- Truy cập hướng đối tượng tới tất cả các tài nguyên
- Không bị ảnh hưởng bởi các thay đổi trên giao diện web của Dev Portal.
- Là một công cụ đa năng cho phép truy cập tới các dịch vụ của Apple.
- Lưu lại script cho các lần sử dụng sau.
2. Cài đặt và sử dụng
Chúng ta có thể cài đặt spaceship bằng lệnh trên Terminal của Mac OS X:
sudo gem install spaceship
Để bắt đầu, chúng ta gõ dòng lệnh sau vào Terminal:
spaceship
3. Apple Developer Portal API
Dưới đây là một số lệnh sử dụng để tương tác với Apple Developer Portal, chi tiết các bạn có thể tham khảo tại đây
Đăng nhập
Chúng ta có hai cách đăng nhập:
- Dùng lệnh
spaceship
, sau đó chúng ta phải điền username và password ở lần đăng nhập đầu tiên, các lần đăng nhập sau thì chỉ cần nhập username. - Dùng lệnh:
Spaceship.login("username", "password")
Danh sách các app
Để liệt kê danh sách các app có trong iTunesConnect ta có thể dùng lệnh:
all_apps = Spaceship.app.all
Chú ý: danh sách các app sẽ được lưu vào biến all_apps
Tìm app dựa trên bundle identifier, ví dụ như "com.framgia.example"
app = Spaceship.app.find("com.framgia.example")
Liệt kê tên của toàn bộ app ta có thể dùng lệnh Ruby sau:
Spaceship.app.all.collect do |app|
app.name
end
App Service
Dùng spaceship ta có thể thay đổi các dịch vụ của app như:
app_group.(on|off)
associated_domains.(on|off)
data_protection.(complete|unless_open|until_first_auth|off)
health_kit.(on|off)
home_kit.(on|off)
wireless_accessory.(on|off)
icloud.(on|off)
cloud_kit.(xcode5_compatible|cloud_kit)
inter_app_audio.(on|off)
passbook.(on|off)
push_notification.(on|off)
vpn_configuration.(on|off)
Ví dụ để enable cloud kit cho app "com.framgia.example" ta có thể chạy 2 lệnh như sau:
app = Spaceship.app.find("com.framgia.example")
app.update_service(Spaceship.app_service.cloud_kit.cloud_kit)
Thiết bị
Liệt kê danh sách các thiết bị đã đăng kí:
all_devices = Spaceship.device.all
Đăng ký mới thiết bị:
Spaceship.device.create!(name: "Private iPhone 6", udid: "5814abb3...")
4. iTunes Connect API
Đăng nhập
Spaceship::Tunes.login("email”, "password")
Ứng dụng
Liệt kê toàn bộ các app:
all_apps = Spaceship::Tunes::Application.all
Tìm app theo bundle identifier:
app = Spaceship::Tunes::Application.find("com.framgia.app")
Tìm app theo Apple ID:
app = Spaceship::Tunes::Application.find(7949…)
Xem các thông tin của app:
app.apple_id
app.name
app.bundle_id
Hiện tên của toàn bộ các app có trong iTunesConnect:
Spaceship::Tunes::Application.all.collect do |app|
app.name
end
Tạo app mới:
app = Spaceship::Tunes::Application.create!(name: "App Name",
primary_language: "English",
version: "1.0",
sku: 123,
bundle_id: "com.framgia.app")
Cập nhật thông tin chung của app:
details = app.details
details.name['en-US'] = "App Name"
details.privacy_url['en-US'] = “http://framgia.com”
details.save!
Cập nhật giá:
version.update_price_tier("3")
Phiên bản
Có tối đa 2 phiên bản cho mỗi app, một phiên bản trên App Store (live version) và phiên bản có thể chỉnh sửa (edit version). Edit version thường là bản chờ cập nhật.
Ta có thể truy cập 2 phiên bản như sau:
app.live_version
app.edit_version
Ví dụ thay đổi thông tin của edit version:
v = app.edit_version
Cập nhật copyright:
v.copyright = "#{Time.now.year} Framgia”
Cập nhật mô tả theo ngôn ngữ:
v.description["en-US"] = "App Description"
Cập nhật xếp hạng theo độ tuổi:
v.set_rating({
'CARTOON_FANTASY_VIOLENCE' => 0,
'MATURE_SUGGESTIVE' => 2,
'UNRESTRICTED_WEB_ACCESS' => 0
})
Lưu thay đổi:
v.save!
Đăng ký review:
version = app.edit_version
builds = version.candidate_builds
version.select_build(builds.first)
version.save!
Build Train (Test Flight)
Build train được sử dụng để đưa app lên Test Flight. Một build train sẽ bao gồm toàn bộ build tương ứng với một version của app.
Truy cập build train theo version của app:
train = app.build_trains["0.9.21"]
Truy cập build trong build train
Đếm số lượng build:
train.builds.count
Truy cập bản build mới nhất:
build = train.builds.first
Kích hoạt beta testing cho bản build:
train.update_testing_status!(true, 'external')
Submit beta testing:
parameters = {
changelog: "Awesome new features",
description: "Why would I want to provide that?",
feedback_email: "contact@company.com",
marketing_url: "http://marketing.com",
first_name: "Felix",
last_name: "Krause",
review_email: "contact@company.com",
phone_number: "0123456789",
significant_change: false,
Optional Metadata
privacy_policy_url: nil,
review_user_name: nil,
review_password: nil,
encryption: false
}
build.submit_for_beta_review!(parameters)
Submit App Store review
submission = app.create_submission
Set app submission information
submission.content_rights_contains_third_party_content = false
submission.content_rights_has_rights = true
submission.add_id_info_uses_idfa = false
Finalize app submission
submission.complete!
Tester
Tìm internal tester theo email:
tester = Spaceship::Tunes::Tester::Internal.find(“email”)
Tìm external tester theo email:
tester = Spaceship::Tunes::Tester::External.find(“email”)
Tạo mới external tester:
Spaceship::Tunes::Tester::External.create!(email: “email”,
first_name: “First Name“,
last_name: “Last Name”)
Thêm toàn bộ external tester vào một ứng dụng:
app.add_all_testers!
5. Ví dụ các bước submit Beta TestFlight
Dưới đây là ví dụ về toàn bộ các bước cần thiết để submit Beta TestFlight, điều kiện là bản build đã được upload lên iTunesConnect thông qua Xcode hay App Loader.
1. Login
Spaceship::Tunes.login("email", "password")
2. All apps
all_apps = Spaceship::Tunes::Application.all
3. Select app
app = Spaceship::Tunes::Application.find(794902327)
4. Build train
train = app.build_trains["0.9.21"]
5. Build
build = train.builds.first
6. External beta review
parameters = {
changelog: "New features",
description: "An AR app of MyPrint.",
feedback_email: "nenga-koubo@mxa.myprint.co.jp",
marketing_url: "http://www.myprint.co.jp/",
first_name: "Sa",
last_name: "Saito",
review_email: "nenga-koubo@mxa.myprint.co.jp",
phone_number: "+81 42-337-0712",
significant_change: false,
Optional Metadata
privacy_policy_url: nil,
review_user_name: nil,
review_password: nil,
encryption: false
}
build.submit_for_beta_review!(parameters)
All rights reserved