应用程序代理
//
// 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,
因为此方法调用的前提是:
应用正在运行,或仍在后台运行时,收到了通知
【本地通知】的重复时间的间隔: localNote.repeatInterval