We have an iOS "In-House" app (distributed OTA) with a Distribution Provisioning Profile that, as you may know, expires in 1 year. We have gone through upgrading the profile and distribution pains last year, so we are familiar with the process of distributing the app with a new profile, but I want to ask some questions just for clarity. (We are currently 29 days away from expiration, so users are getting notified)
Last year we thought that creating a NEW distribution provisioning profile with the same name as the expiring profile would overwrite the expiring profile. We were incorrect, it does not, and the device wound up with 2 profiles of the same name. Since you cannot overwrite an old profile, the problem from a maintenance and help desk perspective is that when you distribute the app with the new profile, users (hundreds in our case) still get notified that "The provisioning profile will expire in x days" even after they've upgraded the app that includes a new profile.
As you can imagine, that is confusing to users and frustrating for higher ups in the tech department. As I understand it, you're left with two ways to deal with having an unneeded expiring provisioning profile on the device(neither of which is a good user experience). Either:
Tell the users to ignore the message that their profile is expiring (I believe the expiring profile notification comes at 29 days, 15 days, and every day starting at 7 days...though not positive) and have them upgrade the app with the new profile.
or
Once the users have upgraded the app with the new profile, have them manually delete the expiring profile in Settings > Profiles. UGH!
Is there any workaround for how to remove the expiring profile aside from walking the individual user through the process? Are we missing something?
I don't want to revoke the cert that is contained in the expiring profile because that will present more problems - i.e. app not working for users who don't upgrade.
Simply put, we would just like to have a process that forestalls the expiration alerts so a user never sees them.
I received a recent response direct from Apple regarding the effect an expired profile has on apps currently residing in the app store:
I understand you'd like to know if you need to delete the expired
certificates and provisioning profiles, and whether or not any action
taken in the provisioning portal will affect apps currently live on
the App Store. I'm happy to assist you in this matter.
Please know that it is not necessary to delete expired items in the
provisioning portal, nor will any action taken have any impact on apps
currently live in the store.
Not quite sure this answers your entire question but it did help me when I was wondering what would happen to the live apps.
If i understand your question correctly, i had the same exact problem this year.
I Actually had to wait until the Profile Expired before i was able to Renew it.
When the profile had Expired, i would go to the Developer Portal's Provisioning Profiles, and on the right side of the Profile, there would now be a new button next to the Edit Button called Re-new.
Clicking Re-new should renew the current profile.
When the profile was renewed, my team would joust Install the updated profile.
(I sent the updated profile by mail, by downloading the profile(s) from the Provisioning Profiles page)
If that option for some reason would not work, you could alternatively create a new Provisioning Profile, with the same App ID and email it to you'r team.
If you make your app part of the app store they will not expire. You can charge a lot for it and give out redeem codes to your clients or make it free and do some kind to authorization.
I was working with a enterprise customer that had a private distribution to iPads. The iPads were not regality connected a computer to sync apps, but 1 day a year after the provisioning file was made all the remotes sales team lost access to the app. The app was a 1.6 gb download. So that only happened once and the app when to the store as a free app.
Related
So, my first App is on the AppStore for almost a year now. I started receiving notices from Apple that my iOS Distribution Certificate will expire in 30 days time. That's fine — they expire.
But, the email says to go to Certificates, Provisioning and Identities to renew — only there is nothing there that specifically guides me through such a process that I can see — and it's a very clean, spartan portal so I imagine I would see something especially if I was directed to go there specifically for this reason.
As I've never renewed a certificate, I wonder if anyone might be able to guide me through the process? There seems to be no clear answer.
My concern is that the expired certificate would somehow break the App currently in the store? (I don't know that it will, or will not — but I'm not excited to find out in real time.)
Am I meant to create a new certificate in Xcode? Does it need to be somehow applied to the current version of the App, or the one in the App Store, meaning I may need to publish a new version of the App for hygiene?
Any pointers or help are greatly appreciated.
Julian
If your Apple Developer Program membership is valid, your existing apps on the App Store will not be affected. However, you will no longer be able to upload new apps or updates signed with the expired or revoked certificate to the App Store.
https://developer.apple.com/support/certificates/
For updating the app you need to generate new certificate.
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.
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.
So I took over an existing iOS app from a client, that is currently available for public use through the App Store. When I was given the project in xcode, I noticed that all provisioning profiles associated with the app had expired and all were under the name of the previous developer.
So, I added myself as a developer and joined the team and code signed the development copy under my credentials. I created a new ad hoc provisioning profile for testing, and released a version through TestFlight to some registered devices. No problems. The app is greenlighted to go live.
Can someone please help me out with the release process from this point on? Do I create a third new provisioning profile for App Store release, and tie it to the code signing in XCode? Is this going to be problematic considering the version that is live now is under completely different (expired) profiles from a different developer? Is there some alternative way I need to do it through Apple? I'm trying to be super cautious here... if for some reason I release the app and its crashing because of some step I didnt take by accident, the poop will hit the fan.
You're going to have to release it under a new name on the App Store and forfeit all the ratings and reviews. Apple won't let you swap developer profiles on an existing app.
Other developers may disagree, but it looks like a huge PITA. See here
Transferring ownership of an iPhone app on the app store
The official answer seems to be NO
I didn't interpret the question as regarding change of ownership of an app.
I read the question as: I've inherited maintenance of an app and we'll want to submit an update as the same seller.
In this case, you can generate your own certificates and distribution profiles, and you can then build and submit the app.
I have done this numerous times. That is, I have inherited responsibility for an app that I did not necessarily craft originally. I easily created new signing and provisioning credentials, appropriate for the app the be submitted as the seller (not me) on their behalf.
And for what it's worth, the App Store Distribution profile is necessary, but only used when the app is submitted, so Apple can ensure that it is coming from a developer that has the right to submit it. (Remember, these profiles are signed with the same certificates used to sign your app package.) If that Distribution profile should expire or change, it has no bearing on an app already in the App Store.
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.