Context: I'm currently developing an iOS app that integrates with Apple Music API. I'm able to search for songs and play them on my app. To respect their policies I've to allow the user to launch and play the song on Apple Music app. Shazam does that for Apple Music, Deezer and Google Play (see image below).
I've done that for Spotify using this thread, basically using a URL scheme. On this Reddit thread I found a list of iOS URL Scheme's, but I can't find anything about Apple Music – this request on the same thread confirms that it's still not available.
No luck with the Apple Music API as well.
Question: Does someone knows how to accomplish the same behavior with Apple Music? Btw, it doesn't necessary needs to be with URL schemes.
The goal here is to launch the Apple Music and play the song into the Apple Music app, not on my app. I'm already playing songs from Apple Music on my app.
Am I missing something on the API docs? Any thoughts will be appreciated.
Method #1. Click on the iPhone It is located under the menu bar. This will open the iTunes settings. Open the Summary You will see the options in the right panel. Find and uncheck the Automatically Sync when iPhone is connected option and save the settings.
If Apple Music stops working, try all the easy things first. This includes restarting the Music app, restarting your computer, and checking to see if Apple Music is down for everyone. If these fail, check to make sure you have the latest updates and more.
You should use deeplinks in order to open tacks in Apple Music app: https://affiliate.itunes.apple.com/resources/documentation/linking-to-the-itunes-music-store/
First of all, you need to request an authorization via SKCloudServiceController API to check your capabilities (e.g., if your device allows playback of Apple Music tracks).
[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];
}];
}];
}];
Next, you'll be able to request the store front identifier, which you are going to use to define your country code. I suggest to include a .plist file in your project with all the identifiers and respective country codes. (you can find the .plist file here https://github.com/bendodson/storefront-assistant/blob/master/StorefrontCountries.plist). You need your country code to the Apple Music API requests.
- (NSString *)countryCodeWithIdentifier:(NSString *)identifier {
NSURL *plistURL = [[NSBundle mainBundle] URLForResource:@"CountryCodes" withExtension:@"plist"];
NSDictionary *countryCodeDictionary = [NSDictionary dictionaryWithContentsOfURL:plistURL];
return countryCodeDictionary[identifier];
}
Once you have the respective country code, you'll be able to search for a track in the Apple Music's API. Make a request to GET https: //itunes.apple.com/search using the following parameters:
NSDictionary *parameters = @{
@"isStreamable" : @(YES),
@"term" : @"your search parameter"
@"media" : @"music",
@"limit" : @(5),
@"country" : @"your country code"
};
As a response of this request, you'll receive an array of track results, with lots of parameters associated. One of them is the "trackViewUrl". Just add the following parameters to this trackViewUrl in order to make it deep linking to Apple Music app:
NSString *appleMusicDeepLinking = [NSString stringWithFormat:@"%@&mt=1&app=music", response[0][@"trackViewUrl"]];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With