Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在背景模式下播放声音效果_Iphone_Audio_Background - Fatal编程技术网

Iphone 在背景模式下播放声音效果

Iphone 在背景模式下播放声音效果,iphone,audio,background,Iphone,Audio,Background,我需要在iPhone应用程序的背景中播放一些零星的声音效果。根据我在iOS 4上的阅读和体验,只要我运行GPS,我就可以通过将位置指定为后台模式,让我的应用程序在后台运行。这确实有效。但有时我想播放声音效果…换句话说,我所看到的不是连续的声音 但是应用程序正在运行,为什么我不能使用AVAudioPlayer来播放一些声音效果呢?另一个声音API能工作吗 啊 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@

我需要在iPhone应用程序的背景中播放一些零星的声音效果。根据我在iOS 4上的阅读和体验,只要我运行GPS,我就可以通过将位置指定为后台模式,让我的应用程序在后台运行。这确实有效。但有时我想播放声音效果…换句话说,我所看到的不是连续的声音

但是应用程序正在运行,为什么我不能使用AVAudioPlayer来播放一些声音效果呢?另一个声音API能工作吗

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"BEEP" ofType:@"aiff"];
NSURL *fileURL = [[[NSURL alloc] initFileURLWithPath: soundFilePath] autorelease];

AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];

player.volume = 1.0;
[player prepareToPlay];

// play
[player play];

我认为澄清一下您的应用程序不是在后台运行是很重要的。相反,您的应用程序处于“休眠”状态。您指定的info.plist background process值告诉操作系统它应该唤醒您的应用程序并允许它响应特定类型的事件。从

前面的每个值[音频、位置、voip]都让系统知道应该在适当的时间唤醒应用程序以响应相关事件

在您的情况下,您的应用程序被冻结,并且只能响应您指定的位置或GPS事件类型

您不清楚这段代码所处的环境,因此在这一点上,很难告诉您为什么不播放音频。此外,您需要确保您的应用程序正在后台运行,以达到指定的目的。如果您在应用程序中使用定位机制而未使用GPS,则在提交申请时可能会被拒绝


您可能还希望参考,以确保应用程序的结构满足其要求。

我认为澄清您的应用程序不是在后台运行是很重要的。相反,您的应用程序处于“休眠”状态。您指定的info.plist background process值告诉操作系统它应该唤醒您的应用程序并允许它响应特定类型的事件。从

前面的每个值[音频、位置、voip]都让系统知道应该在适当的时间唤醒应用程序以响应相关事件

在您的情况下,您的应用程序被冻结,并且只能响应您指定的位置或GPS事件类型

您不清楚这段代码所处的环境,因此在这一点上,很难告诉您为什么不播放音频。此外,您需要确保您的应用程序正在后台运行,以达到指定的目的。如果您在应用程序中使用定位机制而未使用GPS,则在提交申请时可能会被拒绝


您可能还需要参考,以确保应用程序的结构满足其要求。

答案是它不能与AVAudioPlayer一起使用。请改用AudioServicesPlaySystemSound API。

答案是它不适用于AVAudioPlayer。改用AudioServicesPlaySystemSound API。

[编辑] 这里有一个监控GPS位置时背景播放的好例子:

它使用的是AudioToolbox而不是AVAudioPlayer

我已经用AVAudioPlayer做到了

您是否也在info.plist中添加了关键UIBackgroundModes的音频值

[编辑] 这里有一个监控GPS位置时背景播放的好例子:

它使用的是AudioToolbox而不是AVAudioPlayer

我已经用AVAudioPlayer做到了


您是否也在info.plist中添加了关键UIBackgroundModes的音频值

有什么关系?我从一个我知道正在运行的函数调用AVAudioPlayer,它会显示日志。我应该添加我的应用程序真的在做GPS,这是一个导航应用程序。当你靠近某些地标时,我想发射音效。这有什么关系?我从一个我知道正在运行的函数调用AVAudioPlayer,它会显示日志。我应该添加我的应用程序真的在做GPS,这是一个导航应用程序。当你靠近某些地标时,我想发射音效。关于这个有更多的信息吗?我已经在plist中设置了相关的键,我可以在调试器中看到播放音频文件的调用被执行。我还为AVAudioSessionCategoryPlayback设置了音频会话,并使用[[AVAudioSession sharedInstance]setActive:YES error:&activationError]调用将会话设置为活动状态;没有乐趣。我有完全相同的问题:/有什么想法或解决办法吗?:我可以让它运行,请参阅我答案中的更改。有关此问题的更多信息?我已经在plist中设置了相关的键,我可以在调试器中看到播放音频文件的调用被执行。我还为AVAudioSessionCategoryPlayback设置了音频会话,并使用[[AVAudioSession sharedInstance]setActive:YES error:&activationError]调用将会话设置为活动状态;没有乐趣。我有完全相同的问题:/有什么想法或解决办法吗?:我能得到它
nning,请参阅我答案中的更改。我使用了AudioServicesPlaySystemSound API并获得了完全相同的beahvior:/NSString*soundPath=[[NSBundle mainBundle]pathForResource:@mySound of Type:@aiff];SystemSoundID soundId=1024;NSURL*url=[NSURL URLWithString:soundPath];AudioServicesCreateSystemSoundID CFURLRefurl、SystemSoundID*&soundId;AudioServicesPlaySystemSoundID;我使用了AudioServicesPlaySystemSound API,得到了完全相同的beahvior:/NSString*soundPath=[[NSBundle mainBundle]pathForResource:@mySound of Type:@aiff];SystemSoundID soundId=1024;NSURL*url=[NSURL URLWithString:soundPath];AudioServicesCreateSystemSoundID CFURLRefurl、SystemSoundID*&soundId;AudioServicesPlaySystemSoundID;