iOS 8.1 Enterprise Distribution

2019-05-28 09:25发布

问题:

I have an application that is built with xcode 6.1.

I created a plist to go with it.

It downloads just fine on iOS 8.0.2 and before, however, it always fails to install on any iOS 8.1 devices.

Here are my steps I am following.

Archive the ipa file using the created certificate and provisioning profile Host the plist and ipa file in your server

Include a download html file with a href tag with src

"itms-services://?action=download-manifest&url=https://mypassagewaytest.gwic.com/gw/premcalc/iPremium.plist"

And my plist

   <?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://mypassagewaytest.gwic.com/gw/premcalc/iPremium.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.gwic.premiumcalculator</string>
                <key>bundle-version</key>
                <string>1.3.0</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>iPremium</string>
            </dict>
        </dict>
    </array>
    </dict>
    </plist>

回答1:

Solved. I just update the provision profile by downloading latest enterprise distribution profile from developer.apple.com. I was facing the same issue. But I am using Xcode 6.0.1. Now everything is working like a charm, (Testflightapp and my own server both)



回答2:

ok, Here is what i found after struggling on this for a day.

This is how your Plist should look 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>display-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://downloadLocation.com/icon_57x57.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <true/>
                    <key>url</key>
                    <string>https://downloadLocation.com/icon_512x512.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://downloadLocation.com/iOSBuild.ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.company.Product.g34askas6jas77skks6777s7s7s77</string>
                <key>bundle-version</key>
                <string>x.x</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>appName</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

Interesting things here

  1. You need to have "display-image" and "full-size-image" dictionary keys in your Plist from 8.0 onwards. For me app didn't download on 8.0 unless I had these keys.

  2. You need to append some extra characters at the end of bundle identifier. In my case the app was not installing on some 8.1 devices. I don't know why this is needed but this worked for me. My best guess is it does some kind of cache burst.

Hope this helps someone.