【发布时间】:2011-10-14 23:12:00
【问题描述】:
当应用程序处于前台并且当前在 iPhone SDK 中运行时,是否会显示本地通知?
【问题讨论】:
标签: iphone local uilocalnotification
当应用程序处于前台并且当前在 iPhone SDK 中运行时,是否会显示本地通知?
【问题讨论】:
标签: iphone local uilocalnotification
不,您将在 appdelegate 中收到通知。
- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
//Place your code to handle the notification here.
}
【讨论】:
我制作了一个库来制作与本地通知几乎相同的动画。
检查这个: https://github.com/OpenFibers/OTNotification
演示:
当您在
中收到消息时,您可以向此库发布新消息- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification
{
OTNotificationManager *notificationManager = [OTNotificationManager defaultManager];
OTNotificationMessage *notificationMessage = [[OTNotificationMessage alloc] init];
notificationMessage.title = [self notificationTitle];
notificationMessage.message = @"A notification. Touch me to hide me.";
[notificationManager postNotificationMessage:notificationMessage];
}
【讨论】:
接受的分析器是正确的,但不足以接收所有通知并向用户显示来自
- (void) application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification {
您必须检查是否是当前通知。 有时会触发另一个通知(例如,当您取消它们时)。所以,你必须检查,那是你除了:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
if (fabs([[NSDate date] timeIntervalSinceDate:[notification fireDate]]) <= 0.5f)
{
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Notification alert", @"")
message:notification.alertBody
delegate:self
cancelButtonTitle:@"Ok" otherButtonTitles:nil] show];
}
}
【讨论】:
如果您的应用当前处于前台,则将在您的委托中调用以下函数:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)Notifikation
然后您可以决定显示警报视图,但标准视图不会自行显示
【讨论】:
斯威夫特 2.2:
func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
var state = application.applicationState
if state == .Active {
// handle the notification, e.g. show an alert
}
}
斯威夫特 3.0:
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
var state: UIApplicationState = application.applicationState
if state == .active {
// handle the notification, e.g. show an alert
}
}
【讨论】: