gpt4 book ai didi

ios - UILocalNotification 声音不会停止播放

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:32 26 4
gpt4 key购买 nike

我已将自定义 .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];
}

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

- (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 stop sound after notification is dismissed还有这个 - Stop UILocalNotification Sound on slide to view但这无济于事。 :(

最佳答案

这似乎是 iOS 7 的一个公开错误,已提交 here .似乎当设备被密码锁定时,也不会出现此问题。一个对我有用的非常丑陋的 hack 是为应用程序角标(Badge)编号设置一个值,并在应用程序进入前台时立即将其删除。示例代码为:

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

}

编辑:

显然,上面提到的 hack 实际上不适用于 iOS 7.1+。我发现的唯一解决方法如下,但我非常犹豫是否将其称为实际答案:

- (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 以来已弃用(尽管显然许多应用仍在使用它)
  2. 您必须在应用程序的某个时刻将音量重新设置为适当的(非零级别)
  3. 设置音量属性肯定会对可能同时播放声音或音乐的其他应用产生副作用

2014 年 9 月 18 日更新

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

关于ios - UILocalNotification 声音不会停止播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com