UILocalNotification的警报操作代码

UILocalNotification *notif = [[cls alloc] init]; notif.fireDate = [self.datePicker date]; notif.timeZone = [NSTimeZone defaultTimeZone]; notif.alertBody = @"Did you forget something?"; notif.alertAction = @"Show me"; 

如果用户点击“showme”应用程序应该打开,他应该得到警报。 我应该在哪里写代码?如果可能的话,请给我一点代码

您将在通知被触发时根据应用程序的状态在两个地方得到有关UILocalNotification的通知。

1.在应用程序中:didFinishLaunchingWithOptions:方法,如果应用程序既不在运行也不在后台。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; if (localNotif) { // Show Alert Here } ... } 

2. 应用程序中:didReceiveLocalNotification:方法如果应用程序正在运行或在后台。 当应用程序已经运行时,它几乎没有用来显示警报。 因此,只有在通知被触发时,应用程序处于后台才能显示警报。 要知道应用程序是否从后台恢复,请使用applicationWillEnterForeground:方法。

 - (void)applicationWillEnterForeground:(UIApplication *)application { isAppResumingFromBackground = YES; } 

只有当应用程序从后台恢复时,使用此方法才能在didReceiveLocalNotification:方法中显示警报。

 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { if (isAppResumingFromBackground) { // Show Alert Here } } 

如果要在通知被触发时显示警报视图, 可以简单地省略if条件 ,而不考虑应用程序的状态。

添加一个函数,我们将通过触摸YourViewController.h文件中的button来调用,然后将主体赋予YourViewController.m文件中的该函数

 -(void)Trigger_LocalNotification { [[UIApplication sharedApplication] cancelAllLocalNotifications]; UILocalNotification *_localNotification = [[UILocalNotification alloc]init]; //setting the fire dat of the local notification _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; //setting the time zone _localNotification.timeZone = [NSTimeZone defaultTimeZone]; //setting the message to display _localNotification.alertBody = @"Did you forget something?"; //default notification sound _localNotification.soundName = UILocalNotificationDefaultSoundName; //displaying the badge number _localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1; //schedule a notification at its specified time with the help of the app delegate [[UIApplication sharedApplication]scheduleLocalNotification:_localNotification]; } 

代码的第一行从系统中删除所有本地通知,如果它们被声明。 在第二行中,我正在初始化UILocalNotificationvariables,在第三行中,我使用fireDate属性来设置本地通知将触发的时间,您可以看到通知将在5秒后触发。

soundName是UILocalNotification类的一个属性,用于在通知被触发时播放声音,以及当这个本地通知的应用程序没有被激活时,那么在这种情况下,将popup一个警告框,其中包含默认通知声音和警报消息使用属性alertBody写入。 代码的最后一行将把这个通知与系统连接起来。

一定要把这个function附加在里面的事件button

 [btn addTarget:self action:@selector(Trigger_LocalNotification) forControlEvents:UIControlEventTouchUpInside]; 

现在select你的项目的App Delegate.m文件,并创build这个类的对象(YourViewController)

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. YourViewController *obj = [[YourViewController alloc]init]; [self.window addSubview:obj.view]; [self.window makeKeyAndVisible]; return YES; } 

运行应用程序,当应用程序在模拟器中启动,然后快速按下主页button5秒后查看本地通知的警报框。

我希望这个答案能帮助你学习如何实现UILocalNotification。

有一个名为didreceivelocalnotification的委托方法。您必须在应用程序委托中编写此代码。而当用户单击时,此委托方法将会调用。因此可以在didreceivelocalnotifaction方法中编写任何代码。

 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { }