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 announcemnt but Apple also annouced 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 valiadte 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.

iTMSTrasporter

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:

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

We can provide various options to Trasporter tool as specified in the Apple’s official documentation here but 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 this blog 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

This package has shell script that we need to run explicitly using admin user.

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 that post on Linux server to generate tokens and dealing with App Store Connect.

Conclusion

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.