Вопрос

Я создаю бесплатную версию моей игры для iPhone.Я хочу, чтобы внутри бесплатной версии была кнопка, которая переводила бы людей на платную версию в App Store.Если я использую стандартную ссылку

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

iPhone сначала открывает Safari, а затем app Store.Я использовал другие приложения, которые напрямую открывают App Store, поэтому я знаю, что это возможно.

Есть какие-нибудь идеи?Какова схема URL-адресов для App Store?

Это было полезно?

Решение

Изменено 2016-02-02

Начиная с iOS 6 SKStoreProductViewController Swift 3.x / 2.x и Objective-C : здесь .

  

Объект SKStoreProductViewController представляет магазин, который позволяет   Пользователь может купить другие носители в App Store. Например, ваше приложение   может отобразить магазин, чтобы позволить пользователю приобрести другое приложение.

<Ч>

От Новости и объявления для разработчиков Apple .

  

Привлекайте клиентов прямо в свое приложение   в App Store с помощью iTunes Links   С помощью ссылок 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/content /qa/qa1633/_index.html .

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

Ссылки

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

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

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

    Swift 4.2

       let urlStr = "itms-apps://itunes.apple.com/app/apple-store/id375380948?mt=8"
        if #available(iOS 10.0, *) {
            UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)
    
        } else {
            UIApplication.shared.openURL(URL(string: urlStr)!)
        }
    

    Другие советы

    Если вы хотите открыть приложение непосредственно в App Store, вам следует использовать:

    itms-приложения://...

    Таким образом, он напрямую откроет приложение App Store на устройстве, вместо того, чтобы сначала заходить в iTunes, а затем открывать только App Store (при использовании только itms: //)

    Надеюсь, это поможет.


    Редактировать:АПРЕЛЬ 2017 года.itms-apps:// на самом деле снова работает в iOS10.Я проверил это.

    Редактировать:Апрель 2013 года.Это больше не работает в iOS5 и выше.Просто используй

    https://itunes.apple.com/app/id378458261
    

    и перенаправлений больше нет.

    Начиная с iOS 6, правильный способ сделать это с помощью SKStoreProductViewController - Контроллер просмотра класс.

    Swift 3.x:

    func openStoreProductWithiTunesItemIdentifier(identifier: String) {
        let storeViewController = SKStoreProductViewController()
        storeViewController.delegate = self
    
        let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
        storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
            if loaded {
                // Parent class of self is UIViewContorller
                self?.present(storeViewController, animated: true, completion: nil)
            }
        }
    }
    
    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        viewController.dismiss(animated: true, completion: nil)
    }
    // Usage:
    openStoreProductWithiTunesItemIdentifier(identifier: "13432")
    

    Вы можете получить идентификатор элемента приложения itunes следующим образом:(вместо статического)

    Swift 3.2

    var appID: String = infoDictionary["CFBundleIdentifier"]
    var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
    var data = Data(contentsOf: url!)
    var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
    var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
    openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)
    

    Swift 2.x:

    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")
    

    цель-C:

    static NSInteger const kAppITunesItemIdentifier = 324684580;
    [self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];
    
    - (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
        SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];
    
        storeViewController.delegate = self;
    
        NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];
    
        NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
        UIViewController *viewController = self.window.rootViewController;
        [storeViewController loadProductWithParameters:parameters
                                       completionBlock:^(BOOL result, NSError *error) {
                                           if (result)
                                               [viewController presentViewController:storeViewController
                                                                  animated:YES
                                                                completion:nil];
                                           else NSLog(@"SKStoreProductViewController: %@", error);
                                       }];
    
        [storeViewController release];
    }
    
    #pragma mark - SKStoreProductViewControllerDelegate
    
    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
        [viewController dismissViewControllerAnimated:YES completion:nil];
    }
    

    Вы можете получить kAppITunesItemIdentifier (идентификатор элемента приложения itunes) примерно так:(вместо статического)

    NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
        NSString* appID = infoDictionary[@"CFBundleIdentifier"];
        NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
        NSData* data = [NSData dataWithContentsOfURL:url];
        NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
        NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
        [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];
    

    На лето 2015 года ...

    -(IBAction)clickedUpdate
    {
        NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
    }
    

    замените 'id1234567890' на 'id' и 'ваш десятизначный номер'

    <Ол>
  • Это прекрасно работает на всех устройствах .

  • Он действительно направляется прямо в магазин приложений, без перенаправлений.

  • В порядке для всех национальных магазинов .

  • Это правда, что вы должны перейти на использование loadProductWithParameters, , но , если цель ссылки - обновить приложение, в котором вы фактически находитесь: возможно, лучше использовать этот " старомодный " подход.

  • Apple только что анонсировала appstore.com URL-адреса.

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

    Существует три типа коротких ссылок App Store в двух формах: одна для приложений iOS, другая для приложений Mac:

    Название компании

    iOS: http://appstore.com/ например, http://appstore.com/apple

    Mac: http://appstore.com/mac/ например, http://appstore.com/mac/apple

    Название приложения

    iOS: http://appstore.com/ например, http://appstore.com/keynote

    Mac: http://appstore.com/mac/ например, http://appstore.com/mac/keynote

    Приложение от компании

    iOS: http://appstore.com// например, http://appstore.com/apple/keynote

    Mac: http://appstore.com/mac// например, http://appstore.com/mac/apple/keynote

    У большинства компаний и приложений есть короткая ссылка на canonical App Store.Этот канонический URL создается путем изменения или удаления определенных символов (многие из которых являются незаконными или имеют особое значение в URL (например, "&")).

    Чтобы создать короткую ссылку на App Store, примените следующие правила к названию вашей компании или приложения:

    Удалите все пробелы

    Преобразуйте все символы в нижний регистр

    Удалите все символы авторских прав (©), товарных знаков (™) и зарегистрированных товарных знаков (®)

    Замените амперсанды ("&") на "и".

    Удалите большую часть знаков препинания (набор см. В листинге 2).

    Замените акцентированные и другие "оформленные" символы (ü, å и т.д.) их элементарным символом (u, a и т.д.).

    Оставьте все остальные символы как есть.

    Список 2 знаков препинания, которые необходимо удалить.

    !¡"#$%'()*+,-./:;<=>¿?@[]^_`{|}~

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

    App Store

    Примеры названия компании

    Gameloft => http://appstore.com/gameloft

    Activision Publishing, Inc.=> http://appstore.com/activisionpublishinginc

    Фотографии и программное обеспечение Чена => http://appstore.com/chensphotographyandsoftware

    Примеры названий приложений

    Окарина => http://appstore.com/ocarina

    Где Мой Перри?=> http://appstore.com/wheresmyperry

    Brain Challenge™ => Мозговой вызов http://appstore.com/brainchallenge

    Этот код генерирует ссылку на App Store в iOS

    NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];
    

    Замените itms-приложения на http на Mac:

    NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 
    

    Открытый URL-адрес на iOS:

    [[UIApplication sharedApplication] openURL:appStoreURL];
    

    Mac:

    [[NSWorkspace sharedWorkspace] openURL:appStoreURL];
    

    Просто измените «itunes» на «Фобос» в ссылке на приложение.

    http: // phobos. apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

    Теперь он откроет App Store напрямую

    Чтобы иметь прямую ссылку без перенаправления:

    <Ол>
  • Используйте средство для создания ссылок iTunes http://itunes.apple.com/linkmaker/ , чтобы получить реальная прямая ссылка
  • Замените http:// на itms-apps://
  • Откройте ссылку с помощью [[UIApplication sharedApplication] openURL:url];
  • Будьте осторожны, эти ссылки работают только на реальных устройствах, а не в симуляторе.

    Источник: https://developer.apple.com/library /ios/#qa/qa2008/qa1629.html

    Это отлично сработало, используя только идентификатор приложения:

     NSString *urlString = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",YOUR_APP_ID];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
    

    Количество перенаправлений равно нулю.

    В ряде ответов предлагается использовать «itms» или «itms-apps», но Apple не рекомендует эту практику. Они предлагают только следующий способ открыть App Store:

    Листинг 1 Запуск App Store из приложения для iOS

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

    См. https://developer.apple.com/library/ios /qa/qa1629/_index.html последний раз обновлялся в марте 2014 года с момента ответа.

    Для приложений, поддерживающих iOS 6 и выше, Apple предлагает встроенный механизм представления магазина приложений: SKStoreProductViewController

    - (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;
    
    // Example:
    SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
    spvc.delegate = self;
    [spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
        if (error)
            // Show sorry
        else
            // Present spvc
    }];
    

    Обратите внимание, что в iOS6 блок завершения может не вызываться при наличии ошибок. Похоже, это ошибка, которая была устранена в iOS 7.

    Если вы хотите сослаться на приложения разработчика, а имя разработчика содержит знаки препинания или пробелы (например, Development Company, LLC), создайте свой URL следующим образом:

    itms-apps://itunes.com/apps/DevelopmentCompanyLLC
    

    В противном случае возвращается " этот запрос не может быть обработан " на iOS 4.3.3

    Вы можете получить ссылку на определенный элемент в магазине приложений или iTunes через производителя ссылок по адресу: http://itunes.apple.com/linkmaker/

    Это работает и напрямую связывается в ios5

    NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
    

    Это простой и короткий способ перенаправить / связать другое существующее приложение в магазине приложений.

     NSString *customURL = @"http://itunes.apple.com/app/id951386316";
    
     if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
     {
           [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
     } 
    

    Для Xcode 9.1 и Swift 4:

    1. Импорт StoreKit:
    import StoreKit
    

    2. Соблюдайте протокол

    SKStoreProductViewControllerDelegate
    

    3. Внедрить протокол

    func openStoreProductWithiTunesItemIdentifier(identifier: String) {
        let storeViewController = SKStoreProductViewController()
        storeViewController.delegate = self
    
        let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
        storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
    
            if loaded {
                // Parent class of self is UIViewContorller
                self?.present(storeViewController, animated: true, completion: nil)
            }
        }   
    }
    

    3.1

    func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
        viewController.dismiss(animated: true, completion: nil)
    }
    
    1. Как использовать:
    openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")
    

    Примечание:

    Очень важно ввести точный идентификатор вашего приложения.Потому что это вызывает ошибку (не показывает журнал ошибок, но из-за этого ничего не работает нормально)

    Я могу подтвердить, что если вы создаете приложение в iTunes connect, вы получаете свой идентификатор приложения перед его отправкой.

    Следовательно..

    itms-apps://itunes.apple.com/app/id123456789
    
    NSURL *appStoreURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/id123456789"];
        if ([[UIApplication sharedApplication]canOpenURL:appStoreURL])
            [[UIApplication sharedApplication]openURL:appStoreURL];
    

    Работает с удовольствием

    Создание ссылки может стать сложной проблемой при поддержке нескольких ОС и нескольких платформ. Например, WebObjects не поддерживается в iOS 7 (некоторые из них), некоторые ссылки, которые вы создадите, откроют магазин в другой стране, чем пользователь и т. Д.

    Существует библиотека с открытым исходным кодом iLink , которая может вам помочь.

    Преимущества этой библиотеки в том, что ссылки будут найдены и созданы во время выполнения (библиотека проверит идентификатор приложения и ОС, в которой она работает, и выяснит, какая ссылка должна быть создано). Лучшее в этом то, что вам не нужно ничего настраивать, прежде чем использовать его, так что это безошибочно и будет работать всегда. Это также хорошо, если у вас мало целей в одном проекте, поэтому вам не нужно помнить, какой идентификатор приложения или ссылку использовать. Эта библиотека также предложит пользователю обновить приложение, если в магазине появится новая версия (она встроена, и вы отключите ее простым флагом), указывающей на страницу обновления для приложения, если пользователь согласится.

    Скопируйте 2 файла библиотеки в свой проект (iLink.h & amp; iLink.m).

    В вашем appDelegate.m:

    #import "iLink.h"
    
    + (void)initialize
    {
        //configure iLink
        [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
    }
    

    и там, где вы хотите открыть страницу рейтинга, просто используйте:

    [[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 
    

    Не забудьте импортировать iLink.h в тот же файл.

    Там есть очень хороший документ для всей библиотеки и примеры проектов для iPhone и Mac.

    По крайней мере, iOS 9 и выше

    • Открывайте прямо в App Store

    Приложение

    itms-apps://itunes.apple.com/app/[appName]/[appID]
    

    Список приложений разработчика

    itms-apps://itunes.apple.com/developer/[developerName]/[developerID]
    

    Согласно последнему документу Apple Вам нужно использовать

    appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  
    

    или

    SKStoreProductViewController 
    

    Если у вас есть идентификатор магазина приложений, лучше всего его использовать. Особенно, если вы в будущем можете изменить название приложения.

    http://itunes.apple.com/app/id378458261
    

    Если у вас нет идентификатора магазина приложений, вы можете создать URL на основе этой документации https://developer.apple.com/library/ios/qa/qa1633/_index.html

    + (NSURL *)appStoreURL
    {
        static NSURL *appStoreURL;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            appStoreURL = [self appStoreURLFromBundleName:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]];
        });
        return appStoreURL;
    }
    
    + (NSURL *)appStoreURLFromBundleName:(NSString *)bundleName
    {
        NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@", [self sanitizeAppStoreResourceSpecifier:bundleName]]];
        return appStoreURL;
    }
    
    + (NSString *)sanitizeAppStoreResourceSpecifier:(NSString *)resourceSpecifier
    {
        /*
         https://developer.apple.com/library/ios/qa/qa1633/_index.html
         To create an App Store Short Link, apply the following rules to your company or app name:
    
         Remove all whitespace
         Convert all characters to lower-case
         Remove all copyright (©), trademark (™) and registered mark (®) symbols
         Replace ampersands ("&") with "and"
         Remove most punctuation (See Listing 2 for the set)
         Replace accented and other "decorated" characters (ü, å, etc.) with their elemental character (u, a, etc.)
         Leave all other characters as-is.
         */
        resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"&" withString:@"and"];
        resourceSpecifier = [[NSString alloc] initWithData:[resourceSpecifier dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES] encoding:NSASCIIStringEncoding];
        resourceSpecifier = [resourceSpecifier stringByReplacingOccurrencesOfString:@"[!¡\"#$%'()*+,-./:;<=>¿?@\\[\\]\\^_`{|}~\\s\\t\\n]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, resourceSpecifier.length)];
        resourceSpecifier = [resourceSpecifier lowercaseString];
        return resourceSpecifier;
    }
    

    Проходит этот тест

    - (void)testAppStoreURLFromBundleName
    {
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Nuclear™"].absoluteString, @"itms-apps://itunes.com/app/nuclear", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Magazine+"].absoluteString, @"itms-apps://itunes.com/app/magazine", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Karl & CO"].absoluteString, @"itms-apps://itunes.com/app/karlandco", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"[Fluppy fuck]"].absoluteString, @"itms-apps://itunes.com/app/fluppyfuck", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Pollos Hérmanos"].absoluteString, @"itms-apps://itunes.com/app/polloshermanos", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Niños and niñas"].absoluteString, @"itms-apps://itunes.com/app/ninosandninas", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"Trond, MobizMag"].absoluteString, @"itms-apps://itunes.com/app/trondmobizmag", nil);
        STAssertEqualObjects([AGApplicationHelper appStoreURLFromBundleName:@"!__SPECIAL-PLIZES__!"].absoluteString, @"itms-apps://itunes.com/app/specialplizes", nil);
    }
    

    Несмотря на то, что здесь есть множество ответов, ни одно из предложений по ссылкам на приложения для разработчиков, похоже, больше не работает.

    Когда я в последний раз посещал, я смог заставить его работать, используя формат:

    itms-apps://itunes.apple.com/developer/developer-name/id123456789
    

    Это больше не работает, но удаление имени разработчика делает:

    itms-apps://itunes.apple.com/developer/id123456789
    

    Попробуйте этот способ

    http://itunes.apple.com/lookup?id ="ваш идентификатор приложения здесь" возвращает json.Исходя из этого, найдите ключ "trackViewUrl ( Просмотр трека )" а значение - это желаемый URL-адрес.используйте этот URL-адрес (просто замените https:// с itms-apps://). Это работает просто отлично.

    Например, если ваш идентификатор приложения xyz, перейдите по этой ссылке http://itunes.apple.com/lookup?id=xyz

    Затем найдите URL-адрес для ключа "trackViewUrl ( Просмотр трека )". Это URL-адрес вашего приложения в app Store, и чтобы использовать этот URL-адрес в xcode, попробуйте следующее

    NSString *iTunesLink = @"itms-apps://itunes.apple.com/us/app/Your app name/id Your app ID?mt=8&uo=4";
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
    

    Спасибо

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top