注释 localNotification.alertBody 时未调用 DidReceivedLocalNotificaiton

Posted

技术标签:

【中文标题】注释 localNotification.alertBody 时未调用 DidReceivedLocalNotificaiton【英文标题】:DidReceivedLocalNotificaiton not called when localNotification.alertBody is commented 【发布时间】:2011-12-19 07:39:55 【问题描述】:

我有以下代码行,每 1 分钟生成一次本地通知(用于测试),它在以下条件下完美运行。

    当应用程序处于运行状态时。 当应用程序处于后台状态并且 localNotification.alertBody = @"Local Notification Received" 未注释时。

现在,当我评论“localNotification.alertBody”时,它在应用程序处于运行状态时工作正常,但在应用程序处于后台状态时不起作用。

以下是创建本地通知的代码行。

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
[localNotification setRepeatInterval:NSMinuteCalendarUnit];
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.repeatCalendar = [NSCalendar currentCalendar];
localNotification.fireDate = fireDateOfNotification;
//localNotification.alertBody = @"Local Notification Received";
localNotification.repeatInterval = NSMinuteCalendarUnit;

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[localNotification release];

在 - (void)applicationDidEnterBackground:(UIApplication *)application

    bgTask = [application beginBackgroundTaskWithExpirationHandler: ^
    dispatch_async(dispatch_get_main_queue(), ^
        [application endBackgroundTask:self->bgTask];
        self->bgTask = UIBackgroundTaskInvalid;

【问题讨论】:

【参考方案1】:

您似乎正试图在后台执行代码,而没有向用户显示通知。

根据定义,如果 alertBody 为 nil,UILocalNotification 将不会显示弹出窗口,即使在应用程序正在运行的情况下会调用 didReceiveLocalNotification。

如果应用程序在后台并且 alertBody 为空,则不会弹出警报,也不会执行任何代码。

【讨论】:

【参考方案2】:

来自API documentation:

alertBody

...

分配一个字符串,或者最好是一个本地化字符串键(使用 NSLocalizedString)作为消息的值。如果此属性的值不为零,则会显示警报。默认值为 nil(no alert)。

你确定application:didReceiveLocalNotification: 根本没有被调用吗?还是只是您缺少警报?

【讨论】:

好吧,我想要做的是,如果应用程序处于后台状态,那么我不想显示任何消息并让 didReceiveLocalNotification 被调用......事实上我不想显示任何alret 消息并在间隔后调用 didReceiveLocalNotification。 这应该通过您的代码来实现。你确定,application:didReceiveLocalNotification: 没有被调用吗?您是否在该方法中添加了一些日志记录? 请使用代码更新您的问题,而不是将其放入评论中以获得更好的可读性。

以上是关于注释 localNotification.alertBody 时未调用 DidReceivedLocalNotificaiton的主要内容,如果未能解决你的问题,请参考以下文章

1.注释

sql注释的多行注释

注释书写格式

怎么给代码加注释?

java成神之——注释修饰符

python中的注释