为啥在 iOS 7 中我的本地通知没有显示横幅

Posted

技术标签:

【中文标题】为啥在 iOS 7 中我的本地通知没有显示横幅【英文标题】:Why is a banner not shown for my local notification in iOS 7为什么在 iOS 7 中我的本地通知没有显示横幅 【发布时间】:2014-02-22 22:26:31 【问题描述】:

我的 ios 7 应用在 NSOperationQueue 块内调用的方法中生成本地通知。通知出现在通知中心,但它们没有在屏幕顶部显示横幅。应用在后台时正在生成通知。

我已经尝试了所有我能想到的方法,并且在 Google 上进行了大量搜索,但仍然无法显示横幅。

这是构建和安排通知的代码:

    // In the most recent case, I have verified that 
    // alertText = Why not work? and alertAction = View

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];

    localNotification.alertBody = alertText;
    localNotification.alertAction = alertAction;

    localNotification.alertLaunchImage = launchImage;

    UIApplication *application = [UIApplication sharedApplication];
    application.applicationIconBadgeNumber++;

    localNotification.applicationIconBadgeNumber = application.applicationIconBadgeNumber;

    [self performSelectorOnMainThread:@selector(scheduleNotification:) 
    withObject:localNotification waitUntilDone:NO];


- (void)scheduleNotification: (id)notification

    UILocalNotification *localNotification = (UILocalNotification *)notification;

    // Schedule it with the app
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

我检查了我的应用的通知设置,它们是:

警报样式:横幅 徽章应用程序图标:开启 声音:关闭 在通知中心显示:开启 包括:5 最近的项目 在锁定屏幕上显示:开启

【问题讨论】:

【参考方案1】:

错误实际上是在我的代码的不同部分。我在后台线程中生成通知,在通知发出之前线程被取消。

【讨论】:

本地通知发出前怎么不取消?【参考方案2】:

如果您的应用正在运行,则不能拥有此横幅(除非您自己创建)。

解决方案可能是:

应用运行时,Notification 被处理

- (void)application:(UIApplication *)application 
   didReceiveRemoteNotification:(NSDictionary *)userInfo 

然后你可以使用这个项目(我用过,而且非常好):TSMessages 来创建类似于你的横幅的东西。

希望这会有所帮助...

【讨论】:

以上是关于为啥在 iOS 7 中我的本地通知没有显示横幅的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 本地通知默认没有声音

IOS 7锁定屏幕Objective-C的警报本地通知

IOS获取本地通知的属性

当应用程序在后台 iOS 11 中时,UNNotification 本地通知用户点击不会触发委托

iOS 本地通知的实现

iOS 本地通知的实现