UILocalNotification声音不停止播放

我已经设置了一个自定义的.aif 30秒文件作为本地通知声音名称。 下面是我的调度本地通知的代码。

//Function to schedule local notification -(void)schedulelocalnotification:(NSDate *)particularfiredate ringtone: (NSString *)particularringtone name:(NSString *)alarmname info:(NSDictionary *)dicttext { UILocalNotification *notification = [[UILocalNotification alloc] init]; notification.fireDate = particularfiredate; notification.soundName = [arrayAIFFFiles objectAtIndex:[arraysoundfilesnames indexOfObject:particularringtone]]; notification.alertBody = alarmname; notification.userInfo = dicttext; [[UIApplication sharedApplication] scheduleLocalNotification:notification]; } 

但是,当设备被locking,并且用户滑动通知进入应用程序时,即使用户进入应用程序,声音也会继续播放。 即使用户退出/卸载应用程序,它仍会继续播放。 请提出可能的原因。

 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [[NSUserDefaults standardUserDefaults] setValue:@"0" forKey:@"demo"]; NSLog(@"%i",[[[UIApplication sharedApplication] scheduledLocalNotifications] count]); NSString *viewcontrollerstring = [notification.userInfo objectForKey:@"smiletosnooze"]; NSLog(@"++++++------%@",viewcontrollerstring); } 

PS:我检查了 – UILocalNotification停止声音通知被解散后 ,这 – 停止UILocalNotification幻灯片上的声音查看,但没有任何帮助。 🙁

这似乎是在这里提交的iOS 7的一个开放的错误。 当设备被密码locking时,似乎也不会出现这个问题。 一个非常丑陋的黑客工作是为应用程序徽章号码设置一个值,并在应用程序进入前台时立即将其删除。 示例代码将是:

 - (void)applicationWillEnterForeground:(UIApplication *)application { [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1]; [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0]; } 

编辑

显然,上面提到的黑客实际上并没有在iOS 7.1+上工作。 唯一的解决方法是find以下内容,但是我很犹豫将其称为实际答案:

 - (void)applicationWillEnterForeground:(UIApplication *)application { AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory:AVAudioSessionCategoryPlayback error:nil]; [session setActive:YES error:nil]; MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer]; [musicPlayer setVolume:0.0f]; } 

但是上面的代码有一些严重的缺陷:

  1. setVolume方法自iOS 7以来已被弃用(尽pipe显然很多应用程序仍在使用它)
  2. 你有在你的应用程序的某个时候重新设置音量到一个适当的(非零水平)
  3. 设置音量属性肯定会在其他可能同时播放声音或音乐的应用程序中产生副作用

更新2014年9月18日

这个问题似乎在iOS 8上得到解决。