Ios MPNowPlayingFocenter播放暂停图像未更改
我正在使用下面的代码。一旦应用程序进入后台,这段代码就能正常工作。若应用程序并没有进入后台,我们尝试播放和暂停当前播放的歌曲,那个么播放和暂停图像不会改变。Ad每次断点在此Ios MPNowPlayingFocenter播放暂停图像未更改,ios,objective-c,mpnowplayinginfocenter,Ios,Objective C,Mpnowplayinginfocenter,我正在使用下面的代码。一旦应用程序进入后台,这段代码就能正常工作。若应用程序并没有进入后台,我们尝试播放和暂停当前播放的歌曲,那个么播放和暂停图像不会改变。Ad每次断点在此案例中移动时,UIEventSubjectRemoteControlPause:案例 albumArt= [[MPMediaItemArtwork alloc] initWithImage: img.image]; NSDictionary *playingNowInfo = @{MPMediaItem
案例中移动时,UIEventSubjectRemoteControlPause:
案例
albumArt= [[MPMediaItemArtwork alloc] initWithImage: img.image];
NSDictionary *playingNowInfo = @{MPMediaItemPropertyTitle: (self.currentItem.songname==nil) ? (@"") : (self.currentItem.songname),
MPMediaItemPropertyPlaybackDuration: @(self.currentItem.duration),
MPMediaItemPropertyArtist:[MusicSetting getArtistName],
MPMediaItemPropertyAlbumTitle:(self.currentItem.albumname==nil) ? (@"") : (self.currentItem.albumname),
MPNowPlayingInfoPropertyPlaybackRate: @(self.player.rate),
MPNowPlayingInfoPropertyElapsedPlaybackTime: @(CMTimeGetSeconds(self.player.currentItem.currentTime)),
MPMediaItemPropertyArtwork:albumArt,
};
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = playingNowInfo;
#pragma mark - Remote Control
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
// [self.manager remoteControlReceivedWithEvent:receivedEvent];
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlPlay:
[self Onclick_Play_Pause:self];
break;
case UIEventSubtypeRemoteControlPause:
[self Onclick_Play_Pause:self];
break;
case UIEventSubtypeRemoteControlTogglePlayPause:
//if ([self.manager.player isPlaying])
if(self.manager.player.rate != 0)
{
[self.manager.player pause];
}
else {
[self.manager.player play];
}
break;
case UIEventSubtypeRemoteControlNextTrack:
[self Onclick_next:self];
NSLog(@"Next song play");
break;
case UIEventSubtypeRemoteControlPreviousTrack:
[self Onclick_prev:self];
NSLog(@"Prev song play");
break;
default:
break;
}
}
}
- (IBAction)Onclick_Play_Pause:(id)sender {
(AppObj).playerview_height=playviewHeight;
if(self.manager.player.rate != 0)
{
[MusicSetting set_SongStatus:@"Pause"];
[self.Play_PauseBtn setImage:[UIImage imageNamed:@"pauseImg"] forState:UIControlStateNormal];
[self.manager pause];
}
else {
[MusicSetting set_SongStatus:@"Play"];
[MusicSetting set_isMusicPlay:@"Playing"];
[self.Play_PauseBtn setImage:[UIImage imageNamed:@"playImg"] forState:UIControlStateNormal];
[self.manager play];
}
}
谢谢 您好,请检查是否在info.plist中添加了以下内容
您有以下代码
case UIEventSubtypeRemoteControlPlay:
[self Onclick_Play_Pause:self];
break;
case UIEventSubtypeRemoteControlPause:
[self Onclick_Play_Pause:self];
break;
case UIEventSubtypeRemoteControlTogglePlayPause:
//if ([self.manager.player isPlaying])
if(self.manager.player.rate != 0)
{
[self.manager.player pause];
}
else {
[self.manager.player play];
}
break;
在前两种情况下,你调用了你的方法,但在第三种情况下没有调用。你能分享你方法的定义吗?请上传你的
-(iAction)Onclick\u Play\u Pause:(id)sender
此事件音乐停止了吗?@monikapel你也问了同样的问题,请不要在没有阅读自己评论的情况下发表评论。
- (IBAction)Onclick_Play_Pause:(id)sender {
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
NSMutableDictionary *playingInfo = [NSMutableDictionary dictionaryWithDictionary:center.nowPlayingInfo];
(AppObj).playerview_height=playviewHeight;
if(self.manager.player.rate != 0)
{
[MusicSetting set_SongStatus:@"Pause"];
[self.Play_PauseBtn setImage:[UIImage imageNamed:@"pauseImg"] forState:UIControlStateNormal];
[self.manager pause];
//set playback rate
[playingInfo setObject:[NSNumber numberWithFloat:0] forKey:MPNowPlayingInfoPropertyPlaybackRate];
}
else
{
[MusicSetting set_SongStatus:@"Play"];
[MusicSetting set_isMusicPlay:@"Playing"];
[self.Play_PauseBtn setImage:[UIImage imageNamed:@"playImg"] forState:UIControlStateNormal];
[self.manager play];
//set playback rate
[playingInfo setObject:[NSNumber numberWithFloat:1] forKey:MPNowPlayingInfoPropertyPlaybackRate];
}
center.nowPlayingInfo = playingInfo;
}