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

Открытие Apple Music из приложения iOS

Контекст. В настоящее время я разрабатываю приложение iOS, которое интегрируется с Apple Music API. Я могу искать песни и воспроизводить их в своем приложении. Чтобы уважать их политику, я должен разрешить пользователю запускать и воспроизводить песню в приложении Apple Music. Shazam делает это для Apple Music, Deezer и Google Play (см. Рисунок ниже).

введите описание изображения здесь

Я сделал это для Spotify, используя этот поток, в основном используя схему URL. На this Reddit thread Я нашел список схем iOS URL Scheme, но я ничего не могу найти о Apple Music - этот запрос в том же потоке подтверждает, что он все еще недоступен.

Не повезло с API Apple Music.

Вопрос: Кто-нибудь знает, как добиться такого же поведения с Apple Music? Кстати, нет необходимости в схемах URL.

Цель здесь - запустить Apple Music и воспроизвести песню в приложении Apple Music, а не в моем приложении. Я уже играю песни из Apple Music в своем приложении.

Я что-то упустил в документах API? Любые мысли будут оценены.

4b9b3361

Ответ 1

Вы должны использовать deeplinks, чтобы открывать кнопки в приложении Apple Music: https://affiliate.itunes.apple.com/resources/documentation/linking-to-the-itunes-music-store/

Прежде всего, вам необходимо запросить авторизацию через API SKCloudServiceController, чтобы проверить свои возможности (например, если ваше устройство позволяет воспроизводить треки Apple Music).

[SKCloudServiceController requestAuthorization:^(SKCloudServiceAuthorizationStatus status) {
        self.cloudServiceController = [[SKCloudServiceController alloc] init];
        [self.cloudServiceController requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) {           
            [self.cloudServiceController requestStorefrontIdentifierWithCompletionHandler:^(NSString * _Nullable storefrontIdentifier,
                                                                                            NSError * _Nullable error) {
                NSString *identifier = [[storefrontIdentifier componentsSeparatedByString:@","] firstObject];
                identifier = [[identifier componentsSeparatedByString:@"-"] firstObject];
                NSString *countryCode = [self countryCodeWithIdentifier:identifier];                  
            }];

        }];
    }];

Затем вы сможете запросить идентификатор магазина, который вы собираетесь использовать для определения кода страны. Я предлагаю включить в проект файл .plist со всеми идентификаторами и соответствующими кодами стран. (здесь вы можете найти файл .plist https://github.com/bendodson/storefront-assistant/blob/master/StorefrontCountries.plist). Вам нужен код страны для запросов API Apple Music.

- (NSString *)countryCodeWithIdentifier:(NSString *)identifier {
     NSURL *plistURL = [[NSBundle mainBundle] URLForResource:@"CountryCodes" withExtension:@"plist"];
     NSDictionary *countryCodeDictionary = [NSDictionary dictionaryWithContentsOfURL:plistURL];

     return countryCodeDictionary[identifier];
}

После того, как у вас есть соответствующий код страны, вы сможете искать трек в API Apple Music. Сделайте запрос GET https://itunes.apple.com/search, используя следующие параметры:

 NSDictionary *parameters = @{
                               @"isStreamable" : @(YES),
                               @"term" : @"your search parameter"
                               @"media" : @"music",
                               @"limit" : @(5),
                               @"country" : @"your country code"
                               };

В ответ на этот запрос вы получите массив результатов трассировки с большим количеством параметров. Одним из них является "trackViewUrl". Просто добавьте следующие параметры в trackViewUrl, чтобы сделать его глубоким связыванием с приложением Apple Music:

NSString *appleMusicDeepLinking = [NSString stringWithFormat:@"%@&mt=1&app=music", response[0][@"trackViewUrl"]];

Ответ 2

В этом сообщении SO есть пример кода, который может оказаться полезным: воспроизводить песни с яблочной музыкой сторонними приложениями. Мне удалось активировать плеер и воспроизвести песню:

#import <MediaPlayer/MediaPlayer.h>

[[MPMusicPlayerController systemMusicPlayer] setQueueWithStoreIDs:tracks];
[[MPMusicPlayerController systemMusicPlayer] play];

Также здесь представлена ​​документация API Apple Music:

Лучшая практика Apple Music для разработчиков приложений

Часто задаваемые вопросы API Apple Music

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