我的应用程序在后台运行并监视蓝牙数据。当数据进入时,我会显示用户需要打开应用程序的通知,以便我可以处理刚进入的数据。
我正在写 iOS 5 及更高版本。
我使用以下代码发出通知:
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
if (alarm) {
alarm.fireDate = [NSDate date];
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = @"alarmsound.caf";
alarm.alertBody = message;
[app scheduleLocalNotification:alarm];
}
正如我希望您可以从该代码中看到的那样,通知会立即触发。
我遇到的问题是我似乎无法检测到通知栏上是否已经有通知。我试过使用:
NSArray *oldNotifications = [app scheduledLocalNotifications];
// Clear out the old notification before scheduling a new one.
if ([oldNotifications count] > 0)
[app cancelAllLocalNotifications];
但是,这似乎不起作用,因为 oldNotifications 计数始终为 0,即使通知栏上有大量它们也是如此。我认为这是因为通知已经触发?
基本上我只想通知用户一次,除非他们在不打开应用程序的情况下关闭该通知。如果我还可以增加应用程序标记值,这样用户就会知道有多少蓝牙消息进来了,那就太好了。相反,我只是为每条传入消息获得一个全新的通知。
我如何只通知用户一次,然后仅在他们解除通知时才再次通知他们?