When you setup Universal Link support in your iOS 9 app, by putting an apple-app-site-association file on your server and getting the app setup to handle the linking, you automatically also get smart banners on your site whenever you are viewing a page that is supported by your app.
Like this:
These are automatic banners that appear, without us putting any meta tags on our site. They only appear when the user is at the top of the page and pulls down (from what I can see).
My question: Where is Apple pulling the title for the banner from? In the above example, the "Yelp" that appears above the "Open in the Yelp app" line, where does that come from? What we're seeing on ours is: the app icon, the OPEN text on the right, the "Open in the XXXX app," but no title, just a blank area above that line.
I've tried adding some of the meta tags discussed here, but it still doesn't seem to work.
I'm a bit afraid that the answer is going to be that Apple indexes some property off your webpage to get the title. The reason I'm afraid is because these particular pages are not accessible to the general public. 😬
It looks like the title is coming from the iTunesMetadata.plist itemName key. I'm guessing this is only present in distribution ipa file.
<key>itemName</key>
<string>App Name</string>
The iTunesMetadata.plist Contents
The following is an example of of typical iTunesMetadata.plist file used to define the iTunes information for an Ad Hoc distribution:
<?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>UIRequiredDeviceCapabilities</key>
<dict>
<key>armv7</key>
<true/>
<key>front-facing-camera</key>
<true/>
</dict>
<key>artistName</key>
<string>Company, Inc.</string>
<key>bundleDisplayName</key>
<string>App Name</string>
<key>bundleShortVersionString</key>
<string>1.5.1</string>
<key>bundleVersion</key>
<string>1.5.1</string>
<key>copyright</key>
<string>© 2015 Company, Inc.</string>
<key>drmVersionNumber</key>
<integer>0</integer>
<key>fileExtension</key>
<string>.app</string>
<key>gameCenterEnabled</key>
<false/>
<key>gameCenterEverEnabled</key>
<false/>
<key>genre</key>
<string>Games</string>
<key>genreId</key>
<integer>6014</integer>
<key>itemName</key>
<string>App Name</string>
<key>kind</key>
<string>software</string>
<key>playlistArtistName</key>
<string>Company, Inc.</string>
<key>playlistName</key>
<string>App Name</string>
<key>releaseDate</key>
<string>2015-11-18T03:23:10Z</string>
<key>s</key>
<integer>143441</integer>
<key>softwareIconNeedsShine</key>
<false/>
<key>softwareSupportedDeviceIds</key>
<array>
<integer>9</integer>
</array>
<key>softwareVersionBundleId</key>
<string>com.company.appid</string>
<key>subgenres</key>
<array>
<dict>
<key>genre</key>
<string>Puzzle</string>
<key>genreId</key>
<integer>7012</integer>
</dict>
<dict>
<key>genre</key>
<string>Word</string>
<key>genreId</key>
<integer>7019</integer>
</dict>
</array>
<key>versionRestrictions</key>
<integer>16843008</integer>
</dict>
</plist>
Related
I want to build an iOS app that can receive images from photo library. So I registered the document type public.image (also tried with public.jpeg or public.png) in Xcode.
But if I click on share in the photo library the app doesn't show up as a receiver.
If I do the same in files app, the app is show in the UIActivityController and I can receive the image. Is there a special permission needed or what can I do to make it work straight out of the photo library?
info.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">
<array>
<dict>
<key>CFBundleTypeName</key>
<string>image</string>
<key>CFBundleTypeIconSystemGenerated</key>
<true/>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>public.jpg</string>
<string>public.content</string>
<string>public.image</string>
</array>
</dict>
</array>
</plist>
I tried different variants of the plist and different kind of apps projects ( document based and not)
is there something new in iOS16, because some time ago I had an other project and it works just fine. (iOS 14 I think, not sure)
I'm creating an iOS app that essentially uploads video files to a cloud server, among other things. To make it more useable, I'd like to implement an Open with/Share with my app button. When you open the camera roll on iOS devices, select a video and click the Share button, a list of compatible apps shows up. I'd like to place my app in this list.
I did some research on the Internet, and found I had to add the file type to my plist file, so I added:
<?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">
<array>
<dict>
<key>LSItemContentTypes</key>
<array>
<string>public.video</string>
<string>public.movie</string>
<string>public.mpeg-4</string>
<string>com.apple.m4v-video</string>
<string>com.apple.quicktime-movie</string>
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeName</key>
<string>Moment</string>
<key>LSHandlerRank</key>
<string>Owner</string>
</dict>
</array>
</plist>
My app isn't showing up, however. Am I doing something wrong here?
LSItemContentTypes is for the document controller. Since you're wanting to do this from the camera roll, you may be looking to create a Share Extension.
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.
We have In-House distribution scheme, which includes both .ipa and manifest.plist files placed on a web-server. A simple web-page allows user to choose the app version and tap to install it. When user taps on the link in Safari on iPad with iOS 8, it asks would he like to install the app and after pressing "Install" do nothing. No errors or installation progress icon...
This scheme we used for year before and I could confirm it works with iOS 7 as well with iOS 8 beta (at the moment also). It doesn't work with iOS 8. It seems like iOS 8 blocks it. Does anybody already faced the issue or knows how to around it?
The server has MIME types set:
- application/octet-stream ipa
- text/xml plist
The manifest.plist file is below:
<?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://example.com:8079/foo.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.example.fooapp</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>Example Corporate App</string>
</dict>
</dict>
</array>
</dict>
</plist>
You can also just change the bundle id in your Manifest.plist file like:
<key>bundle-identifier</key>
<string>com.example.fooappNew</string>
Without regenerating the provisioning profiles.
Same problem with my App. Fixed by changing App bundle name, creating new App Id, and building new provisioning profile.
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