如何使用“应用寄存器进行位置更新”后台模式在后台播放音频文件

时间:2013-07-09 10:13:44

标签: ios audio background location

我在我的应用程序中使用“应用程序寄存器进行位置更新”后台模式以从后台获取位置信息。我的要求是,我需要播放音频文件,如果用户更近(约100米)到预定义地点。当应用程序处于活动状态(前景)但它没有从后台播放任何音频时,此功能正常。

  self.locationManager = [[CLLocationManager alloc]init ];
  self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
  self.locationManager.distanceFilter = kCLDistanceFilterNone;
  self.locationManager.delegate = self;
 [self.locationManager startUpdatingLocation];


 // delegate method
 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationDistance distance = [newLocation distanceFromLocation:definedLocation];
 //Check the distance between the newLocation and userDefinedLOcation
if (distance <=100.00) {
     NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@.wav", [[NSBundle mainBundle] resourcePath],[[NSUserDefaults standardUserDefaults]valueForKey:@"alarmSound"]]];
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
player.numberOfLoops = -1;
player.currentTime = 0;
player.volume =1;
player.delegate=self;
[player prepareToPlay];
  [player play];

}
}

如何使用“应用寄存器进行位置更新”后台模式在后台播放音频文件,帮助我实现这一目标。我的应用程序因为之前使用“app播放音频”后台模式而被拒绝。所以我不想使用音频后台模式。 任何帮助都是适当的。

1 个答案:

答案 0 :(得分:0)

您是否明确设置了音频会话类别?

音频会话编程指南有一个有用的部分“选择最佳类别”,它描述了不同的选项: Audio Session Programming Guide

我现在不在Mac前面,所以我无法测试。但是我怀疑在你的应用程序多任务处理时,将以下内容添加到viewDidLoad方法可能会有所帮助。

NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];