3

I met a strange issue when distributing my app for beta-testers. It's about an app icon during downloading.

When users go by a link to the app manifest and tap 'Install' there are 2 problems may occur:

  1. The app icon on Home Screen does not appear at all until the app is ready to be launched.
  2. The app icon placeholder appears instead of my app icon hosted by URL at the manifest (please see screenshot). When the app is completely installed the app icon from the bundle appears.

The issue is reproduced on:

  • iPhone 5s, iOS 9.2.1
  • iPhone 5s, iOS 10.0.2
  • iPhone 4s, iOS 9.3.5

There is no problem on iPad Air (A1474) with iOS 9.2.

This is my manifest:

<?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://s3-eu-west-1.amazonaws.com/vandco/JustAMap/JustAMap.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <false/>
                    <key>url</key>
                    <string>https://s3-eu-west-1.amazonaws.com/vandco/JustAMap/globe-adhoc-1024p.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <false/>
                    <key>url</key>
                    <string>https://s3-eu-west-1.amazonaws.com/vandco/JustAMap/globe-adhoc-1024p.png</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>ru.vandco.JustAMap</string>
                <key>bundle-version</key>
                <string>0.9</string>
                <key>kind</key>
                <string>software</string>
                <key>subtitle</key>
                <string>V&amp;Co Ltd.</string>
                <key>title</key>
                <string>Просто.Карта</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>

The app icon is 1024x1024 in PNG, 1.1 MiB. I tried to use 57x57 as described in Apple documentation, but more testers reported the problem so I decided to increase the resolution.

This is the link to my manifest: itms-services://?action=download-manifest&url=https://vandco.s3.amazonaws.com/JustAMap/JustAMap.plist

The app is codesigned by a provisioning profile for Ad-Hoc Distribution. It installs and works fine, the issue is just about the app icon during downloading over the air.

I wonder is this my fault or Apple bug and how can I fix or workaround it?

shelbalart
  • 43
  • 6
  • Is the only problem that the wrong image shows DURING installation? – john_ryan Oct 05 '16 at 19:38
  • Yes, it's only during downloading and installation. When the app installed the icon from the bundle does appear, as it should do. – shelbalart Oct 07 '16 at 12:45
  • I'm having the same issue now on an iPad and just can't understand how to deal with it. So frustrating... In my case, it's definitely not the image size. Also, I'm using a CloudFront distribution to download the image so the response time is definitely under 1 second – Leonid Usov Feb 14 '19 at 16:49

1 Answers1

1

It seems iOS 9.2 waits for a short timeout to download the Ad-Hoc app icon. If the icon is enoughly large, or the internet connection is slow, or the server hosted the icon has a significant ping delay, iOS aborts downloading the icon and shows the placeholder. I've measured the timeout on my own server with a simple PHP script. Although I cannot know an exact ping delay I assume it is reasonable short. So I can say the timeout should be approx. 1 sec.

So if the server fails to respond with the image in 1 second iOS 9.2 aborts downloading the icon.

Anyway it does not reproduce in iOS 9.3.5 and later: iOS shows a placeholder in a while but still waits for the server response, and if the server responds with the icon before the app is downloaded the placeholder become changed to the downloaded ad-hoc icon.

shelbalart
  • 43
  • 6