iOS10.3.x Can';t立即在MPMusicLayer上为苹果音乐曲目设置PlayingItem

iOS10.3.x Can';t立即在MPMusicLayer上为苹果音乐曲目设置PlayingItem,ios,iphone,mpmusicplayercontroller,Ios,Iphone,Mpmusicplayercontroller,我有一个发布的应用程序,刚开始在苹果音乐曲目的MPMusicPlayer上设置nowPlayingItem时遇到问题。此代码在设备上的iTunes曲目中正常工作,但如果mediaitem集是Apple音乐曲目,则用户的Apple音乐库中的随机曲目(但不在当前playerqueue中)最终会播放。我怀疑iOS10.3.x中发生了一些变化,或者苹果音乐正在打嗝。有人知道我该怎么解决这个问题吗 基本代码是: MPMusicPlayerController *musicPlayer; [musicP

我有一个发布的应用程序,刚开始在苹果音乐曲目的MPMusicPlayer上设置nowPlayingItem时遇到问题。此代码在设备上的iTunes曲目中正常工作,但如果mediaitem集是Apple音乐曲目,则用户的Apple音乐库中的随机曲目(但不在当前playerqueue中)最终会播放。我怀疑iOS10.3.x中发生了一些变化,或者苹果音乐正在打嗝。有人知道我该怎么解决这个问题吗

基本代码是:

MPMusicPlayerController *musicPlayer;  
[musicPlayer stop];  
NSLog(@"*** trying to set nowplayingitem to %@", [UIAppDelegate.activeTrack.mediaitem valueForProperty:MPMediaItemPropertyTitle]);  
musicPlayer.nowPlayingItem = UIAppDelegate.activeTrack.mediaitem ;  
NSLog(@"nowplaying item is:%@", musicPlayer.nowPlayingItem.title);  
[musicPlayer play];  
 if (![musicPlayer.nowPlayingItem.title isEqualToString:UIAppDelegate.activeTrack.name]){  
              NSLog(@">>>>>>> now playing does not equal current track so return and scratch head");  
           return;  
                    }  
2017-04-14 09:43:14.535079-0400 MyFitnessDJ[720:241825]***试图将nowplayingitem归咎于此 2017-04-14 09:43:14.761134-0400 MyFitnessDJ[720:241825]正在播放的项目为:(空) 2017-04-14 09:43:14.819226-0400 MyFitnessDJ[720:241825]>>>>>>>>>>>>>>>现在播放的曲目与当前曲目不相等,因此返回并刮头


有人知道为什么nowplaying项目不能使用iOS10.3.x设置为正确的Apple音乐曲目,或者Apple Music中可能有burb吗?

似乎在尝试设置
nowPlayingItem
之前过早停止音乐播放器会导致音乐播放器播放随机曲目。仍然不明白为什么,但如果音乐播放器没有停止,则可以设置
nowPlayingItem

如果有人因为iOS 11中的类似问题而看到这篇文章,我又遇到了同样的问题。保持MusicLayer播放不起作用,wayneh的上述解决方案也不起作用

从iOS11通用版开始,尝试在播放(或不播放)的MPMusicLayerController上设置nowPlayingItem会产生意外的结果。有时,它会将系统挂起5秒钟,然后可能播放请求的曲目;有时它挂起5秒钟,然后播放不同的曲目(设备上的曲目,但不一定在队列中),或者有时先前播放的曲目会继续播放,而呼叫不会产生明显的影响。哦,有时它会像预期的那样立即播放请求的曲目;-)


如果有人有任何运气使这项工作一致,请张贴

我也经历过同样的事情。感谢这篇文章,因为它节省了我在应用程序中查找原因的时间!在我的应用程序中,我还注意到,如果我先设置队列,然后再设置nowPlayingItem,那么它会起作用-因此顺序是-
.stop>.setQueue>.nowPlayingItem>.play