Using iTMSTransporter to upload Game Centre Achievements

I’m currently creating a game Movem, and I wanted to add some Game Center achievements. I’d done this before in another app I’m making for Kernowland Quizzes (still in development). There are only a couple of achievements there so wasn’t much hassle to create them manually but here I want 1 for each of the 50 levels. This would be a big pain to do.

So I turned to twitter and asked @KrauseFx as I thought he might know.

Researching a little I found the app should be in either Xcode or App Transporter. Some SO answers said it was under the MacOS folder but I found it to be now just under itms in the Contents folder.

/Applications/ bin

Now to find some information about the app itself, lets look to iTunesConnect Resources and Help under Apps.

Open the terminal and navigate to the above folder:

./iTMSTransporter -m diagnostic

Next we want to download the information we have on an app so we can use the lookupMetadata flag.

./iTMSTransporter -m lookupMetadata -u # -p # -apple_id # -subitemtype GameCenterAchievement -destination "#"

Replace the #s with your actual inputs.

This will download a file “AppleID.itmsp”, if you double click this it will open in Application Loader, you don’t want this, instead Right+Click and Show Package Contents:

Show Package Contents.png

There’s a file called “metadata.xml”, open this in your editor of choice, Xcode works fine since it’s just XML.

I’m interested in the Game Center info so scroll down:


Within here are a couple of achievements I’ve already created, from research errors can occur if you remove these and re-upload so either leave them in and only make additions to the file or remove them from iTunesConnect and run lookupMetadata again.

I needed at least one already created so I had a template to work with.

I created a playground as this would be the quickest way to create what I needed

for i in 1...50 {
    print(blah \(i))

Now I just needed to replace the number with \(i) in all the places necessary and show the console.

Copy and paste that back into the “metadata.xml” and I’m ready to upload.

First thing to do is verify the file.

./iTMSTransporter -m verify -f "#/[AppleId].itmsp" -u # -p #

Now I can upload.

./iTMSTransporter -m upload -f "#/[AppleId].itmsp" -u # -p #

There was one thing that was missing, the image file:

ERROR: The file Game_20Center_20Level.png is from the list of files requested by Apple, but it was not found locally.

To fix this I just renamed the file I’d uploaded in iTunesConnect to match the above and added it to the PackageContents folder and all was good.

I’d originally tried the “lookupMetadata” without the -subitemtype flag but got an error when trying to upload,

ERROR ITMS-10001: "Multiple items in this package use the same vendor ID. Use unique vendor IDs for the items [leaderboard, achievement] and resubmit the package." at Software/SoftwareMetadata
<main> DBG-X: The error code is: 1102


Learn more about Game Center in Chapters 25 and 26 of 2D iOS & tvOS Games by Tutorials from Ray Wenderlich.


What’s New in iTunes Connect

WWDC 2013 – Session 306 – iOS, OS X

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: