Подтвердить что ты не робот

Как перейти на страницу обновления нашего приложения

Мы предлагаем пользователям обновить свое приложение, если они работают с устаревшей версией. Когда пользователи нажимают кнопку обновления, я использую openURL с адресом, например itms://itunes.apple.com/us/app/our-app-title/id12345?mt=8, чтобы загрузить приложение App Store в список для нашего приложения.

При этом методе, однако, в результате экран имеет кнопку с надписью "Открыть", а не "Обновить". Если пользователи сначала откроют приложение App Store, перейдите к списку приложений (или перейдите на вкладку обновления), кнопка будет отмечена как "Обновить".

Могу ли я передать текущую версию в качестве параметра querystring в вызове openURL или есть ли другой способ убедиться, что кнопка Обновить отображается? Я не могу найти текущую документацию о том, как это сделать. (Все, что я нахожу, составляет несколько лет и относится к прекращенному инструменту phobos.)

4b9b3361

Ответ 1

Я бы рекомендовал вам попробовать класс SKStoreProductViewController. Идентификатор элемента iTunes можно найти в https://itunesconnect.apple.com Мои приложения Apple ID.

скор

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

objective-c

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = [self topViewController];
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (!result) {
                                           NSLog(@"SKStoreProductViewController: %@", error);
                                       }
                                   }];
    [viewController presentViewController:storeViewController animated:YES completion:nil];
    [storeViewController release];
}

Ответ 2

Из новостей и анонсов для разработчиков Apple.

Приведите клиентов прямо в ваше приложение в App Store с помощью iTunes Ссылки С помощью ссылок iTunes вы можете предоставить своим клиентам способ доступа к вашим приложениям в App Store непосредственно с вашего сайта или маркетинговых кампаний. Создание ссылки iTunes прост и может быть выполнено направить клиентов в одно приложение, все ваши приложения или на конкретное приложение с указанным названием вашей компании.

Чтобы отправить клиентов в конкретное приложение: http://itunes.com/apps/appname

Чтобы отправить клиентов в список приложений, которые у вас есть в App Store: http://itunes.com/apps/developername

Чтобы отправить клиентов в конкретное приложение с именем вашей компании, включенным в URL: http://itunes.com/apps/developername/appname

Дополнительные примечания:

Вы можете заменить http:// на itms:// или itms-apps://, чтобы избежать перенаправления.

Информацию об именовании см. в Apple QA1633:

https://developer.apple.com/library/ios/#qa/qa1633/_index.html.

Изменить (по состоянию на январь 2015 года):

ссылки itunes.com/apps должны быть обновлены до appstore.com/apps. См. QA1633 выше, который был обновлен. Новый QA1629 предлагает эти шаги и код для запуска магазина из приложения:

  • Запустите iTunes на своем компьютере.
  • Найдите элемент, на который хотите установить ссылку.
  • Щелкните правой кнопкой мыши или щелкните правой кнопкой мыши на имени элемента в iTunes, затем выберите "Копировать URL магазина iTunes Store" во всплывающем меню.
  • В вашем приложении создайте объект NSURL с скопированной iTunes URL, затем передайте этот объект в метод openURL: UIApplication для откройте свой элемент в App Store.

Пример кода:

NSString *iTunesLink = @"itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Скопировано из здесь.

Ответ 3

Я хотел бы предоставить ответ для пользователя Xamarin. Следующее приведет к обновлению предложения для предупреждения, а затем приведет пользователя в магазин.

async void PromptForVersionUpgrade()
{
        var alertController = UIAlertController.Create(Messages.NewVersionTitle, Messages.NewVersionText, UIAlertControllerStyle.Alert);

        alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));

        alertController.AddAction(UIAlertAction.Create(Messages.NewVersionGoToAppStore, UIAlertActionStyle.Default, (obj) =>
        {
            var storeViewController = new SKStoreProductViewController();
            storeViewController.Delegate = this;
            storeViewController.LoadProduct(new StoreProductParameters { ITunesItemIdentifier = 999999999 }, (isLoaded, error) =>
            {
                if (isLoaded)
                    PresentViewController(storeViewController, true, null);
            });
        }));

        PresentViewController(alertController, true, null);
}

Затем контроллер, которому вы вызываете этот код, должен будет реализовать интерфейс "ISKStoreProductViewControllerDelegate", чтобы заставить кнопку "Отменить" работать. Затем 'this' присваивается свойству "Делегат".

public partial class MyCurrentController : ISKStoreProductViewControllerDelegate {

        async void PromptForVersionUpgrade() { ... }

        [Export("productViewControllerDidFinish:")]
        public void Finished(SKStoreProductViewController controller)
        {
            controller.DismissViewController(true, null);
        }

        ...
}