I have developed an iPad app very specific to my needs, it is tailored just for me and therefore isn't applicable to be submitted to the app store. Every few months I can't get into my app because the provisioning profile has expired.
Is there an easy way (besides jailbreaking the device, or submitted it to Apple) that I can use the app indefinitely without having to generate a new provisioning profile every few months?
Ad Hoc profiles seem to have a long lifetime. So instead using a Dev Profile, an Ad Hoc profile might serve your needs better. My latest Ad Hoc profile created in May expires together with my current certificate next year.
Nope. Provisioning is working exactly as it's designed to work in this case.
Related
We previously developed apps with dev accounts enrolled in the Apple Developer Enterprise Program. We recently made the call to cease developing in iOS but still have roughly 50 devices active, running around 15 apps that we are continuing to support to the extent of reissuing Provisioning Profiles each year.
The process for the last 12 months has been generating new Provisioning Profiles once logged into developer.apple.com and generating a new .ipa file with iResign (https://github.com/maciekish/iReSign).
Our Apple Developer Enterprise Program is up for renewal and I'm wondering, is it necessary to renew the full membership in order to simply generate new Provisioning Profiles?
Would I be able to use Ad Hoc profiles?
The apps have been reissued to devices by a server accessed through Safari on the device. We do not have the UDID for the devices but may be able to get them if necessary for Ad Hoc profiles (the devices are scattered across the country).
is it necessary to renew the full membership in order to simply generate new Provisioning Profiles?
Yes.
After a lot of back and forth with Apple, this was the definitive answer we came to. This is unfortunate given it is only to support legacy applications that are no longer receiving any updates other than Provisioning Profiles.
Hopefully this can serve as a notice to any small-time devs looking to build in iOS to consider ongoing costs.
From experience I have found that an app distributed with enterprise distribution certificate and provisioning profile will fail to launch when the provisioning profile expires, even if the distribution certificate is still valid. Why is this not the case for App Store apps?
This question is very similar to the following posts, but to my best knowledge there is no question that explains why this is true. I was unable to find this information in the current Apple Developer documentation.
Related Questions:
Expiring App Store Provisioning Profile
How can I update my App in the App Store if the Distribution Provisioning Profile expired?
Renew Provisioning Profiles (Distribution) and keep current Appstore Apps working
App Store apps are signed by Apple and therefore don't include a provisioning profile from the developer.
If a developer doesn't renew their program membership, then they can no longer update or sell apps on the App Store, but the apps need to keep working for people who have purchased/downloaded them, otherwise the user will have a bad experience. To make this happen the provisioning of those apps is signed by Apple, not the developer.
Also, a developer may not release a new version for a long period of time. Again, if app executing was dependent on a provisioning profile from the developer, then the app would stop working giving a bad experience.
In the case of Enterprise Apps, Apple is not involved in the app distribution, and the provisioning profile is tied to the Enterprise program membership. Requiring period replacement of the provisioning profiles ensures that the membership is kept current. It also provides an additional element of "safety" where an enterprise app that is installed on a device that is no longer under the control of the enterprise or no longer has access to updates will stop working after a period of time.
I've looked for hours at other similar questions, but not sure if the other answers apply in my case, and things have changed since I last did this:
I am a sole trader writing an iPad App for an Agency. The app is ultimately for a Company they are working for.
The app will be distributed free to a small number of employees in the Company (<30);
Its a hybrid app, much of the code running as javascript in a webview. Ideally I wish to avoid Apple review of the app during distribution as this is an unknown to me.
I also do not wish to release the source code to Agency nor Company.
What's my best option for distribution? Ad-hoc? Set Company up with an Enterprise account? VPP?
I would use Ad-hoc, as it seems simpler, but not sure what happens after 1 year expiration...
Be grateful for any pointers.
If you have Apple Developer Enterprise Program (299 USD/year)
Ad Hoc
You can distribute your app to limited number of registered devices, but you need to sign every year before your provisioning profile expires, if you don't sign your app again, it will start to crash on opening after expiration date.
In House
You can distribute your app without any device limit, but you need to sign your app every year.
If you have Apple Developer Program (99 USD/year)
Ad Hoc
Same as enterprise program
App Store
Once you submit and release your app, you don't need to sign again.
I think your best choice is distributing your app via App Store if the company is okey with it. Review process is not a big deal after all, you can shape your app according to rejections reasons.
Apple Developer program - Adhoc Distribution
Cheaper ($99)
No Appstore review needed
Supports up to 100 device (device list can be modified yearly)
Need to rebuild with updated provisioning profile when new device is added
Need to rebuild the app on yearly basis when provisioning profiles expire
OTA can be used to distribute the app to users
Enterprise Program - In-house Distribution
Expensive ($299)
App can be installed into any device without a device limit (no rebuilding required)
Need to rebuild the app on yearly basis when provisioning profiles / distribution certificate expire
No Appstore review needed
OTA can be used to distribute the app to users
I would go with Apple developer program since you user base is around 30 and its a cheaper option.
Have You looked at:
https://www.diawi.com/
Or
https://www.installrapp.com/
?
Note: You must register their devices to your Apple account first
We have different enterprise applications distributed via Airwatch MDM. When some distribution profile was expiring after 1 year earlier we could see a popup on the iOS devices. Now its not showing due to some reason. I'm not sure why. Also I can't find the profiles section in the iOS 8 settings section. There it used to show the expiration dates for all the profiles.
If the developer is not noticing the expiration date, apps getting crashed after the expiration date.
I want to know the best optimum solution for this.
How do we get the notifications for this?
Is there any solution without redistributing a new binary?
Or do we have any reminder notification system for this?
You can update the provisioning profile without redistributing a new binary. If you go to the app and click on the "files" tab and select "edit" this will allow you to upload the new profile.
I'm going to tackle your questions with in-line answers:
If the developer is not noticing the expiration date, apps getting crashed after the expiration date.
Speaking frankly it's up to your Enterprise Agent to maintain and track when provisioning profiles are expiring. Likewise they should be planning your required yearly release in conjuncion with the expiring profile. It is not the developer's job to maintain that part of the app development process unless you're specifically paying them to do so.
How do we get the notifications for this?
See above. All profile expiration dates are in your Enterprise Portal.
Is there any solution without redistributing a new binary?
This won't always work, especially if your Enterprise Distribution cert is also expiring. If your Enterprise Cert expires you MUST deploy a newly signed binary.
When I add my provisioning profile to Xcode through the Organizer, I can see that the profile is set to 3 month duration only.
My question is, if I deploy an app to the test device using the above profile. And after 3 months of the app installed on the device, if I open the app would it work or the app will fail to load due to the expired profile?
How does it usually work?
The app will fail to launch due to the expired profile. You will need to renew the provisioning profile and install that renewed profile on the device; or rebuild and reinstall the app with another non-expired profile. A developer also has to keep their $99 developer enrollment from expiring in order to keep being able to renew or create new provisions.
Ad Hoc profiles have longer expiration dates. But if you want an app that doesn't expire, the only alternative for stock OS iOS devices is to have it approved by Apple and then download it from the App store. After you download the app, you have the option of removing it from sale.