应用程序代理
// // BeyondAppDelegate.m // 35_本地通知 // // Created by beyond on 14-9-12. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondAppDelegate.h" @implementation BeyondAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UITextView *text = [[UITextView alloc]init]; text.frame = CGRectMake(40, 0, 240, 300); text.backgroundColor = [UIColor redColor]; text.text = [NSString stringWithFormat:@"didLaunchWithOption\n%@", launchOptions]; [self.window.rootViewController.view addSubview:text]; // 1、如果点击图标进入应用程序,则launchOptions字典为nil // 2.1、如果点击本地通知进行应用程序,则launchOptions字典有值,值为: /* ...... */ // 2.2、如果是其他应用程序跳转到本应用 从而打开本应用,则launchOptions字典有值,其值为: NSLog(@"didLaunchWithOption"); return YES; } /** 下面方法didReceiveLocalNotification,被调用的前提是: 1、应用没有关闭,仍在后台运行,或者正在显示中 2、用户点击通知, 进入了程序(程序还在运行中, 程序并没有被关掉) 3、如果应用正在显示,接收到通知时,依然会调用app代理的此方法 */ - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { UILabel *label = [[UILabel alloc] init]; label.numberOfLines = 0; label.frame = CGRectMake(0, 300, 320, 30); label.backgroundColor = [UIColor blueColor]; label.text = @"didReceiveLocalNotification"; [self.window.rootViewController.view addSubview:label]; NSLog(@"didReceiveLocalNotification"); } @end
控制器
// // BeyondViewController.m // 35_本地通知 // // Created by beyond on 14-9-12. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondViewController.h" @interface BeyondViewController () // 添加一个本地通知 - (IBAction)addLocalNotice; // 取消本地通知 - (IBAction)cancelLocalNotice; @end @implementation BeyondViewController // 添加一个本地通知 - (IBAction)addLocalNotice { // 1.创建通知 UILocalNotification *localNote = [[UILocalNotification alloc] init]; // 2.设置本地通知的属性 localNote.alertAction = @"操作标题"; // 操作标题 localNote.alertBody = @"伦家想你啦~~~"; // 正文 localNote.applicationIconBadgeNumber = 5; // 本地通知的重复时间的间隔:每分钟,每天,每小时... // localNote.repeatInterval = NSCalendarUnitMinute; // 点击【本地通知】后, 打开程序时,将会展示的启动图片 localNote.alertLaunchImage = @"Default.png"; // 【本地通知】几时启动 localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; // 3.给app 注册一个【本地通知】(添加),必须先移除旧的,防止重复添加 UIApplication *app = [UIApplication sharedApplication]; [app cancelAllLocalNotifications]; [app scheduleLocalNotification:localNote]; } // 取消本地通知 - (IBAction)cancelLocalNotice { UIApplication *app = [UIApplication sharedApplication]; [app cancelAllLocalNotifications]; } @end
开启通知,然后完全退出程序,点击【本地通知】进入程序时,
只会调用didFinishLaunchingWithOptions方法,并传参数 :launchOptions
不会调用didReceiveLocalNotification,
因为此方法调用的前提是:
应用正在运行,或仍在后台运行时,收到了通知
时间: 2024-10-13 22:26:40