Search code examples
iosiphoneappceleratoripod-touchappcelerator-titanium

Deploying titanium app to >100 iOS 6.0.1 devices without Appstore


I am an individual developer creating a small app for a client and I am still new to the Apple ecosystem. The client has >100 legacy iPod Touch devices (ME178FD) which shall receive the app and it shall not be available to the public by any means. The devices are still on 6.0.1 and the max iOS Version usable on them is 7 (AFAIK). The app shall be usable for at least 2 years.

I figure that:

  • the app cannot be distributed in the Appstore
  • I cannot deploy the app to all the >100 devices manually, but it could be done by client staff using iTunes (or some other 'easy' mechanism)
  • Enterprise Developer Account is too expensive for me since it will break my business case

How can I distribute the app to the devices in a cost effective and pragmatic way?


Solution

    1. You cannot distribute the app using regular beta programs, they are limited to 100 devices as per provisioning profile
    2. You cannot use TestFlight, as it is iOS8+
    3. If manually is not an option, that is also out of the question.

    That gives you 3 options:

    • create & pay multiple accounts at Apple, giving you 100 devices per account (they need to be reinstalled every year due to provisioning profile expiring)
    • Get an enterprise account

    Or, in my opinion, the best option:

    • Publish the app in the app store for free. Require a code to be used to activate the app, preferably a unique code, and you can give a code to Apple too so they can test the app before it can be approved

    This gives you also the luxury you can update the app where needed.

    Since you added Titanium as a tag, set a property in the app once activated, that will remain on the device until un-installed.

    Ti.App.Properties.setBool('activated, true);
    

    You can check on boot (index.js for example) wether to display the app, or the activation page:

    if (Ti.App.Properties.getBool('activated',false) === true){
        // show app
    } else {
        // show activation page
    }