gpt4 book ai didi

ios - 当通过在警报上滑动将应用程序带到前台时,UILocalNotification 不会停止声音

转载 作者:技术小花猫 更新时间:2023-10-29 10:51:44 28 4
gpt4 key购买 nike

当我的应用程序在后台接收到网络消息时,它会创建一个带有声音的 UILocalNotification 并调用 presentLocalNotificationNow。

    UILocalNotification* localNotif = [[UILocalNotification alloc] init];
localNotif.alertBody = [NSString stringWithFormat:@"%@: \r%@ \r%@", NSLocalizedString(@"XXXXXXXXXXX", nil), XXXXX, XXXXXXXXXXX];
localNotif.alertAction = NSLocalizedString(@"View", nil);

localNotif.soundName = [NSString stringWithFormat:@"%@.%@", XXXXTONE_LONGVERSION_FILENAME, XXXXTONE_FILENAME_EXT];
[[UIApplication sharedInstance] presentLocalNotificationNow:localNotif];
[localNotif release];

此警报按预期以声音显示。但在某些情况下我无法停止声音。

1) 当有屏幕锁定并显示此本地通知警报时:

  • 如果用户通过在提醒上滑动解锁屏幕,声音不会停止。
  • 如果用户通过滑动“> slide to unlock”来解锁屏幕,它会停止声音。

2) 当应用程序在后台且没有屏幕锁定时,提示音在应用程序进入前台时正常停止。

当应用程序在 didReceiveLocalNotification 和 applicationDidBecomeActive 中出现时,我会取消计划的本地通知。

    application.applicationIconBadgeNumber = 0;
[application cancelAllLocalNotifications];

最佳答案

这是 iOS7 的一个已知错误,非常烦人。
如果您使用远程通知,您将遇到完全相同的问题。

此问题的解决方法是将应用程序标志计数更改两次,至少一步到值 0。我的应用程序中有这个方法:

- (void)fixRing{
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
// iOS7 fix for notification sound not stopping.
// see http://stackoverflow.com/questions/19124882/stopping-ios-7-remote-notification-sound
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
}
}

不要忘记有时之后将角标(Badge)计数更新为实际值。

编辑:实际上,这不适用于本地 通知,而仅适用于远程(推送)通知。 [application cancelAllLocalNotifications]; 不起作用,[application cancelLocalNotification:notif]; 也不起作用...
这是我已向 Apple 报告的错误,在撰写本文时正在“处理”中。
我已经尝试了很多解决方法(推送一个带有小声音的通知以删除长声音,使用计时器并用较短的声音重复通知而不是让它停留 30 秒,等等。 ) 但都没有用。

请注意,Google Hangout 似乎也遇到了这个问题。所以我想没有真正的解决方案。

关于ios - 当通过在警报上滑动将应用程序带到前台时,UILocalNotification 不会停止声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21122481/

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