iOS10.3.x 无法在 MPMusicPlayer 上为 Apple Music 曲目设置播放项目
Posted
技术标签:
【中文标题】iOS10.3.x 无法在 MPMusicPlayer 上为 Apple Music 曲目设置播放项目【英文标题】:iOS10.3.x Can't set nowPlayingItem on MPMusicPlayer for Apple Music tracks 【发布时间】:2017-04-14 15:45:36 【问题描述】:我有一个已发布的应用程序,刚开始在 MPMusicPlayer 上为 Apple Music 曲目设置 nowPlayingItem 时遇到问题。此代码对设备上的 iTunes 曲目按预期工作,但如果媒体项集是 Apple Music 曲目,则最终会播放用户 Apple Music 库中的随机曲目(但不在当前播放器队列中)。我怀疑 ios10.3.x 中发生了一些变化,或者 Apple Music 刚刚开始播放。有人知道我该如何解决这个问题吗?
基本代码是:
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 设置为 Blame 2017-04-14 09:43:14.761134-0400 MyFitnessDJ[720:241825] 现在播放项目是:(null) 2017-04-14 09:43:14.819226-0400 MyFitnessDJ[720:241825] >>>>>>> 现在播放不等于当前曲目,所以返回并抓头
有没有人知道为什么现在正在播放的项目在 iOS10.3.x 中无法设置为正确的 Apple Music 曲目,或者 Apple Music 中可能有 burb?
【问题讨论】:
【参考方案1】:似乎在尝试设置 nowPlayingItem
之前过早停止音乐播放器会导致音乐播放器播放随机曲目。还是不明白为什么,但是如果音乐播放器没有停止,可以设置nowPlayingItem
。
【讨论】:
我也经历过同样的事情。感谢这篇文章,因为它节省了我在我的应用程序中寻找原因的时间!在我的应用程序中,我还注意到,如果我设置队列然后设置 nowPlayingItem,它会起作用 - 所以顺序是 -.stop > .setQueue > .nowPlayingItem > .play
。【参考方案2】:
如果有人因为 iOS 11 中的类似问题而看到这篇文章,我又会遇到同样的问题。保持 musicPlayer 播放不起作用,wayneh 的上述解决方案也不起作用。
从 iOS11 通用版本开始,尝试在播放(或不播放)MPMusicPlayerController 上设置 nowPlayingItem 会产生意外结果。有时,它会挂起系统长达 5 秒,然后可能会播放请求的曲目,或者有时它会挂起长达 5 秒并播放不同的曲目(设备上的曲目,但不一定在队列中),或者有时是之前的曲目继续播放曲目,通话没有明显影响。哦,有时它会按预期立即播放请求的曲目 ;-)
如果有人有任何运气使这项工作始终如一,请发布。
【讨论】:
以上是关于iOS10.3.x 无法在 MPMusicPlayer 上为 Apple Music 曲目设置播放项目的主要内容,如果未能解决你的问题,请参考以下文章
iPhone5/iPad4从10.3.3降级8.4.1详细教程!
用matlab来编写一个函数计算:f(x)在x《=1时,f(x)=x,当x>1&x<10时f(x)=2*x-1,当x>=10时,f(x)=3*x;