Nei*_*sei 9 remote-control ios ios7 control-center
使用ios 7音乐应用程序播放歌曲时,用户可以使用滑块更改锁定屏幕/控制中心中的歌曲位置.滑块处于活动状态:

但是当我在我的应用程序中播放音乐时,用户无法做到.滑块未激活:

如何在我的应用中启用这些功能?
Nei*_*sei 13
您可以借助iOS 9.1及更高版本上的MPRemoteCommandCenter更改曲目位置.
if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_0) {
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
[commandCenter.changePlaybackPositionCommand setEnabled:true];
[commandCenter.changePlaybackPositionCommand addTarget:self action:@selector(changedThumbSliderOnLockScreen:)];
}
Run Code Online (Sandbox Code Playgroud)
和方法
- (MPRemoteCommandHandlerStatus)changedThumbSliderOnLockScreen:(MPChangePlaybackPositionCommandEvent *)event
{
// change position
[self setCurrentPlaybackTime:event.positionTime];
// update MPNowPlayingInfoPropertyElapsedPlaybackTime
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];
return MPRemoteCommandHandlerStatusSuccess;
}
Run Code Online (Sandbox Code Playgroud)
我一直在寻找同样的东西,但我认为这是不可能的,请参阅这篇文章:
Spotify 和 Soundcloud 等流行应用程序也没有实现这一点。
如果您正在寻找一种在锁定屏幕上显示当前音乐的方法,您需要执行以下操作。
首先,当您播放新曲目时更新 NowPlayingInfo :
NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
[songInfo setObject:trackTitle forKey:MPMediaItemPropertyTitle];
[songInfo setObject:artistName forKey:MPMediaItemPropertyArtist];
[songInfo setObject:duration forKey:MPMediaItemPropertyPlaybackDuration];
[songInfo setObject:releaseDate forKey:MPMediaItemPropertyReleaseDate];
[songInfo setValue:playbackRate forKey:MPNowPlayingInfoPropertyPlaybackRate];
[songInfo setObject:elapsedTime forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
[songInfo setObject:albumArtImage forKey:MPMediaItemPropertyArtwork];
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];
Run Code Online (Sandbox Code Playgroud)
要处理来自锁屏的事件,您首先需要告诉您的应用程序开始接收来自遥控器的事件。我使用以下代码在我的 AppDelegate 的应用程序 didFinishLaunchingWithOptions 中执行此操作
// Turn on remote control event delivery
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Run Code Online (Sandbox Code Playgroud)
接下来您需要实现 remoteControlReceivedWithEvent 方法来处理捕获的事件。在 APPDelegate 中添加以下方法
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlPause:
//pause code here
break;
case UIEventSubtypeRemoteControlPlay:
//play code here
break;
case UIEventSubtypeRemoteControlPreviousTrack:
// previous track code here
break;
case UIEventSubtypeRemoteControlNextTrack:
//next track code here
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
}
来自苹果文档的 MPNowPlayingInfoCenter 的更多信息 -> https://developer.apple.com/library/ios/documentation/mediaplayer/reference/MPNowPlayingInfoCenter_Class
swift4 您可以在iOS 9.1及更高版本上借助MPRemoteCommandCenter更改轨道位置。
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.changePlaybackPositionCommand.isEnabled = true
commandCenter.changePlaybackPositionCommand.addTarget(self, action:#selector(changePlaybackPositionCommand(_:)))
Run Code Online (Sandbox Code Playgroud)
和方法
@objc func changePlaybackPositionCommand(_ event:MPChangePlaybackPositionCommandEvent) -> MPRemoteCommandHandlerStatus{
let time = event.positionTime
//use time to update your track time
return MPRemoteCommandHandlerStatus.success;
}
Run Code Online (Sandbox Code Playgroud)
请注意,commandCenter如果要启用它,则必须对每个命令都执行此操作
| 归档时间: |
|
| 查看次数: |
5019 次 |
| 最近记录: |