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 曲目设置播放项目的主要内容,如果未能解决你的问题,请参考以下文章

把iPhone8切开做成戒指,全球仅此一个,想买吗?

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;

leetcode 每日一题 7.整数反转

编写程序:输入一个4位的整数,然后分别输出组成改4位数的各位数字。

BGP的一网双平面