iOS OTA Not Working - ios

I've setup OTA for my organization, but can't seem to get it working. Here's what I've done:
Setup an externally recognized SSL certificate on the hosting server
Ensured the following MIME Types are on the server:
ipa application/octet-stream
plist application/xml
Added this link to our webpage:
Install
Distributed the ipa, manifest, 57x57 display image, and 512x512 full-size image to the server.
Here's what the manifest looks like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://***/***/***.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>need-shine</key>
<false/>
<key>url</key>
<string>https://***/***/***.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>need-shine</key>
<false/>
<key>url</key>
<string>https://***/***/***.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifer</key>
<string>***.***.***</string>
<key>bundle-version</key>
<string>233582</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>***</string>
</dict>
</dict>
</array>
</dict>
</plist>
I've verified the URLs in the manifest. They're definitely correct. I've used my computer as a proxy for my phone and I see that my phone is downloading the manifest successfully after clicking the Install link. However, after the phone downloads the manifest, nothing happens - the phone doesn't install the app or display an error on the screen. I've also monitored the console during the transaction and no error appears there either.
I'm completely at a loss for what might be causing the issue here. Any help would be appreciated! Thanks in advance!

I changed need-shine to needs-shine and bundle-identifer to bundle-identifier and that fixed the issue. It would have been nice if the console would have given an error for invalid fields in the manifest, but unfortunately it did not.

Related

Download Enterprise IPA file from web server

I have seen a few similar questions but they are all several years old and largely unhelpful.
I am hosting a few enterprise apps on AWS S3 and am trying to correctly create the manifest file. When the app is downloaded I am using a presigned URL to get the manifest.plist file which looks like the following:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>**S3 URL**</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<false/>
<key>url</key>
<string>**S3 URL**</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<false/>
<key>url</key>
<string>**S3 URL**</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.iOS.app</string>
<key>bundle-version</key>
<string>1.6.3</string>
<key>kind</key>
<string>software</string>
<key>platform-identifier</key>
<string>com.apple.platform.iphoneos</string>
<key>title</key>
<string>appName</string>
</dict>
</dict>
</array>
</dict>
</plist>
All of the URL's in the manifest.plist are currently public to help with testing, so if you go to any of the URL's directly the file is downloaded in the browser correctly.
The URL generated by the download is
itms-services://?action=download-manifest&url=https://{S3Bucket/Key}?AWSAccessKeyId={KEY}&Expires=1636478776&Signature={Signature}&x-amz-security-token={token}
With the actual URL's and token omitted.
I have tried this version and also added amp; after the "&" as suggested in this post Downloading App update OTA from Amazon Aws s3 iOS
In both versions of the download URL I am prompted to "Open In Itunes" but nothing happens when I click "yes".
Are there any updated hints or something I am missing?
Any help would be much appreciated.

iOS Enterprise App distribution OTA

I'm trying to create OTA for my enterprise app. I have created all pre-requisite for the same including signing certificate, provisioning profile. When I use apples standard hyperlink link nothing happens on the device, just blank screen. I've uploaded IPA and manifest file to https storage and pointed the hyperlink to manifest location.
Install App
Am I missing something here?
Here is my plist.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://example.com/sampleApp.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://example.com/logo%2057%20X%2057.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://example.com/logo%20512%20X%20512.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.sampleApp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>sampleApp</string>
</dict>
</dict>
</array>
</dict>
</plist>
Finally I was able to fix the issue. I see issue was with not having correct signing certificate. For anyone who want to distribute the app in-house without MDM they can follow steps in below blog post.
https://medium.com/apps-studio/distributing-enterprise-ios-app-in-house-without-mdm-3ed015009893

Cannot download iOS OTA from HTTPS Server, but from Dropbox

I have an HTTPS server and my iOS app is ready to be distributed. Signed it using Distribution provisioning profile and has created plist for it.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://some-server-url/e-App.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://some-server-url/image.57x57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://some-server-url/image.512x512.jpg</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.com.e-App</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>e-App</string>
</dict>
</dict>
</array>
</dict>
</plist>
I have tried to deploy it to my server and have added MIME Types in IIS application/xml for .plist and application/octet-stream for .ipa
Unfortunately when I go to my download.html from iPad Safari, it pops up error of cannot download the app. While I put it in Dropbox for testing, it works perfectly (with some changes in URL in .html and .plist).
Anyone can suggest how to fix this? I have been looking solutions out there but none of them can bring me fortune.
This happens on all devices.
I don't have the logs now, but I remember it gives me this error:
MIInstaller performInstallationWithError
Anyway, the server prompts authentication that user need to input email and password. Maybe this is the cause?

How to do wireless installaton of Ad Hoc App on iPhone

I want to distribute IPA to testers by wireless.
I have searched and found one example.
Example for Wireless Ad Hoc Distribution
But it did not work with me. It shows Not valid for URL.
I am using http url. Few links shows that it require https ,
Is that true ? Or I need to configure something else.
Please respond.
You can use diawi.com - You need to export your IPA to Ad hoc deployment using XCode and then upload it to diawi.
Just save your ad hoc package for enterprise distribution, edit the generated HTML for the correct locations.
Note that starting from iOS 7 or 8 (not sure), the IPA and PLIST files must be located in a secured website (https).
Here is a sample without using "save for enterprise":
HTML:
Install
And the plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://Your IPA Location</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<false/>
<key>url</key>
<string>http://your image location</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<false/>
<key>url</key>
<string>http:// your icon location</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.your.bundle.id.goes.here</string>
<key>bundle-version</key>
<string>YourVersionHere</string>
<key>kind</key>
<string>software</string>
<key>subtitle</key>
<string>Your subtitle here</string>
<key>title</key>
<string>Your title here</string>
</dict>
</dict>
</array>
</dict>
</plist>
I follow this approach which i've previously answered here https://stackoverflow.com/a/20353911/1303176
But #Shai's answer using diwai.com is perfectly acceptable as well.

manifest.plist file is displaying only as text

I uploaded a plist file but when I go to that link to get the ipa, the plist file is only displaying the text, and not doing anything else. Something is going wrong here and I don't understand what.
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>http://rentaid.info/clarktest/Clarktest2.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.rentaid.testapp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Clarktest2</string>
</dict>
</dict>
</array>
</dict>
</plist>
you cannot just open the manifest file via standard HTTP scheme becasue nothing useful will happpen. you need to create a link to your manifest file with a special scheme, and that link can work on the device only.
the link with the custom sceme should look like this:
itms-services://?action=download-manifest&url=https://rentaid.info/clarktest/manifest.plist
IMPORTANT: make sure your server has proper SSL certificate, because on iOS7 or above the device won't download the IPA file, if the hosting server has no SLL certificate.
Just uploading the plist file and try to open up willn't help you to get the app. you should hyperlink like this
<a href="itms-services://?action=download-manifest&url=http://example.com/Application.plist">
Install This App
</a>
Check this out tutorial 1
Check this out tutorial 2

Resources