iOS Enterprise App distribution OTA - ios

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

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.

ios11:in-house app does not display icons and does not display progress

When downloading and installing the enterprise application on iOS11, the icon is not displayed for the blank, the state is waiting, but it is actually downloaded and downloaded after the normal display and use.
IOS10 and previous versions have not appeared before. There will normally be downloading progress and icons. Plist has not been modified. I don't know what the new feature of iOS11 is or bug. I always think it's a network problem.
Only recently did I test other old iOS before I found normal. Only iOS11 has this problem. I found many, did not find the answer, estimated business account number is also less.
app installing screenshot
<?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://xx.com/kmia_ump.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://xx.com/180.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://xx.com/1024.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>xx.xx.xxxx</string>
<key>bundle-version</key>
<string>xxx</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>xxx</string>
</dict>
</dict>
</array>
</dict>
</plist>

Download inhouse app from another app programmatically

we have a lot of inhouse apps and want an app like AppStore. We did a demo. We can open installed apps but apps,not installed on iPhone, can't be downloaded from our servers to the iPhone.
We do:
if([UIApplication sharedApplication] canOpenURL:..] == false){
NSString *schemelink = [NSString stringWithFormat:#"itms-services://?action=download-manifest&url=%#",**plist_url**];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:schemelink]]
}
The things that we do to find the reason:
Copy-paste plist url to the Mac Safari and I check the plist and it's correct everything(ipa links and others). They all at the same path.
Copy-paste just ipa url. It started to download on Mac.
Copy-paste ipa url with itms-services://?action=download-manifest&url=, it says
There is no application set to open the URL ......ipa
Search the App Store for an application that can open this document, or choose an existing application on your computer.
How can I solve it?
.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://....../AppName.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.company.AppName</string>
<key>bundle-version</key>
<string>1.3</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>AppName</string>
</dict>
</dict>
</array>
</dict>
</plist>
Your plist file should be hosted on HTTPS SSL enabled serve only otherwise you can not install it.
I have attached a sample manifest.plist file with sample data, you can modify with your original one.
<?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://127.0.0.0/app/App.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>https://127.0.0.0/app/icon57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>https://127.0.0.0/app/icon512.jpg</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.companyname.appname</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Your application name</string>
</dict>
</dict>
</array>
</dict>
</plist>
Place all the following files in same directory on your server.
App.ipa
icon57.png
icon512.jpg
manifest.plist
Your download URL should look like following.
itms-services://?action=download-manifest&url=https://127.0.0.0/app/manifest.plist
Example Click here to download App.
Also make sure your server supports MIME Type of application/octet-stream for ipa and text/xml for plist.

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.

Resources