我知道像我这样的问题有很多,但是没有一个能对我起作用。
我正在尝试让AVPlayer
在退出应用程序时继续播放,我已经实现了以下的Singleton Class
:
.h 文件:
#import <AVFoundation/AVFoundation.h>
#import <Foundation/Foundation.h>
@interface LiveStreamSingleton : NSObject<AVAudioPlayerDelegate>{
}
+(LiveStreamSingleton *)sharedInstance;
-(void)playStream;
-(void)stopStream;
-(bool)status;
@end
.m文件:
#import "LiveStreamSingleton.h"
static LiveStreamSingleton *sharedInstance = nil;
@interface LiveStreamSingleton (){
AVPlayer *audioPlayer;
}
@end
@implementation LiveStreamSingleton
+ (LiveStreamSingleton*) sharedInstance {
static dispatch_once_t _singletonPredicate;
static LiveStreamSingleton *_singleton = nil;
dispatch_once(&_singletonPredicate, ^{
_singleton = [[super allocWithZone:nil] init];
});
return _singleton;
}
+ (id) allocWithZone:(NSZone *)zone {
return [self sharedInstance];
}
-(void)playStream{
//NSError *error = nil;
NSURL *urlStream;
NSString *urlAddress = @"http://198.178.123.23:8662/stream/1/;listen.mp3";
urlStream = [[NSURL alloc] initWithString:urlAddress];
AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:urlStream options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:avAsset];
audioPlayer = [AVPlayer playerWithPlayerItem:playerItem];
//This enables background music playing
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
audioPlayer = [AVPlayer playerWithURL:urlStream];
if(!audioPlayer.error){
NSLog(@"Trying to play from singleton!");
[audioPlayer play];
NSLog(@"rate: %f",audioPlayer.rate);
}
}
-(void)stopStream{
NSLog(@"Trying to stop from singleton!");
[audioPlayer pause];
}
-(bool)status{
bool stat;
if(audioPlayer.rate > 0){
stat = true;
}else{
stat = false;
}
return stat;
}
@end
我已经设置了
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
来使应用在后台播放,但是我在真实的iPad上尝试时,它并没有起作用。
有什么想法吗?