Compare of Testflight&&Enterprise Distribution

前言

应要求整理的分发方式比较。可惜了有enterprise的我们,还是没有充分利用enterprise的特点。
下面从是否需要review,UDID以及下载方式进行比较,最后简单介绍利用dropbox进行wireless下载in-house app的过程。

1 Compare

First of all, a simple comparing of Tesftflight and Enterprise distribution is listed below.

Type TestFlight Enterprise
Review by Apple Required NO
Device UDID Required NO
Download TestFlight iOS App(iOS8) Custom Server

2 Testflight distribution

2.1 Review

It needs to upload the app to Apple and wait for Apple's review when the app is distributed to the customers by Testflight. It usually costs one day or more.
We also need emails of testers so that we can add them as the external testers. We can only add a maxmium of 1000 testers.
Moreover, the app which is passed review can only be validated for 30 days.

2.2 Device UDID

The UDID of tester's device is requied or the tester cannot install the app.

2.3 Download

The tester should use TestFlight iOS app to download the to-be-tested app, and the TestFlight iOS app is available only in iOS8+. We manage the testflight distribution via itunes connect.

3 Enterprise distribution

When talking about distributed to custmers with Enterprise distribution, it means in-house distribution.

3.1 Review

We don't need to pass Apple's review as we not distribute it via Apple's store.

3.2 Device UDID

Using in-house, no device UDID is required.
By the way, we can also need the device's UDID so that we can make the app available for specified devices. At this time, it is not called in-house and not makes full use of iOS Enterprise Program.

3.3 Download

The customers donwload the app via our server which can be visit via https and it can be valid until we delete it from the server.

3.4 Others

Sticktly speaking, when we use in-house enterprise distribution, we can only distibute the app to the employers of our company. See details of last second from here.
But it is just an official declare, and there's no technical limit to install out of the company.

4 wireless in-house distribution using dropbox

The reason that why we choose dropbox is that https is required. If you have any other links which use https, that will also be OK.
What we need is :

  1. enterprise ipa
  2. plist file
  3. html file

4.1 ipa

Product->Archive to create the archive. When it is finished, Export and choose to Save for Enterprise Deployment. In Xcode6, it will just create the ipa if you can create this kind distribution.

4.2 plist file

The content of this plist file should be 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>Your URL of ipa</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>Your true identifier</string>
                <key>bundle-version</key>
                <string>Your Version</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>Your App Name</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

4.3 html

create a simple html file, like:

<a href="itms-services://?action=download-manifest&url=Your URL to plist">
click this link to install
</a>

4.4 notice the URLs

Put the 3 files to the dropbox and share those to public, and write down the share link URLs. When we use the URL, please replace www.dropbox.com with dl.dropboxusercontent.com, and remove the appendix like:?dl=0.
Then we can fill in the html and plist file with the URL.
Finally, visit the html's share line in your iPhone's safari, click the "click this link to install" and your iphone will automatically download the ipa.