这个demo功能很简单,用AVPlayer实现了音频播放功能,
支持后台播放及锁频状态下控制播放
1.AppDelegate的分类,这里写控制事件
#import "AppDelegate.h"
NS_ASSUME_NONNULL_BEGIN
@interface AppDelegate (audio)
- (void)setLockPlay;
@end
NS_ASSUME_NONNULL_END
#import "AppDelegate+audio.h"
#import "AudioPlayUtil.h"
@implementation AppDelegate (audio)
- (void)setLockPlay{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
- (void)beginReceivingRemoteControlEvents {
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)remoteControlReceivedWithEvent:(UIEvent *)receivedEvent {
if (receivedEvent.type == UIEventTypeRemoteControl) {
switch (receivedEvent.subtype) {
case UIEventSubtypeRemoteControlTogglePlayPause:
[[AudioPlayUtil sharedInstance] audioPause];
break;
case UIEventSubtypeRemoteControlNextTrack:
if ([AudioPlayUtil sharedInstance].playNext) {
[AudioPlayUtil sharedInstance].playNext();
}
break;
case UIEventSubtypeRemoteControlPreviousTrack:
if ([AudioPlayUtil sharedInstance].playUper) {
[AudioPlayUtil sharedInstance].playUper();
}
break;
case UIEventSubtypeRemoteControlPlay:
[[AudioPlayUtil sharedInstance] audioPlay];
break;
case UIEventSubtypeRemoteControlPause:
[[AudioPlayUtil sharedInstance] audioPause];
break;
default:
break;
}
}
}
@end
2.AudioPlayUtil,这里主要是播放的一些方法和监听事件
#import <Foundation/Foundation.h>
#import "playConfig.h"
NS_ASSUME_NONNULL_BEGIN
@interface AudioPlayUtil : NSObject
+ (AudioPlayUtil*)sharedInstance;
- (void)initPlayerWithAudioInfo:(playConfig *)audioInfo;
@property (copy, nonatomic) void (^audioProgressUpdate)(NSMutableDictionary * diction);
@property (copy, nonatomic) void (^playerCompletion)(void);
@property (copy, nonatomic) void (^playNext)(void);
@property (copy, nonatomic) void (^playUper)(void);
//暂停播放
- (void)audioPause;
//开始播放
- (void)audioPlay;
//回退(15)秒
- (void)QuickretreatWithTime:(NSInteger )miao;
//快进(15)秒
- (void)FastforwardWithTime:(NSInteger)miao;
//设置播放进度
- (void)setToTime:(NSInteger)time;
//设置播放倍速
- (void)settingPlayRate:(float)rate;
@end
//播放主要文件
#import "AudioPlayUtil.h"
#import "AVFoundation/AVPlayer.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
static AudioPlayUtil *audioPlayUtil = nil;
@interface AudioPlayUtil ()
@property(nonatomic,assign) id timeObserve;
@property(nonatomic,strong) AVPlayer *player;
@property (nonatomic,assign) BOOL isPlay;
@property (strong, nonatomic) playConfig *config;
//倍速
@property (nonatomic,assign) float rate;
@end
@implementation AudioPlayUtil
+ (AudioPlayUtil*)sharedInstance {