iOS: Install iPad App wirelessly doesn't work - ipad

I have followed this precisely to install App wirelessly and also followed different blogs and posts but not able to get enterprise distribution working.
I have done following things.
Index.html page:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>My app</title>
</head>
<body>
<ul>
<a href="itms-services://?action=download-manifest&url=http://10.0.20.600:5151/MyApp.plist">
Install App</a>
</ul>
</body>
</html>
MyApp.plist file:
<?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>URL</key>
<string>http://10.0.20.600:5151/MyApp.ipa</string>
<key>display-image</key>
<string>http://10.0.20.600:5151/icon72x72.png</string>
<key>full-size-image</key>
<string>http://10.0.20.600:5151/icon512x512.png</string>
<key>bundle-identifier</key>
<string>com.MyCompany.MyApp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>title</key>
<string>MyAppName</string>
</dict>
</plist>
Enabled MIME types:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".ipa" mimeType="application/octet-stream" />
<mimeMap fileExtension=".plist" mimeType="text/xml" />
</staticContent>
</system.webServer>
</configuration>
Given full permissions to MyApp.plist file.
When I open http://10.0.20.600:5151/index.html page on Safari on iPad, I get the page and on clicking Install App, * It doesn't do anything * No errors and nothing!
Someone has also mentioned to download mobile provision file so I added following in my index.html
<a href="http://10.0.20.600:5151/MyApp.mobileprovision">
Install Provisioning File</a>
..but when I click this it says "File or Directory not found".
Could anyone please tell me what am I missing here? I have spend half day now to get this working!

I have exactly the same problem.
I've added the MIME types.
I am able to open the icons. Trying to open the ipa on the iPad provides me with the same error as you get. However I can open the ipa from the browser on my PC.
I have followed the steps in this link, but still when I click the link nothing happens.
Maybe the link will help you even if it does nothing for me?
My manifest file also looks a bit different (not created by xcode btw)
<?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>kind</key>
<string>software-package</string>
<key>url</key>
<string>http://url/to/ipa.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://url/to/icon/57.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://url/to/full/icon.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.app.myapp</string>
<key>bundle-version</key>
<string>1.1</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>myApp</string>
</dict>
</dict>
</plist>
Sorry I couldn't be of any more help!

Following settings always worked for me!
install.html file:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Remote App Install</title>
</head>
<body>
<ul>
<a href="itms-services://?action=download-manifest&url=http://us.www.mysite.com/install.plist">
Install App</a>
</ul>
</body>
</html>
install.plist file
<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://us.www.mysite.com/myapp1_0.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>http://us.www.mysite.com/icon.png</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>url</key>
<string>http://us.www.mysite.com/icon#2x.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.mysite.myapp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>My App</string>
</dict>
</dict>
</array>
</dict>

It seems you should try with a HyperLink other than using the A tag.

Remove the first line <?xml version="1.0" encoding="UTF-8"?>
from your plist file and it should work.

Related

Downloading App update OTA from Amazon Aws s3 iOS

I'm looking to create in app updates, currently my app creates a signed url for my plist file in my Amazon was s3 bucket, I've also created a signed url for my .ipa file and stored that signed url in my plist file, as can be seen below:
URL Call in App:
NSMutableString *downloadURL = [NSMutableString string] ;
[downloadURL appendString:#"itms-services://?action=download-manifest&url="];
[downloadURL appendString:plistURL];
NSString *ipaDownloadString = [NSString stringWithString:downloadURL];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:ipaDownloadString]];
where ipaDownloadString is a signed url appended to item-services://?action etc.
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://bucket_name.s3-eu-west-1.amazonaws.com/ipa_name.ipa?AWSAccessKeyId=xxxxxxxxxxxxx&Expires=1435587320&Signature=xxxxxxxxxxxx</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.name.DropboxTest</string>
<key>bundle-version</key>
<string>1.1</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Dropbox Test</string>
</dict>
</dict>
</array>
</dict></plist>
The urls are working when you plug them into a browser however, the app won't download the app as it should when the link is clicked.
I have tried url encoding the url in the plist to no avail.
The plist has content-type: text/plain
the ipa has content-type |: application/octet-stream
cheers,
ben
I solved this myself, for those who need this information in the future:
The url in the plist file needs to be signed and and the '&''s in said url need to be encoded in the form & .
I have found the content-type on s3 has no being on the issue at all.
I have included a sample 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>
<!-- 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>
<!-- required. the URL of the file to download. -->
<key>url</key>
<string>https://s3-eu-west-1.amazonaws.com/bucket/path-to-ipa?AWSAccessKeyId=xxxxxxxxxxxxx&Expires=1437661858&Signature=xxxxxxxxxxxxxxxxxxxxxx</string>
</dict>
<!-- display-image: the icon to display during download. -->
<dict>
<key>kind</key>
<string>display-image</string>
<key>url</key>
<string>link to image</string>
</dict>
<!-- full-size-image: the large 512×512 icon used by iTunes. -->
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>link to image</string>
</dict>
</array>
<key>metadata</key>
<dict>
<!-- required -->
<key>bundle-identifier</key>
<string>com.hostname.appname</string>
<!-- optional (software only) -->
<key>bundle-version</key>
<string>1.2.5.0</string>
<!-- required. the download kind. -->
<key>kind</key>
<string>software</string>
<!-- optional. displayed during download; -->
<!-- typically company name -->
<key>subtitle</key>
<string>Command Centre</string>
<!-- required. the title to display during the download. -->
<key>title</key>
<string>Command Centre</string>
</dict>
</dict>
</array>
</dict>
</plist>
I hope this helps someone in the future.
In my case, I replaced & with &
If I use & with & it did not work.

How can I debug an Apple Enterprise Deployment by manifest?

I'm trying to deploy an app thorough a manifest file. After clicking on button in Safari, nothing happens, no error, just loading. My manifest looks like this:
<?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>
<!-- Array der Downloads. -->
<key>items</key>
<array>
<dict>
<!-- Array der zu ladenden Ressourcen -->
<key>assets</key>
<array>
<!-- Softwarepaket: die zu installierende ipa-Datei. -->
<dict>
<!-- Pflicht: die Art der Ressource. -->
<key>kind</key>
<string>software-package</string>
<!-- Pflicht: die URL der zu ladenden Datei. -->
<key>url</key>
<string>%url%</string>
</dict>
</array><key>metadata</key>
<dict>
<!-- Pflicht -->
<key>bundle-identifier</key>
<string>%bundleIdentifier%</string>
<key>bundle-version</key>
<string>%bundleVersion%</string>
<!-- Pflicht: die Art des Downloads. -->
<key>kind</key>
<string>software</string>
<!-- Pflicht: der beim Download anzuzeigende Titel. -->
<key>title</key>
<string>%title%</string>
</dict>
</dict>
</array>
</dict>
</plist>
EDIT 1
My link looks like this:
Installieren
EDIT 2
This is one of my plists:
<plist version="1.0">
<dict>
<!-- Array der Downloads. -->
<key>items</key>
<array>
<dict>
<!-- Array der zu ladenden Ressourcen -->
<key>assets</key>
<array>
<!-- Softwarepaket: die zu installierende ipa-Datei. -->
<dict>
<!-- Pflicht: die Art der Ressource. -->
<key>kind</key>
<string>software-package</string>
<!-- Pflicht: die URL der zu ladenden Datei. -->
<key>url</key>
<string>
https://someSite.de/applications/557170c4ffcb521300cacb59/versions/557170e7ffcb521300cacb5a/app.ipa?access_token=g3hf32v8h5bfeg4t50zfepwzrb9w8b3rv9382va0we7352635baivo
</string>
</dict>
</array>
<key>metadata</key>
<dict>
<!-- Pflicht -->
<key>bundle-identifier</key>
<string>com.someSite</string>
<key>bundle-version</key>
<string>0.0.1</string>
<!-- Pflicht: die Art des Downloads. -->
<key>kind</key>
<string>software</string>
<!-- Pflicht: der beim Download anzuzeigende Titel. -->
<key>title</key>
<string>MyApp</string>
</dict>
</dict>
</array>
</dict>
</plist>
Two steps, that fixed the issue:
1. Specify a display-image
2. Encode manifest-url:
e.g.
Installieren
Assuming you have a plist something like this:
<?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>http://somewebsite.com/APP.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.mycompany.APP</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>NAME OF APP</string>
</dict>
</dict>
</array>
</dict>
</plist>
And a valid .ipa then if you provide a webpage with a link to the plist like this:
Install App
Then the user should be able to install the Enterprise app assuming they have the right provisioning etc. You also need to ensure that your website allows for the user to execute .IPA files
I've read a lot of conflicting information all over the internet. Because it's such a complex process, a lot of suggestions are made "just to be safe", but it ends up wasting time because they're just one more variable that you think you have to do.
things that don't matter
URL encoding of url: you can do <a href="itms-services://?action=download-manifest&url=http://example.com/APP.plist">
mime types: It's suggested that plist = application/xml and ipa = application/octet-stream but I regularly drag to s3 and change nothing.
plist and ipa locations: they don't need to be in same place or be on same server as the anchor link. I have a site that then links directly to s3
html page in https: during testing, I found I could point to a server on the local network at 192.168.1.x which doesn't have https and it downloaded fine
things that matter
https - the plist, ipa does need to be https
query string parameters - adding ?key=value at then end of my url broke the download.
xml headers - my personal problem after 6 hours of debugging. don't forget to include the <?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">. The xml parser and writer I was using was stripping it out.

Ad Hoc doesn't get downloaded

I want to distribute my iOS app by Ad Hoc. Since the current version of XCode doesn't create .plist file, so I got one from StackOverflow and filled it as blow.
<?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>http://hungry.portfolio1000.com/HungryHandongi.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.Akadev.HungryHandongi</string>
<key>bundle-version</key>
<string>1.06</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>배고픈 한동이</string>
</dict>
</dict>
</array>
</dict>
</plist>
The url of the .plist file is: https://dl.dropboxusercontent.com/s/tulw9h412me6ayh/HungryHandongi.plist?dl=0
Now I want to let people download the app through the url http://hungry.portfolio1000.com/hungryhandongi.html which is coded like below:
</head>
<body>
<ul>
<li>Download</li>
</ul>
</body>
</html>
When I open the url with Safari and click 'Download' link, nothing happens. I want know what I've done wrong.
Thank you.
I think you are getting this issue for iOS 8.
Yes for Over the air distribution you need to create plist file manually. and you have to change your identifier like
com.Akadev.HungryHandongi to com.Akadev.HungryHandongi.iOS8fix
Please check below plist , it will help you
<?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>http://www.path.com/build/iphone/some/2015/022015/name/appname.ipa</string>
</dict>
<dict>
<key>kind</key>
<string>full-size-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://www.name.com/build/iphone/EnterpriseTB/2015/022015/some/iTunesArtwork.png</string>
</dict>
<dict>
<key>kind</key>
<string>display-image</string>
<key>needs-shine</key>
<true/>
<key>url</key>
<string>http://www.some.com/build/iphone/some/2015/022015/some/Icon.png</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>mobi.somecmp.appname.ios8fix</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>appname 2015</string>
</dict>
</dict>
</array>
</dict>
</plist>
Note: For ADHoc Distribution device id should be added into your provisioning profile.

Cannot distribute in-house iOS App "Cannot Open Page" Error iOS 7

<?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://app.company.com/myapp/app.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.company.*</string>
<key>bundle-version</key>
<string>1.0.0 (1.0.0)</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Conference APp</string>
</dict>
</dict>
</array>
</dict>
</plist>
I am trying to access manifest file, to download the App on iPhone.
I point it to the manifest file but it does not seems to read it on the iOS device:
Download
The url parameter of the itms-services link needs to be properly escaped (you can't use a / character, has to be %2f) and it needs to be an absolute URL instead of a relative URL.
Try changing it to:
Download ProjectA Reports
The path was incorrect. There's not difference between this file for IOS6 and IOS7

itms-services://?action=download-manifest Not Work in IIS

I have created an ios apps and let selected devices download&install on idevices browser safari.So make a link like this:
<a href="itms-services://?action=download-manifest&url=http://myserver.com/Info.plist">
and when i click it was popup a message "cannot connect to myserver.com".
Then i figure out IIS missing MimeType so i add back to it.
.ipa application/octet-stream
.plist text/xml
But finally when i click on it no response at all,why?
i doubt info.plist setting was wrong or something.
Here are my info.plist setting:
<?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>AppStoreFileSize</key>
<integer>4329818</integer>
<key>ApplicationProperties</key>
<dict>
<key>ApplicationPath</key>
<string>http://myserver.com/Apps.ipa</string>
<key>CFBundleIdentifier</key>
<string>com.app.app</string>
<key>IconPaths</key>
<array>
<string>http://myserver.com/icon.png</string>
<string>http://myserver.com/icon.png</string>
<string>http://myserver.com/icon#2x.png</string>
<string>http://myserver.com/icon-72.png</string>
</array>
<key>SigningIdentity</key>
<string>CSR Certificate</string>
</dict>
<key>ArchiveVersion</key>
<integer>2</integer>
<key>CreationDate</key>
<date>2012-10-10T09:02:39Z</date>
<key>Name</key>
<string>AppName</string>
<key>SchemeName</key>
<string>AppName</string>
You code needs to look like this
<?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>http://www.example.com/test.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.name.name</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Name</string>
</dict>
</dict>
</array>
</dict>
</plist>
Remember to change:
Bundle Identifier= <string>com.company.name</string>
Installer Name= <string>Name</string>
Ipa Download= <string>http://www.example.com/test.ipa</string>
Change the <string>http://www.example.com/test.ipa</string> to where ever you located you ipa for install.
Create you Install.plist or Start.plist what ever and go into mobile safari and type: itms-services://?action=download-manifest&url=http://www.example.com/whatever.plist
And it should go a head and download it there may be some bugs when downloading.
Remember that the ipa needs a valid UDID= unique device identification.
Hope this helped.
Best Regards Silas.
Since iOS8, un-encrypted plist downloads are not accepted anymore.
So you need a valid ssl certificate and change the scheme to https. You can test this with amazon s3 for example.
you have to use Https for all urls in .plist file

Resources