我目前有一个需要本地通知的应用程序,所以当然我必须询问用户他或她是否愿意“允许通知”。我是这样做的:
AppDelegate.m
// Local Notifications
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]];
}
在初次加载应用时,我开始播放AVAudioPlayer
。我进行了设置,以便当用户离开应用程序(应用程序进入后台)时,音乐会淡出并暂停。
问题是在第一次启动应用时,当弹出通知要求用户允许通知时,该应用似乎是被欺骗认为它即将辞职活动。我似乎无法弄清楚如何避免 JUST 通知警报触发此事件,或者最坏的情况是“将应用程序恢复”,并在警报被其中一个解除时变为活动状态通知选项。
以下是我在ViewController
中调用的内容,以便在应用更改状态时通知应用:
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pauseAudio)
name:UIApplicationWillResignActiveNotification object:nil];
...
}
如果有人可以告诉我如何忽略通知提醒,以便它不会认为它将会退出活动,或如何在“辞职”后恢复应用程序。我目前有这些其他通知句柄试图将其恢复,但在警告“混乱一切”之后不会调用它们:
(ViewController
内的同一viewDidLoad
)
...
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(animateLoginScreen)
name:UIApplicationWillEnterForegroundNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resumeAudio)
name:UIApplicationDidBecomeActiveNotification object:nil];
我很感激这方面的任何帮助。谢谢!
答案 0 :(得分:5)
每当显示"系统对话框"(例如通知权限对话框)时,您的应用程序 重新启动,因为它是iOS,而不是您的应用程序,负责处理权限请求。
你的应用程序没有被愚弄,它确实在显示对话框的那段时间内处于活动状态。我怀疑你应该暂停你的应用程序进入后台的音频,而不仅仅是在它停止活动时。如果您获得了willResignActive,则应发布UIApplicationDidBecomeActiveNotification
。你接到相应的AppDelegate方法的电话吗?