3

我的应用程序在后台运行并监视蓝牙数据。当数据进入时,我会显示用户需要打开应用程序的通知,以便我可以处理刚进入的数据。

我正在写 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,即使通知栏上有大量它们也是如此。我认为这是因为通知已经触发?

基本上我只想通知用户一次,除非他们在不打开应用程序的情况下关闭该通知。如果我还可以增加应用程序标记值,这样用户就会知道有多少蓝牙消息进来了,那就太好了。相反,我只是为每条传入消息获得一个全新的通知。

我如何只通知用户一次,然后仅在他们解除通知时才再次通知他们?

4

0 回答 0