iOS自定义控制中心音乐播放 锁屏界面背景图片

简单快速的说明一下如何设置控制中心或锁屏界面的音乐播放控制与图片定制


1. 设置控制中心 内容

需要使用到类 MPNowPlayingInfoCenter

是一个全局单例 通过 defaultCenter获得

它只有一个属性 


// The current now playing info for the center.  // 控制中心当前的信息
// Setting the info to nil will clear it. // 设置为nil 的时候,会清除控制中心的设置

@property (copy, nullable) NSDictionary *nowPlayingInfo;


可以通过设置这个  nowPlayingInfo 来设置

如下:
       

    // 初始化一个可变字典
        NSMutableDictionary *songInfo = [ [NSMutableDictionary alloc] init];
        
        // 初始化一个封面
        MPMediaItemArtwork *albumArt = [ [MPMediaItemArtwork alloc] initWithImage: [UIImage imageNamed:@"about-qqfriends"] ];
        // 设置封面
        [ songInfo setObject: albumArt forKey:MPMediaItemPropertyArtwork ];
        
        // 设置标题
        [ songInfo setObject: @"追梦人" forKey:MPMediaItemPropertyTitle ];
        
        // 设置作者
        [ songInfo setObject: @"作者" forKey:MPMediaItemPropertyArtist ];
        
        // 设置专辑
        [ songInfo setObject: @"唱片集" forKey:MPMediaItemPropertyAlbumTitle ];
        
        // 流派
        [songInfo setObject:@"流派" forKey:MPMediaItemPropertyGenre];
        
        // 设置总时长

        [songInfo setObject:[NSString stringWithFormat:@"%f",_auPlayer.duration] forKey:MPMediaItemPropertyPlaybackDuration];


// 设置

        

        [ [MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo ];


// 更多设置

        
        
        /**
         *  
         .
         // MPMediaItemPropertyAlbumTitle // 专辑名
         // MPMediaItemPropertyAlbumTrackCount  // 专辑个数
         // MPMediaItemPropertyAlbumTrackNumber // 当前播放的专辑位置
         // MPMediaItemPropertyArtist   // 艺术家
         // MPMediaItemPropertyArtwork  // 封面
         // MPMediaItemPropertyComposer // 作曲家
         // MPMediaItemPropertyDiscCount    // 迪斯科 数量
         // MPMediaItemPropertyDiscNumber   // 当前位置
         // MPMediaItemPropertyGenre    // 流派
         // MPMediaItemPropertyPersistentID // ID
         // MPMediaItemPropertyPlaybackDuration // 后台播放时长
         // MPMediaItemPropertyTitle    // 标题
         
         // 已经播放的时间
          NSString *const MPNowPlayingInfoPropertyElapsedPlaybackTime NS_AVAILABLE_IOS(5_0); // NSNumber (double)
         
         // 当前正在播放的item 后台播放的 速率,默认是1.0,如果没有特殊需要,设置为1.0
         // The playback rate of the now playing item, with 1.0 representing normal
         // playback. For example, 2.0 would represent playback at twice the normal rate.
         // If not specified, assumed to be 1.0.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackRate NS_AVAILABLE_IOS(5_0); // NSNumber (double)
         
         
         // 默认的后台播放速率
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyDefaultPlaybackRate NS_AVAILABLE_IOS(8_0); // NSNumber (double)
         
         // 当前播放的item 在 当前播放队列的位置
         // The index of the now playing item in the application's playback queue.
         // Note that the queue uses zero-based indexing, so the index of the first item
         // would be 0 if the item should be displayed as "item 1 of 10".
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackQueueIndex NS_AVAILABLE_IOS(5_0); // NSNumber (NSUInteger)
         
         // 总的播放队列个数
         // The total number of items in the application's playback queue.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyPlaybackQueueCount NS_AVAILABLE_IOS(5_0); // NSNumber (NSUInteger)
         
         // 当前播放的章节
         // The chapter currently being played. Note that this is zero-based.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyChapterNumber NS_AVAILABLE_IOS(5_0); // NSNumber (NSUInteger)
         
         // 总的章节数
         // The total number of chapters in the now playing item.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyChapterCount NS_AVAILABLE_IOS(5_0); // NSNumber (NSUInteger)
         
         // 可用的语言选项 注意:同时只有一个语言能够使用
         // A list of available language option groups in the now playing item
         // Only one language option in a given group can be played at once.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyAvailableLanguageOptions NS_AVAILABLE_IOS(9_0); // NSArrayRef of MPNowPlayingInfoLanguageOptionGroup
         
         // 当前播放的语言选项
         // A list of currently active language options in the now playing item.
         MP_EXTERN NSString *const MPNowPlayingInfoPropertyCurrentLanguageOptions NS_AVAILABLE_IOS(9_0); // NSArray of MPNowPlayingInfoLanguageOption
         .
         .
         .
        */

2. 监控和设置控制中心的按钮响应  MPRemoteCommandCenter

全局单例  通过 [MPRemoteCommandCenter sharedCommandCenter] 获得

举例:

监控暂停按钮:

MPRemoteCommand * pause = [[MPRemoteCommandCenter sharedCommandCenter] pauseCommand] ;
    pause.enabled = YES;
    // 注意 只有添加响应时间之后,在控制中心才会显示暂停按钮
    // 建议:暂停和播放按钮都要添加事件
    [pause addTarget:self action:@selector(pause:)];


-(void)pause:(MPRemoteCommandEvent*)comm{
    [_auPlayer pause];
    NSLog(@"暂停");
}


同理:

@property (nonatomic, readonly) MPRemoteCommand *pauseCommand;// 暂停
@property (nonatomic, readonly) MPRemoteCommand *playCommand;// 开始
@property (nonatomic, readonly) MPRemoteCommand *stopCommand;// 停止
@property (nonatomic, readonly) MPFeedbackCommand *likeCommand;// 喜欢
@property (nonatomic, readonly) MPFeedbackCommand *dislikeCommand;// 不喜欢


// Previous/Next Track Commands
@property (nonatomic, readonly) MPRemoteCommand *nextTrackCommand;// 下一首歌
@property (nonatomic, readonly) MPRemoteCommand *previousTrackCommand; // 上一首歌


等等。。。。。。。。。。。。


扩展:MPRemoteCommand 远程响应

@property (nonatomic, assign, getter = isEnabled) BOOL enabled; // 是否可用

- (void)addTarget:(id)target action:(SEL)action; // 添加事件
- (void)removeTarget:(id)target action:(nullable SEL)action ; // 移除事件
- (void)removeTarget:(nullable id)target;




以下的类都是 MPRemoteCommand 的子类

MPFeedbackCommand;简介

@property (nonatomic, assign, getter = isActive) BOOL active; // 是否激活

@property (nonatomic, copy) NSString *localizedTitle; // 标题

@property (nonatomic, copy) NSString *localizedShortTitle // 标题简写



MPRatingCommand 简介

@property (nonatomic, assign) float minimumRating; // 最低速率


@property (nonatomic, assign) float maximumRating; // 最高速率

你可能感兴趣的:(知识库)