UILocalNotification根本不起作用

时间:2011-02-11 21:59:20

标签: ios objective-c xcode uilocalnotification

UILocalNotification我遇到了一些非常恼人的问题。

在完成我几乎已经完成的应用程序时,我注意到无论我尝试了什么,我都无法获得本地通知。

因此,我没有浪费时间,而是决定回到基础,看看我是否可以让它们工作。

我创建了一个新的基于XCode视图的应用程序,并将-viewDidLoad替换为:

- (void)viewDidLoad
{
    UILocalNotification * theNotification = [[UILocalNotification alloc] init];
    theNotification.alertBody = @"Alert text";
    theNotification.alertAction = @"Ok";
    theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];

    [[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}

然而,这根本没有做任何事情 我希望在启动应用程序10秒后看到通知,但没有任何内容出现 另外,我在iPhone和模拟器上测试了这个。

我错过了一些非常关键的东西吗? (我在Apple文档中搜索过,无法找到发生这种情况的原因

由于

3 个答案:

答案 0 :(得分:43)

只有当应用正在运行(或在后台运行)时,

UILocalNotification才会自动显示。如果应用程序正在运行并且本地通知将被触发,则会调用UIApplicationDelegate的{​​{1}}方法,系统不会显示任何内容(也不会播放声音)。如果要显示通知,请在委托方法中自己创建- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

答案 1 :(得分:16)

只是我个人冒险中的愚蠢评论...

我有同样的问题,但我的问题是我忘记为alertBody分配一个值。如果您未设置alertBody,则不会显示通知。

答案 2 :(得分:12)

  1. fireDate必须是未来的时间。
  2. 应用必须在背景中运行,或者已关闭。
  3. 还有一件事,不要忘记显示是否允许推送查询,将以下代码添加到AppDelegate:

    -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
      if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
           UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; 
           [application registerUserNotificationSettings:settings]; 
      }
    }