首页 > 代码库 > iOS_35本地通知

iOS_35本地通知



应用程序代理

//
//  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,

因为此方法调用的前提是:

应用正在运行,或仍在后台运行时,收到了通知



















iOS_35本地通知