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

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

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

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

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

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

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

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


person antonioduarte    schedule 09.11.2016    source источник
comment
О какой политике вы говорите, что вам нужно разрешить пользователям открывать песню в Apple Music?   -  person Jordi Bruin    schedule 10.12.2016


Ответы (2)


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

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

- (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"]];
person Flavio Bittencourt    schedule 10.11.2016
comment
Кажется, правильно, попробую здесь. Спасибо! - person antonioduarte; 10.11.2016

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

#import <MediaPlayer/MediaPlayer.h>

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

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

Рекомендации Apple Music для разработчиков приложений

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

Я надеюсь, что это помогает.

person Alex    schedule 10.11.2016
comment
Это уже делается в приложении, но это не то, что я ищу. Я хочу иметь возможность запускать Apple Music из своего приложения и воспроизводить там песню. - person antonioduarte; 10.11.2016