Разрешает ли SKStoreProductViewController обновлять приложение?

Не удалось найти какую-либо информацию об этом... если я запустил экземпляр SKStoreProductViewController из моего приложения, подав ему URL-адрес iTunes этого приложения, он позволяет обновлять приложение? Другими словами, я хотел бы иметь кнопку "Обновить" в моем приложении, которая показывает SKStoreProductViewController и позволяет пользователю обновлять приложение оттуда.

Это трудно проверить, так как SKStoreProductViewController запускает "песочницу" версии App Store и что я не уверен, что определяет, показывает ли она кнопку "Открыть" или "Обновить".

Ответ 1

Я могу убедиться, что обновление действительно отображается при представлении принадлежащего приложения, которое также имеет обновление.

Кроме того, он также показывает "Установить" для приложений, которые у вас есть, но не установлены, и "Открыть" для приложений, которые установлены и обновлены.

При этом используется производственный код в поставляемом приложении, хотя я все еще не могу найти подтверждение в документах Apple.

Обновление текущего приложения через

Если вы пытаетесь обновить приложение, открытое в данный момент в SKStoreProductViewController, оно приведет к ошибке в более поздних версиях iOS, поскольку невозможно установить. Вместо этого вы должны открыть URL-адрес магазина приложений, чтобы открыть его. itms-apps://itunes.apple.com/app/apple-store/id375380948?mt=8

enter image description here

Ответ 2

Интересно, что я попробовал то же самое для своего собственного приложения, где пытался показать свой идентификатор приложения внутри SKStoreProductViewController, обнаружив более раннюю версию приложения. Экран был виден, кнопка обновления была там, ОДНАКО, нажав на обновление и все еще оставаясь в контекстном приложении, SKStore выложил ошибку "Не удается загрузить в это время". Тем не менее, я не пытался сразу выйти из приложения после нажатия на обновление должно работать

Возможно, из-за того, что приложение должно быть завершено до того, как обновление может быть выполнено?

Ответ 3

Прошло некоторое время, так как этот вопрос имел любовь, но, похоже, он не полностью разрешен. Я собираюсь добавить то, что я нашел.

Вот как я провела тест. Мы только что выпустили первый выпуск нашего приложения и не выпустили его в магазине приложений. Итак, что я сделал, я взял идентификатор пакета из другого приложения, которое у меня есть в магазине приложений, поместил его в новое приложение в Xcode 8.3 и протестировал эту функциональность обновления. Меня интересует вопрос: может ли приложение само обновление использовать с помощью SKStoreProductViewController?

1) iOS 10.3 на iPhone. Я провел тест, и он работает в 6 или около того испытаниях, которые я сделал. Случается, что когда я делаю установку из SKStoreProductViewController, это приводит к сбою моего приложения (неудивительно: я устанавливаю поверх "того же" приложения - приложение с тем же идентификатором пакета), но установка продолжается. Вы видите обычный индикатор выполнения загрузки, который вы обычно видите для загрузки приложения из магазина приложений.

2) iOS 11 на iPad (iOS11, бета-версия 5, я считаю, номер сборки 15A5341f). При попытке обновления (обновите приложение A из приложения A), используя SKStoreProductViewController, это не сработало. После нажатия кнопки "Обновить" появляется следующее предупреждение. Я пробовал это несколько раз. Приложение не сбой. Он просто не загружает "обновление". Я не уверен, что это типично для бета-версий iOS или является изменением поведения SKStoreProductViewController.

Неверное обновление приложения

3) iOS 11, одно и то же устройство: но попытался обновить приложение B из приложения A. Я проверил этот тест, чтобы убедиться, что проблема в том, что я просто не мог вообще загружать в SKStoreProductViewController в бета-версии, Это сработало. В этом случае я смог выполнить загрузку.

Я попытаюсь ответить на тест после выхода iOS 11 - чтобы проверить, работает ли мой тест 2) или остается прежним.

Ответ 4

Да, я применил SKStoreProductViewController в тестовом приложении и загрузил приложение, которое уже было установлено на моем устройстве. Класс показал кнопку "Открыть", и когда кнопка была нажата, устройство переключилось на другое приложение. У меня нет доступных обновлений приложений, но поведение класса должно быть одинаковым. Когда кнопка изменяется с "Купить" на "Открыть", мы знаем, что ее поведение динамично и возможно обновление приложения.

enter image description here