Search code examples
iosxcodeplistota

iOS OTA Not Working


I've setup OTA for my organization, but can't seem to get it working. Here's what I've done:

  1. Setup an externally recognized SSL certificate on the hosting server
  2. Ensured the following MIME Types are on the server:

ipa application/octet-stream

plist application/xml

  1. Added this link to our webpage:

<a href="itms-services://?action=download-manifest&url=https://***/***/***.plist">Install</a>

  1. Distributed the ipa, manifest, 57x57 display image, and 512x512 full-size image to the server.

Here's what the manifest looks like:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
    <dict>
        <key>assets</key>
        <array>
            <dict>
                <key>kind</key>
                <string>software-package</string>
                <key>url</key>
                <string>https://***/***/***.ipa</string>
            </dict>
            <dict>
                <key>kind</key>
                <string>display-image</string>
                <key>need-shine</key>
                <false/>
                <key>url</key>
                <string>https://***/***/***.png</string>
            </dict>
            <dict>
                <key>kind</key>
                <string>full-size-image</string>
                <key>need-shine</key>
                <false/>
                <key>url</key>
                <string>https://***/***/***.png</string>
            </dict>
        </array>
        <key>metadata</key>
        <dict>
            <key>bundle-identifer</key>
            <string>***.***.***</string>
            <key>bundle-version</key>
            <string>233582</string>
            <key>kind</key>
            <string>software</string>
            <key>title</key>
            <string>***</string>
        </dict>
    </dict>
</array>
</dict>
</plist>

I've verified the URLs in the manifest. They're definitely correct. I've used my computer as a proxy for my phone and I see that my phone is downloading the manifest successfully after clicking the Install link. However, after the phone downloads the manifest, nothing happens - the phone doesn't install the app or display an error on the screen. I've also monitored the console during the transaction and no error appears there either.

I'm completely at a loss for what might be causing the issue here. Any help would be appreciated! Thanks in advance!


Solution

  • I changed need-shine to needs-shine and bundle-identifer to bundle-identifier and that fixed the issue. It would have been nice if the console would have given an error for invalid fields in the manifest, but unfortunately it did not.