通过第三方应用程序播放苹果音乐歌曲 [英] play apple music songs by third party applications

查看:246
本文介绍了通过第三方应用程序播放苹果音乐歌曲的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using iTunes Search API in my application & playing the previewUrl songs from within the application by using


AVPlayer

AVPlayer

如果用户想播放完整的歌曲,他/她需要从iTunes商店购买这首歌,然后他/她才能播放完整的歌曲。申请。

If user wants to play the full song, he/she needs to purchase the song from iTunes Stores only then can he/she play the full song from application.

随着苹果发布 Apple Music &给予每个人的审判或正式会员资格。允许播放完整的歌曲,是否可以使用预览播放 Apple Music 完整歌曲

As apple released the Apple Music & giving the trial OR full membership to every one & allowing to play the full songs, is it possible to play Apple Music full songs from my application Like Previewurl by using

avplayer或mpmovieplayercontroller

avplayer or mpmovieplayercontroller


推荐答案

@Ted Hosmann感谢您的回复。

@"Ted Hosmann" Thanks for reply .

我想分享一些代码来自此处

I would like to share some code from 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
    }  
}

这篇关于通过第三方应用程序播放苹果音乐歌曲的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆