iOS App distribuition for thirdies out of Apple Store - ios

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.

Related

How to generate IPA file without apple developer program and without a connected device in Xcode 7.2?

My employer doesn't have an iPhone for testing, they are also not enrolled into Apple's developer program, but they recruited me as an iOS developer.
I was told to create an app and I did it with the help of simulator.
Now, they want me to generate an IPA file of that application for their client who is in another country to test, in his iPhone. Is that even possible?
You will certainly need a developer account if you want to run your app on a physical device (unless that device is jailbroken, which I wouldn't recommend). If your employer hired you as an iOS developer, you need to inform them that a requirement to doing iOS development is a developer account.
If you are going to be writing iOS apps to deploy on client device (which you won't have physical access to), you have a couple of options.
You could have your employer pay for the enterprise developer account ($299/year). This allows you to have an In House Distribution profile, which lets you build an IPA that can run on any iOS device without the need to register the UDID for each device in the provisioning profile.
You could use Apple's TestFlight to deploy the app to your clients' devices. This still requires a paid developer account as you are basically creating an app store build and distributing to others as "beta testers". The app goes through a more lax review process, but it still must have been signed with a distribution certificate, which you only can get with a paid account.
Bottom line, if your company is asking you to develop apps professionally, you need to get them to understand that the $99/year fee is part of the process. IF they can't justify that, they shouldn't be hiring out iOS development jobs.
Without Apple developer's account it is not possible. You would not be able to archive your code either. Have a look at these documents :
Apple's documentation : Exporting Your App for Testing (iOS, tvOS, watchOS)
Stackoverflow : How to export an ipa in Xcode 7
you have to enrolled into Apple's developer program, and add all UDID into you app device ID than generate a provisional profile. install it in xcode than create an archive, zip it and upload to diawi.com. Diawi( https://www.diawi.com/ ) is best solution, It will generate a link which you can give to client and they can install it on their device directly.
I have faced same problem at start of my job :)
- but it is not possible to generate ipa without apple developer account.
- and even if you connect device to deploy then device iOS version and XCode iOS version must be same.
you have to enrolled into Apple's developer program and this is not enough. For over-the-air installation you have to use apple's testflight or hockeyapp like third party apps.

How to distribute an iPhone app for testing without getting UDIDs or jailbreaking?

I have a normal Apple Developer Program (not the Enterprise one)
and I need to distribute an iOS application without adding each UDID to the provisioning profile. I do not want to jailbreak iphones.
It is possible to make an Enterprise provisioning profile where the signed applications can be installed on any device without adding it to the provisioning profile. (Correct?)
And it is possible only with Enterprise program. (Correct?)
Are there any other ways to get rid of this dummy need of adding the betatester's UDIDs and recompiling the app whenever new testers come, with Apple Developer Program only?
Providing you're already registered with the Apple Developer Programme, you can upload your build and from within iTunesConnect use the TestFlight options to make your app available for download.
There are two options, 'Internal Testing' and 'External Testing'.
(In answer to question about the profiles, you don't need to have an Enterprise Provisioning Profile.)
As you wish to make the app available for unknown devices, you will need to use external testing. Here is a link to Apple's info on it https://developer.apple.com/testflight/
You will need the email addresses of the beta users (up to 1000 users) as those will be used to send an invitation to download via TestFlight from the device they wish to download to.
For external testing, your app will need to be submitted to Apple for Beta Review, which normally only takes a day or so for them to approve. Once approved this build is available to invite the beta testers to download
I hope this helps

How to install iOS app to any device without App Store?

It's mid 2015 and I've found a lot of old links regarding this problem so I wanted to post a new question. I was wondering how to install generated app to any iPhone/iPad device without publishing it in the App Store?
So, I would like to do the same as I can do with the Android apps. I would like to give my app to close to 1000 selected users so they can use it. For Android I can just take debug apk file and send them to their email and they would be able to install it.
I've found this but it's not for free: http://hockeyapp.net/features
Thank you for your help.
TestFlight Testing makes it easy to invite users to test your iOS 8 apps before you release them on the App Store. You can invite up to 1,000 external testers using just their email address.
https://developer.apple.com/testflight/
Update
Now you can test your iOS, watchOS, and tvOS and you can invite up to 2,000 testers using email address.
As far as I know it is not possible yet, At least in a pretty way, I mean, if the device in which you will install your app is not jail-broken you will need to sign your app, and if you sign your app it makes no sense not publish it on the App Store.
Yes. The number is unlimited if your iOS device owners all enroll themselves in Apple's $99 Developer program, have recent Macs, and you are willing to distribute a build-able Xcode project to them. The limit seems to be up to 100 devices if you alone are the only one to enroll, and don't use TestFlight.
Just enroll in Apple's $99 Developer program, add the devices (up to 100) to your provisioning profile in Apple's Developer portal, download the profile to Xcode, then build the app, connect the device to the Mac (or use Ad Hoc provisioning), and install the app. Or get Apple to approve your app for TestFlight distribution.
If you are doing this for a corporation with a D&B number, then another alternative is to enroll in Apple's more expensive Enterprise program, which allows you to install your app on any employee iOS device, even if this number is well over 100.

Could my friend run my iPhone App without jailbreak?

I have done my iOS app, but I don't want to submit to App Store.
Shall I pass it to my friend and run on his iPhone without jailbroken?
I heard it has some certain certificate allow other guys to run it.
I have developer account.
would you please provide some materials if have some ways to achieve it in legal.
Edit my question:
what is proper way to run the application on iPhone for testing with my remote designer? That is, he can transfer the application via itune, not xcode.
You have to register his UDID in apple developer portal. Then you can install your app on his phone from Xcode.
You can distribute your application using standard developer account certificate ($99), but it is limited to 100 devices.
Below is the documentation from Apple:
iOS developers enrolled in the Standard Program can also distribute an
app outside of the App Store on up to 100 different devices for
testing purposes only. To use ad hoc distribution, create an archive
of your app, or have a teammate send you an iOS App Store Package
(.ipa) of the archived app.
You distribute your app by providing the .ipa file for users to
install on their devices. Because you select a valid ad hoc
provisioning profile to archive the app, users don’t need to install
the profile on their device, only the .ipa file. Users can use iTunes
to install the app on their devices. If users want to use Xcode to
install the app on their device, share the archive as an .xcarchive
file package.
Detail documentation is found here

How does TestFlight do it?

TestFlight offers over-the-air beta distribution of iOS apps (on non-jailbroken devices). How can this be done? Is this an iOS feature, or a vulnerability exploit?
This article showed how Apples OTA implementation works and can be used outside enterprises as well: ios wireless app distribution
The complete process is documented by Apple.
Apple also published documentation and sample code for registering devices and get the UDID by using profiles, so your website can detect which device is calling.
Some additional solutions with different strenghts:
iOS Beta Builder, a Mac Application to create the website by using a build. Simply upload the resulting files to your webserver.
Diawi: Simple Web service. Upload your IPA file, optionally set a password and send a link to your testers.
AppSendr: Web service for beta build hosting, similar to Testflight, but does not include the device registration process. But provides deployment utilities to automatically upload new versions.
HockeyKit: Open source project for hosting beta versions on your own PHP5 server with additional functionalities like an client for In-App-Updates, automatic device specific web sites and handling multiple applications. Completely file and directory based.
HockeyApp: Web Service for beta build hosting, In-App-Updates, Statistics, and including device registration, invite and recruitment. Also provides server side crash report collection, symbolication (for all threads) and crash grouping for beta and app store apps (iOS + Mac). SDKs are open source, using HockeyKit, QuincyKit and PLCrashReporter (which is the only safe solution on how to do crash report collection on iOS, see this article.
Note: I am the main developer of HockeyKit and QuincyKit, and one of the developers of HockeyApp.
This was possible before TestFlight rolled out a service. The technique stemmed out of the enterprise distribution mechanism. Since 4.0 devices have supported install from web.
Remember - you still need to sign the beta distribution for a select set of UDIDs you can't just willy nilly install it on any device. All they are doing is taking the email the IPA step out of things.
See:
http://www.alexcurylo.com/blog/2010/08/27/wireless-ad-hoc-distribution/
Update: I want to say that Test Flight is one of the most helpful tools I've used when developing though. Just taking the IPA emailing out of the picture was an understatement- I was just trying to call out the technical mechanism. They do a fantastic job managing the whole beta process. Getting new devices enrolled. Notifying users etc.
Testflight basically uses the normal Ad Hoc as already stated.
For this to work, you need the UDID for every device in order to add it to the Ad Hoc profile, re-compile the app with the new profile an redistribute the new build.
You can get the UDID with the help of the OTA Authentication Request. This is actually a step that is done in MDM before the actual profile is rolled out to the device. It basically asks the device for further information about itself and send it back to a self specified server.
The first step is documented here: Apple OTA Configuration
I guess Testflight uses this right after the registration process to collect the UDID, phone name, ...
Yes this is a core feature of iOS for Enterprise Customers who wish to distribute OTA.
Presumably you would pass your UDID over to TestFlight along with the app and they use their Enterprise Licence to send the app to you. I'm sure I'm missing a lot of the technical details but if you want to know more, Apple has a video on this from WWDC 2010.
Login to developer.apple.com, go to WWDC 2010 Videos and use the link to get to the vidoes. The video you want is "Session 108 - Managing Mobile Devices". It is very informative about what is possible with OTA and the steps you have to take to do OTA provisioning.
Stock iOS devices are "vulnerable" to running the user loading Ad Hoc apps from any developer who has that device's UDID, and registers that UDID among their 100 allowed devices on Apple's developer portal.
OTA distribution is just another way to install an Ad Hoc beta test distribution from an enrolled developer.

Resources