由第三方应用程序播放苹果音乐歌曲

我在我的应用程序中使用iTunes Search API并使用应用程序播放应用程序内的previewUrl歌曲

AVPlayer

如果用户想要播放完整的歌曲,他/她只需要从iTunes Store购买歌曲,那么他/她可以从应用程序播放完整的歌曲。

由于苹果发布了苹果音乐 &试听或正式会员的全部和允许播放完整的歌曲,是否有可能播放苹果音乐完整的歌曲从我的应用程序如Previewurl通过使用

avplayer或mpmovieplayercontroller

@“Ted Hosmann”谢谢你的回复。

我想从这里分享一些代码

viewcontroller.m

@import StoreKit; -(void) submitAppleMusicTrackWithProductID: (NSString *) productID // productID in US is the last numbers after i= in the share URL from Apple Music { NSLog(@"submitAppleMusic has been called for productID: %@", productID); [SKCloudServiceController requestAuthorization:^(SKCloudServiceAuthorizationStatus status) { NSLog(@"status is %ld", (long)status); SKCloudServiceController *cloudServiceController; cloudServiceController = [[SKCloudServiceController alloc] init]; [cloudServiceController requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) { NSLog(@"%lu %@", (unsigned long)capabilities, error); if (capabilities >= SKCloudServiceCapabilityAddToCloudMusicLibrary) { NSLog(@"You CAN add to iCloud!"); [[MPMediaLibrary defaultMediaLibrary] addItemWithProductID:productID completionHandler:^(NSArray<__kindof MPMediaEntity *> * _Nonnull entities, NSError * _Nullable error) { NSLog(@"added id%@ entities: %@ and error is %@", productID, entities, error); NSArray *tracksToPlay = [NSArray arrayWithObject:productID]; [[MPMusicPlayerController systemMusicPlayer] setQueueWithStoreIDs:tracksToPlay]; [[MPMusicPlayerController systemMusicPlayer] play]; [self performSelectorOnMainThread:@selector(getInfoFromAddedAppleMusicTrack:) withObject:productID waitUntilDone:YES]; }]; } else { NSLog(@"Blast! The ability to add Apple Music track is not there. sigh."); } }]; }]; } -(void) getInfoFromAddedAppleMusicTrack: (NSString *) productID { NSLog(@"FYI - musicplayer duration is: %f", [[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] playbackDuration]); //need to check for both the nowPlaying item and if there is a reported playbackDuration, as there is a variable time between a storeMediaItema and a concreteMediaItem if (([[MPMusicPlayerController systemMusicPlayer] nowPlayingItem]) && ([[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] playbackDuration])) { NSLog(@"Media item is playing: %@",[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem]); NSLog(@"appleProductIDURL: %@",productID); NSLog(@"Ending time: %d",[[[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyPlaybackDuration] intValue]); NSLog(@"Track Name: %@", [[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyTitle]); NSLog(@"Artists Name: %@", [[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyArtist]); } else { NSLog(@"seems the track is not fully loaded so try again in 1 second"); [self performSelector:@selector(getInfoFromAddedAppleMusicTrack:) withObject:productID afterDelay:1.0]; // count loops and jump out if something is wrong - I've never seen more that 7 seconds needed } } 

这里是更新发布的iOS 9.3,有关于访问音乐库和添加苹果音乐曲目的信息… https://developer.apple.com/library/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9_3.html