Requires cross-platform iTMSTransporter tool written in Java. The Transporter command line utility uploads app binaries to iTunes Connect. It uses third-party delivery methods called Signiant and Aspera.
https://itunesconnect.apple.com/transporter/1.9.8/iTMSTransporterToolInstaller_1.9.8.exe https://help.apple.com/itc/transporteruserguide/#/apdAbeb95d60
iTMSTransporter contains several jar files that can be run with Java. They have a self-update mechanism that will update to the latest version of iTMSTransporter.
- Create an iTunes Music Store Package (.itmsp directory)
- Copy files to upload to .itmsp directory
- Generate metadata.xml with correct hashes
<?xml version="1.0" encoding="UTF-8"?>
<package version="software5.9" xmlns="http://apple.com/itunes/importer">
<software_assets
app_platform="osx"
primary_bundle_identifier="com.xyzco.app">
<asset type="developer-id-package">
<data_file>
<file_name>xyz.dmg</file_name>
<checksum type="md5">1d6de88ace92f22c815cc9663d902609</checksum>
<size>2299183</size>
</data_file>
</asset>
</software_assets>
</package>
- Use the Transporter to upload the package
java iTMSTransporter.jar -m upload -u [Apple ID e-mail] -p [Apple App-ID Token] -f [Directory of .itmsp]
// Possibly use -json argument to get json response easily
-
Parse response to get upload_id
-
Check status of upload until the service is finished processing
- JSON-RPC request to generateAppleConnectToken
- JSON-RPC request to developerIDPlusInfoForPackageWithArguments with upload_id (reponse contains DevIDPlus)
-
Request ticket from https://api.apple-cloudkit.com/database/1/com.apple.gk.ticket-delivery/production/public/records/lookup using POST
{"records":[{"recordName":"2/2/4dca04a3465b95866423323d7f3e1e31ad3ac0ef"}]}
4dca04a3465b95866423323d7f3e1e31ad3ac0ef = cd hash of software
-
Response returns signedTicket with base64 encoded asn1 signed ticket
-
Add signed ticket info into code sign blob of software. Code sign blob is a super blob, signed ticket is added to the super blob as a blob wrapper.
- https://itunespartner.apple.com/en/movies/faq/Transporter_Getting%20Set%20Up
- https://help.apple.com/itc/transporteruserguide/
- https://developer.apple.com/videos/play/wwdc2015/304/
- https://discussions.apple.com/thread/4960669
- https://derflounder.wordpress.com/2019/04/10/notarizing-automator-applications/
- https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/customizing_the_notarization_workflow
- https://asperasoft.com/
- https://www.signiant.com/
- https://github.com/pingwinator/ipa2itc/
- https://stackoverflow.com/questions/16582119/how-to-use-itmstransporter
Support on windows, apple has been hidden.