Working with iOS App Metadata from Linux using Transporter
Apple has announced new AppStore Connect API at WWDC18 to comunicate directly with App Store. In order to know more about these API, refer previous blog post. This was clearly huge and game changing announcement but Apple also announced another things which might get unnoticed at WWDC sessions on What’s New in App Store Connect which is support of Transporter tool on Linux platform. This means that we can now use Linux servers to upload and validate iOS app metadata and previews. In this post we will explore, how we might use Linux servers to deal with App Store using Trasporter tool.
Before jumping on Linux, Let’s eplore whats is Trasporter and how it’s being used on macOS servers at the moment. The trasporter tool is also known as iTMSTrasporter. An iTMSTransporter stands for iTunes Music Store Transporter, which is Apple’s Java-based command-line tool to upload app binaries, upload screenshots, update app metadata, manage app pricing, manage in-app purchases, etc. This utility comes with Xcode so there’s no need to install it explicitly as long as you have Xcode. The binary can be found here:
$ /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter
You can add above to your $PATH so that, you can use the ITMSTransporter directly from terminal. Now that, we can explore various command line options comes with Trasporter using
$ iTMSTransporter --help
We can provide various options to Trasporter tool as specified in the Apple’s official documentation herebut we probably need few of them which are relevant to verifying and uploading metadata. In a summary, it’s three step process
- Download the .itmsp file stub package of an app using the lookupMetadata argument.
- Verify the contents of the app package using the verify argument.
- Finally, upload the app package to iTunes Connect using the upload argument.
Transporter can validate and upload metadata to App Store, however the uploading partners must be approved by the Transporter qualification process in order to use this delivery method. Previously used delivery methods are Signiant and Aspera. There are third-party methods, not from Apple.
Installing Trasporter on Linux
With macOS, Trasporter comes up with Xcode so there is no need to explict installtion. While searching online, I found location of the Traspoter tool for macOS on thisblog post which is
However, when it comes to Linux, there is no Xcode so we need to find the location of binary hosted somewhere on Apple’s official server and install on Linux. In order to install Trasporter, we need to be logged in as user that will run Transporter tool. Apple has Trasporter tool hosted according to content type e.g For music: http://itunespartner.apple.com/music/tools. We have to select Red Hat Enterprise Linux link to download the shell script installation package. We will get zipped package iTMSTransporter_installer_linux.1.9.8.sh.gz which can be then unzipped using suitable unzipping software depending on your Linux flavour
$ gunzip iTMSTransporter_installer_linux.1.9.8.sh.gz
This package has shell script that we need to run explicitly using admin user.
$ sudo sh iTMSTransporter_installer_linux_1.9.8.sh
This might ask users to accept an Licence Agreement and once done we will have Trasporter tool installed at the location /usr/local/itms
Using Trasporter on Linux
There are loads of command line options to use Trasporter tools for various purpose mentioned on Apple’s official documentation here.
Remeber that, Linux server is just a glu to talk to App Store. We need to have App already in App Sore Connect. We still need to authorise ourself using App Store credential. There were to methods used previously which are Signiant and Aspera. However with new App Store Connect API, We can use JWT token for uploading metadata and assets. We can create JWT token using following preocess once we generate new API key and download Private key from App Store Connect. Please watch WWDC Session Automating App Store Connect to understand whole process. You can refer previous blog post on generating tokens for App Store Connect API here to understand the entire process.
We can use the same kind of Ruby script as mentioned in thatpost on Linux server to generate tokens and dealing with App Store Connect.
As many Continuous Integration servers are still Linux based so we can use same servers to upload pre-generated iOS app metadata to App Store Connect. We can still use existing Cloud Infrastructure to perform this things. However, I doubt how many of us will use this feature as we have various macOS server hosted on Cloud already. However, it’s good to know that, it can be done from Linux servers as well and maybe some someone can benefit from it if it fits in the infrastructure workflow.
Like this post from XCBlog By XCTEQ ? You may also like some of our services like guest blogging or Mobile DevOps(CI/CD) or Test Automation. Chekout our services, open source projects on Github or Follow us on Twitter , Facebook, Youtube , LinkedIn. Download Our XCBlog iOS App to read the blogs offline.