Chapter 10 Appendices 86
If users already have the app, you may want to time your next released version so that it includes
the new provisioning prole. If not, you can distribute just the new .mobileprovision le, so users
won’t have to install the app again. The new provisioning prole overrides the one already in the
app archive.
Provisioning proles can be installed and managed using MDM and then downloaded and
installed by users through an app update or using MDM.
If your distribution certicate expires, the app won’t launch. Your distribution certicate is valid
for three years from when it was issued, or until your Enterprise Developer Program membership
expires, whichever comes rst. To keep your certicate from expiring, be sure to renew your
membership before it expires.
You can have two distribution certicates active at the same time, with each independent from
the other. The second certicate provides an overlapping period in which you can update your
apps before the rst certicate expires. When you request your second distribution certicate
from the iOS Dev Center, be sure not to revoke your rst certicate.
Certicate validation
The rst time a user opens an app, the distribution certicate is validated by contacting Apple’s
OCSP server. If the certicate has been revoked, the app won’t launch. Inability to contact or get
a response from the OCSP server isn’t interpreted as a revocation. To verify the status, the device
must be able to reach ocsp.apple.com. See Network conguration requirements.
The OCSP response is cached on the device for the period of time specied by the OCSP server—
currently, between three and seven days. The validity of the certicate isn’t checked again until
the device has restarted and the cached response has expired. If a revocation is received at that
time, the app won’t launch.
Revoking a distribution certicate invalidates all of the apps you’ve signed with it. Revoke a
certicate only as a last resort—that is, if you’re sure the private key is lost or you think the
certicate has been compromised.
Sample app manifest le
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.
com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- array of downloads. -->
<key>items</key>
<array>
<dict>
<!-- an array of assets to download -->
<key>assets</key>
<array>
<!-- software-package: the ipa to install. -->
<dict>
<!-- required. the asset kind. -->
<key>kind</key>
<string>software-package</string>
100% resize factor