I know that there are a lot questions like mine but nothing is working for me.
I'm trying to let the AVPlayer
keep playing when i exit the app, i have implemented the following Singleton Class
:
.h file:
#import <AVFoundation/AVFoundation.h>
#import <Foundation/Foundation.h>
@interface LiveStreamSingleton : NSObject<AVAudioPlayerDelegate>{
}
+(LiveStreamSingleton *)sharedInstance;
-(void)playStream;
-(void)stopStream;
-(bool)status;
@end
.m file:
#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
I have set the [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
for playing in the background, but i tried it on my real ipad, it's not working.
Any ideas?