如何在应用进入后台时播放通知声音?

时间:2015-10-23 13:28:25

标签: ios objective-c audio avplayer

-(void)loadAudioFileList
{
   audioFileList = [[NSMutableArray alloc] init];
   arrAudioList  = [[NSMutableArray alloc] init];

   NSFileManager *fileManager = [[NSFileManager alloc] init];
   NSURL *directoryURL = [NSURL URLWithString:@"/System/Library/Audio/UISounds"];
   NSArray *keys = [NSArray arrayWithObject:NSURLIsDirectoryKey];

   NSDirectoryEnumerator *enumerator = [fileManager
                                     enumeratorAtURL:directoryURL
                                     includingPropertiesForKeys:keys
                                     options:0
                                     errorHandler:^(NSURL *url, NSError *error) {
                                         // Handle the error.
                                         // Return YES if the enumeration should continue after the error.
                                         return YES;
                                     }];

   for (NSURL *url in enumerator)
   {
       NSError *error;
       NSNumber *isDirectory = nil;
       if (! [url getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:&error])
       {
          // handle error
       }
       else if (! [isDirectory boolValue])
       {
          [audioFileList addObject:url];
          [arrAudioList addObject:[url lastPathComponent]];
       }
   }
}

我使用上面的代码获取可用的系统音频文件。我可以使用以下代码在应用程序处于前台时播放通知声音。

SystemSoundID soundID;
AudioServicesCreateSystemSoundID((__bridge_retained   CFURLRef)fileURL,&soundID);
AudioServicesPlaySystemSound(soundID);

但是如果app在后台我无法播放声音。我谷歌的解决方案,但我没有找到任何。据我所知,如果我们将声音文件包含到我们的应用程序包中,即使应用程序处于后台但我们也能够播放通知声音但系统声音我们无法实现相同的效果。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要在启用音频服务的情况下启用后台模式。如下面的屏幕截图enter image description here

所示