2016-03-15 2 views
6

Я использую iTunes Search API в моем приложении & играет на previewUrl песни из приложения с помощьюигра яблочные музыки песни приложений сторонних

AVPlayer

Если пользователь хочет играть в полную песню , он/она должен купить песню из iTunes Stores только тогда, когда он сможет исполнить полную песню из приложения.

Как яблоко выпустила Apple Music & давая Судебную или полное членство каждому &, позволяющий играть полные песни, можно играть Apple Music полные песни из моего приложения Как Previewurl с помощью

AVPlayer или mpmovieplayercontroller

ответ

4

@ «Тед Хосманн» Спасибо за ответ.

Я хотел бы поделиться некоторый код из here

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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^