My company has developed an iOS application for an external client. They have done some initial testing with us distributing the app via our testflight account. They now want to test it on a wider audience. They have decided to use their own TestFlight account and handle all the logistics of giving iPads to users and managing the distribution/testing of our app.
Is it possible for me to give them my .ipa file that they can in turn sign with an Ad Hoc apple certificate they create/mange then use their testflight account to distribute.
In short my company does not want to give away our source code nor burden the client with installing/learning xcode just to compile the app with their certs over ours. They are not developers but feel comfortable using an apple developer account and testflight. They would prefer not to set up and use xcode.
Thanks!
Related
After reading numerous beta testing strategy guides for iOS I'm still confused about if it's permitted by Apple's Developer Program to distribute an app for external beta testing without getting it approved by them and using TestFlight. For example, is it allowed to create an AdHoc signed app and use a 3rd party tool (Crashlytics, HockeyApp, others) to beta distribute to external entities. External in this case meaning not within your organization. Within an organization, there are other means that can be used like Enterprise Distribution, which have no restrictions but are not allowed to be used externally. The question is: does Apple allow external beta testing for a non-Apple signed app? (non-Apple as opposed to TestFlight which would indeed sign it for external testing via iTunesConnect submission).
UPDATE: after looking into AdHoc and going to the Apple Developer page, it shows this (note the Pre-Release warning in that image) which seems to point to what I suspected - per Apple's rules, you cannot let external folks test your ad hoc app:
So if this is true, I don't see how there's any way around TestFlight for public external betas.
Yes, using Ad-Hoc distribution with external testers is perfectly fine and has been used like that by thousands of developers world wide for years.
Quoting Apple's App Distribution Guide:
Testers don’t need to be team members or iTunes Connect users to run the app, but their devices need to be registered in your developer account.
According to the current Apple Developer Program agreement (bolding of text is mine):
7.3 Distribution on Registered Devices (Ad Hoc Distribution)
Subject to the terms and conditions of this Agreement, You may also distribute Your Applications
for iOS, watchOS and tvOS to individuals within Your company, organization, educational
institution, group, or who are otherwise affiliated with You for use on a limited number of
Registered Devices (as specified on the Program web portal)
See also section 7.3 parts A and B where they clearly allow external testing via TestFlight. Based on that it seems to comfirm that external testing is only allowed via TestFlight. Internal testing can use TestFlight, Enterprise Program-signed apps or Ad Hoc.
HockeyApp do support app distribution by using an Ad Hoc profile.
You need to buy an apple dev program, then you need to create the profiles and use the profile in your projects, then you need to create a new app in your dashboard on HockeyApp(https://rink.hockeyapp.net/manage/dashboard) and integrate our SDK in your build, you could integrate the SDK by following steps in this KB:
https://support.hockeyapp.net/kb/client-integration-ios-mac-os-x-tvos/hockeyapp-for-ios
After these you need to upload the build, profile, symbols to HockeyApp.
We recommend use our interactive SDK integration wizard in HockeyApp for Mac(https://www.hockeyapp.net/releases/mac) which covers the steps of integration SDK and upload files to HockeyApp.
For more information about distribution please see here:
https://support.hockeyapp.net/kb/app-management-2/how-to-organize-development-and-production-apps-for-distribution#hockeyapp-offers-four-pre-defined-release-types
I'm developing an app that is supposed to be distributed outside Apple Store. I've read the documentation about app distribution and don't got so clear to me how can I distribute to my specific client... I know I can generate the IPA file, but it is just for testing, right?
What I really need is: get the devices from my client, install the app on those devices for him...
I don't think I need the Enterprise Developer Program, right?
Thanks!
If you are planning to distribute huge amount of users you need an enterprise account. Regular developer account has an option to add device for testing and development up to 100 device.
If you want your app to be tested on clients device first you need to add device UDID onto your developer portal and generate provisioning profile for Ad-Hoc distribution and sign your app with this profile then you can upload it to diawi and send diawi link to your client.
you may watch following tutorial:
https://www.youtube.com/watch?v=XVO0tIHmQTg
You can use TestFlight for this. Its easy to use , optional and easy to integrate its SDK and is free for your mentioned usage.
You have to add the UDID of the iPad devices in the dev certificate and upload the app to testflight.
By integrating the SDK you can use multiple other functionalities support as well, like:
Sessions
Symbolicated Crash Reports
Production Crashes
Checkpoints
Remote Logging
In-App Updates
In-App Feedback
EDIT: you will be in need of UDIDs of the iPad devices only if you are not using Enterprise developer program.
I have a customer who is using an app on their iPads that was developed by a third party who is no longer around. The app is not in the AppStore. They were explaining to me how once a year they need to login to TestFlight.com to reset something. I looked at Testflight at as far as I can tell, its a testing platform, not for production use. I assume they are renewing the dev certificates or something similar.
Does this make sense? Is this a legal way of running a native app on an iOS device?
What are the benefits of services like TestFlight?
Your Enterprise Certificate
Enterprise apps must be re-provisioned once a year. You will need to login to the Apple Dev Center, refresh your Provisioning Profile, resign the app, and re-upload to TestFlight.
TestFlight And HockeyApp
In addition to Testflight there is also HockeyApp.net. These are services that allow you to manage an app either during test using Ad Hoc certificates from Apple or acting as a managed AppStore when developing Enterprise apps.
It also has a number of great features, including, crash report collection, managing of testers and their feedback, update notifications on the client, test device UDID management, and verifying that the tester has actually installed the correct version.
All these things are incredibly useful to someone that has to deal with these sorts of things professionally.
Enterprise vs. Ad Hoc
Enterprise certificates from Apple allow you many of the same privileges as the AppStore. This arrangement requires you to be a business with a DUNS number and you must sign a contract with Apple that states you will use this exclusively in adherence to their terms. This costs about $299/year and the app is good for one year once correctly signed. You can install it on any iOS device in accordance with the contract you signed with Apple.
Ad Hoc is what is used for in-house testing. Each device UDID has to be added to the Apple Developer Portal, attached to the provisioning profile, downloaded, and resign the app with the new provisioning profile. Cost is $99/year, maximum of 100 devices, and devices can only be removed once a year. Each app expires after a few months.
Test Flight is an apk/ipa (app binary) distribution mechanism. So they may be accepting testflight's profile on their phones if their UDID was registered to receive drops of a particular app.
TestFlight can be used for distributing apps signed with Enterprise Certificates, i.e. apps that can't be distributed through AppStore.
Another possibility is that the app is run on only a few devices, registered as test devices on a regular Developer Account. If that's the case, the limit of numbers of devices should be noticed: 100 devices.
I developed an iPad app for a donation campaign and want to distribute it to the iPads now. Since several iPads are effected, I dont wanna create a provisioning profile for each single iPad.
On the website: http://mdmclient.net I can easily download&install the app's plist file without giving them my iPads UDID.
So with other words, is it possible to distribute the app without registering all the UDIDs?!
I would like to avoid buying an enterprise license/account due to the limited amount of money of the donation campaign (I'm developing the app for free for them)...
Or do you think I can only install the app from http://mdmclient.net because they are using an enterprise profile/account?
Unfortunately the only way to distribute an app to many iPads without registering every device's UDID is an enterprise developer account. The guys at MDM Client seem to have an enterprise account.
So basically there are 2 ways you can go:
Distribute your app via the AppStore.
Purchase an enterprise developer account.
Or there is a third way (of course that's probably too late now, as your app is already finished): Do it as a HTML web app.
Googling this topic I get a sense there are three ways apple allows to distribute the app to end user. However it's still quite vague how exactly each one of these methods actually work and differ.
Ad Hoc Distribution - how does this really work. does this method not require the app to be submitted on app store ? If Yes , then where will the user download the app from and how the installation procedure works.
In-House Distribution - how does this work ? some text i came across suggests we can host the app on a private enterprise server and allow users install from there. If this is true apple would have no way to regulate the app.. not so clear.
App Store deployment - this one i understand how it works as a consumer of some apps i have purchased from app store. In this case the app will have to be submitted to app store first and then available for any number of users to install.
The other question I had on the same context is to be able to deploy the app via one of the ways what type of dev license is required to be procured from apple ?
Ad Hoc Distribution - This is most commonly used for sending the applications to beta testers, you register their UDID in your Developer Portal and then send them the app bundle and a provisioning profile. They drag these into iTunes and can install the application.
In-House Distribution - If I recall correctly this is only available if you have Enterprise license, you can deploy this app to all devices associated with that account (so all of your companies phone for example)
App Store Distribution - This is when your app ends up in the App Store, you submit it to Apple after code signing it, then they review and it gets accepted.
Hopefully that clears things up a bit for you.
For distribution methods 1 & 3 you must have paid the $99 developer fee, number 2 you must have paid $299 (I think that's the right price) for the enterprise developer license.
For the Ad-Hoc thing: You can add up to 100 devices per year to your dev portal. Those 100 devices are then able to install specially signed Apps from you.
To add a device to your portal you need it's UDID. To distribute an App via Ad-Hoc you need to create a special Ad-Hoc distribution profile for the App, sign it with this profile and then send the compiled .app file bundled with the profile to your users. They will then be able to install the app via iTunes, just like they've downloaded it from the App Store.
Note: Removing a previously added device from the list does not increase the device count by.
That's pretty much it, am not familiar with in-house distribution.
Apple's definition of "in-house" distribution basically means: buy an enterprise developer account.
http://www.apple.com/iphone/business/apps/in-house/resources.html