iOS 本地通知基本使用

首先要在AppDelegate申请授权



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {


    // iOS8, 主动申请用户授权


    // 配置需要使用的本地通知的类型

    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil];

    

    // 注册本地通知 (申请用户授权)

    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

    

    return YES;

}



然后


#import "ViewController.h"


NSString * TestLocalNotificationKey = @"TestLocalNotificationKey";


@interface ViewController ()


@end


@implementation ViewController


// 添加通知按钮响应事件

- (IBAction)addNotificationBtnAction:(id)sender

{

//    [self baseUsage];

    

    UILocalNotification *notification = [[UILocalNotification alloc] init];

    notification.userInfo = @{TestLocalNotificationKey : @"LocalNotification 测试, QQ图标"};

    

    notification.alertBody = @"美女: 人家好想你啊, 今晚来不?";

    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:3];

    

    // 设置通知标题, 在通知中心与AppleWatch上可以查看

    notification.alertTitle = @"AppleWatch";

    

    // 了解即可, 配置重复触发本地通知的时间间隙小于分钟的值无效,

    // 默认值为0, 只触发一次, 被调度后就会从通知调度池中移除

    // 重复触发的本地通知, 被调度后不会从通知调度池中移除

    notification.repeatInterval = NSCalendarUnitMinute;

    

    [[UIApplication sharedApplication] scheduleLocalNotification:notification];

}


// 移除指定通知事件

- (IBAction)cancelSpecifyNotificationAction:(id)sender

{

    // 取消调度池中指定本地通知, 使用userInfo来判断

    

    // 获取通知调度池中所有的本地通知

    NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

    // 遍历通知调度池中所有的本地通知

    for (UILocalNotification *notification in notifications) {

        // 遍历每个本地通知的userInfo中所有key

        [notification.userInfo enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {

            if ([key isEqualToString:TestLocalNotificationKey]) {

                // 如果本地通知的Key值匹配, 则取消该本地通知的调度

                [[UIApplication sharedApplication] cancelLocalNotification:notification];

            }

        }];

    }

}


// 移除所有通知事件

- (IBAction)cancelAllNotificationAction:(id)sender

{

    // 取消通知调度池中所有的本地通知

    [[UIApplication sharedApplication] cancelAllLocalNotifications];

}



- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    // 获取当前通知调度池中的本地通知

    NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];

    NSLog(@"LocalNotifations : %@", notifications);

}


- (void)baseUsage

{

    /**

     iOS7 会自动弹出用户授权窗口

     iOS8 需要App主动去申请本地通知授权, (一般在AppDelegate中申请授权)

     */

    

    // UILocalNotification 表示本地通知, 可以在指定时间进行通知( 提示信息, 声音, 图标边缘数字提示)

    

    // 1. 创建本地通知对象

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];

    // 2. 配置通知的内容与方式 (需要先注册相关通知方式的授权)

    // 2.1 设置通知内容

    localNotification.alertBody = @"滴滴拉屎: 发现周边户主闲置的厕所";

    // 2.2 设置通知时间

    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

    // 2.3 设置提示音 (模拟器没有默认提示音)

    // UILocalNotificationDefaultSoundName系统默认提示音 / 存放在MainBundle中音效文件的名称

    localNotification.soundName = UILocalNotificationDefaultSoundName;

    // 2.4 设置用户图标边缘的数字

    localNotification.applicationIconBadgeNumber = 1;

    

    // 3. 将通知对象添加到通知调度池

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

}


@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值