Working With iOS App Metadata From Linux Using Transporter
We take a look at how to use several open source solutions together to make working with iOS application metadata a little easier.
Join the DZone community and get the full member experience.
Join For FreeApple announced a new AppStore Connect API at WWDC18 to communicate directly with the App Store. In order to know more about this API, refer to my previous blog post. This was clearly huge and game-changing announcement but Apple also announced other things which might get unnoticed at WWDC sessions on What’s New in App Store Connect, such as support for the Transporter tool on Linux platforms. 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 the App Store using the Transporter tool.
iTMSTransporter
Before jumping into Linux, let’s explore what Transporter is and how it’s being used on macOS servers at the moment. The transporter 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 the above to your $PATH
so that you can use the ITMSTransporter directly from the terminal. Now we can explore various command line options that come with Transporter using $ iTMSTransporter --help
.
We can provide various options to the Transporter tool as specified in 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 the 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 also third-party methods, not from Apple, that are available.
Installing Transporter on Linux
With macOS, Transporter comes up with Xcode so there is no need to explicitly install it. While searching online, I found the location of the Transporter tool for macOS on this blog post which is:
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/resources/download/Transporter__OSX/bin/
However, when it comes to Linux, there is no Xcode so we need to find the location of the binary hosted somewhere on Apple’s official server and install it on Linux. In order to install Transporter, we need to be logged in as a user that will be using the Transporter tool. Apple has the Transporter tool hosted according to content type, e.g for music: http://itunespartner.apple.com/music/tools. We have to select the 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 flavor.
$ gunzip iTMSTransporter_installer_linux.1.9.8.sh.gz
This package has a shell script that we need to run explicitly using the admin user.
$ sudo sh iTMSTransporter_installer_linux_1.9.8.sh
This might ask users to accept a Licence Agreement and, once done, we will have Transporter tool installed at the location /usr/local/itms
.
Using Transporter on Linux
There are loads of command line options to use Transporter tools for various purposes; these are discussed in Apple’s official documentation here.
Remember that a Linux server is just a way to talk to the App Store. We need to have the app already in App Sore Connect. We still need to authorize ourselves using our App Store credentials. There were to methods used previously which are Signiant and Aspera. However, with the new App Store Connect API, we can use JWT tokens for uploading metadata and assets. We can create JWT tokens using the following process once we generate a new API key and download the Private key from App Store Connect. Please watch the WWDC Session, Automating App Store Connect, to understand the whole process. You can refer to my 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 our Linux server to generate tokens and deal with App Store Connect.
Conclusion
As many Continuous Integration servers are still Linux-based, we can use these 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 servers hosted on the cloud already. However, it’s good to know that it can be done from Linux servers as well and maybe someone can benefit from it if it fits in their infrastructure/workflow.
Published at DZone with permission of Shashikant Jagtap, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments