第一步:创建本地推送

本地通知

UILocalNotification

// 创建⼀一个本地推送 UILocalNotification * notification = [[UILocalNotification alloc] init];

//设置10秒之后
NSDate *pushDate = [NSDate

dateWithTimeIntervalSinceNow:10];

if (notification != nil) { // 设置推送时间

notification.fireDate = pushDate; // 设置时区
notification.timeZone = [NSTimeZone

defaultTimeZone];
// 设置重复间隔

notification.repeatInterval =
kCFCalendarUnitDay;

// 推送声⾳音

notification.soundName =
UILocalNotificationDefaultSoundName;

// 推送内容
notification.alertBody = @"推送内容";
// 显⽰示在icon上的红⾊色圈中的数⼦子
notification.applicationIconBadgeNumber = 1;
// 设置userinfo ⽅方便在之后需要撤销的时候使⽤用
NSDictionary *info = [NSDictionary

dictionaryWithObject:@"name"forKey:@"key"];
notification.userInfo = info;

//添加推送到UIApplication

        UIApplication *app = [UIApplication
sharedApplication];

//对通知进⾏行设置 UIUserNotificationSettings *setting =

[UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeBadge|
UIUserNotificationTypeAlert|
UIUserNotificationTypeSound) categories:nil];

[app registerUserNotificationSettings:setting]; [app scheduleLocalNotification:notification]; 

}

第二步:接收本地推送

- (void)applicationDidBecomeActive:(UIApplication
*)application {

//当程序还在后台运⾏行

application.applicationIconBadgeNumber = 0; }

//接收本地推送
- (void)application:(UIApplication *)application
didReceiveLocalNotification:
(UILocalNotification*)notification{

UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"本地通知" message:notification.alertBody
delegate:nil cancelButtonTitle:@"确定"
otherButtonTitles:nil];

[alert show];
// 图标上的数字减1
application.applicationIconBadgeNumber -= 1;

}

第三步:发送即时通知

- (IBAction)start:(id)sender {
UIApplication *app = [UIApplication

sharedApplication]; //即时推送

[app presentLocalNotificationNow:notification];
}

第四步:解除本地推送

- (IBAction)stop:(id)sender {
// UIApplication *app = [UIApplication
sharedApplication];
// //取消本地推送
// [app cancelLocalNotification:notification];

[self stopNotifacation];
}

//解除本地推送
- (void)stopNotifacation{

// 获得 UIApplication

    UIApplication *app = [UIApplication
sharedApplication];

//获取本地推送数组

    NSArray *localArray = [app
scheduledLocalNotifications];
    if (localArray) {
for (UILocalNotification *notify in localArray)

{

            NSString *keyString = [notify.userInfo
objectForKey:@"key"];
            if ([keyString isEqualToString:@"name"]) {
[app cancelLocalNotification:notify];

} }

} }

注:本地通知注册在本地,如果不取消的话会留下记录。可以通 过获取本地推送数组看到,执行完register后将会存在数组 中,如果不取消下次开启app的时候之前的还存在。

本地通知-UILocalNotification的更多相关文章

  1. IOS 本地通知 UILocalNotification

    IOS 本地通知 UILocalNotification [本文章第四部分中的代码逻辑来自网上的借鉴,并非我自己原创] 大概一个月前,我开始跟着做IOS项目了.学习C++,了解Objective-C, ...

  2. ios推送:本地通知UILocalNotification

    Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notificati ...

  3. 本地通知UILocalNotification

    1.增加一个本地推送 //设置20秒之后  ]; //chuagjian一个本地推送 UILocalNotification *noti = [[[UILocalNotification alloc] ...

  4. IOS 本地通知UILocalNotification

    //发送通知    UILocalNotification *notification=[[UILocalNotification alloc] init];       if (notificati ...

  5. iOS 注冊本地通知(推送)

    注:按Home键让App进入后台执行时.方可查看通知. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithO ...

  6. iOS 进阶---推送通知之本地通知

    1.推送通知的2种方式 1)本地推送通知(Local Notification) 2)远程推送通知(Remote Notification) 2.通知的作用 可以让不在前台运行的app,告知用户app ...

  7. iOS开发本地通知

    /* 本地通知:不通过网络,在本地实现的通知,自己发给自己 远程通知:必须通过网络,使用推送技术(APNs),实现通知 本地通知: 1.要完成可以接收的通知形式的注册 2.具体通知的设置 3.发送通知 ...

  8. iOS10以前的本地通知和远程通知

    一.简介 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程 ...

  9. UILocalNotification本地通知的使用方法

    本文所写方法主要应用UILocalNotification达到本地推送通知栏信息 取消了其他教程里过期的UIAlertView方法 使用UILocalNotification主要分为创建 调用 取消 ...

随机推荐

  1. 渗透测试-基于白名单执行payload--Regsvr32

    复现亮神课程 基于白名单执行payload--Regsvr32 0x01 Regsvr32 Regsvr32命令用于注册COM组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令, ...

  2. PHP yield代替range生成范围内的数

    <?php function yieldRange($start, $limit, $step) { if ($start == $limit || $step == 0) { return $ ...

  3. 关于用gulp合并压缩seaJs模块

    现在很多人都在用seaJs来开发项目,seaJs上手容易,操作简单.但在后期做合并压缩的时候却中了个巨大无比的坑,但坑也总得有人来填.于是花了将近一个星期的时间来填了这坑,现将填坑的一些心得与大家分享 ...

  4. C++中哪些函数不能声明为virtual?

    首先要明确,virtual是用于支持类多态的关键字,所以出现在类声明之外的地方都是错误的.由此可以断定下文的1. 普通函数(即非类成员函数)不能是virtual的,否则不能通过编译,virtual只能 ...

  5. LeetCode初级算法--树02:验证二叉搜索树

    LeetCode初级算法--树02:验证二叉搜索树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  6. Unity3D 通过JSON查询天气

    一.天气查询API 获取天气信息,首先要找到提供天气数据的接口,我使用的是高德地图免费为我们提供的,网址为 https://lbs.amap.com/api/webservice/guide/api/ ...

  7. CSP考场Emacs使用指南[原创]

    前言: 据说,CSP考试,之后不再支持windows了呢. windows用户真得劲! 那用什么系统? Ubuntu上场了 Ubuntu编译指南 进入Ubuntu系统,在你想存的文件夹中新建一个空白文 ...

  8. javascript学习 first-day

    1.javascript是一种客户端语言,设计它的目的是在用户的机器上而不是服务器上执行任务. 1.1 javascript不允许写服务器机器上的语言:   1.2 Javascript不能关闭不是由 ...

  9. 解决html连续字符或数字换行的问题

    word-break: break-all; word-wrap:break-word; 强制换行

  10. git 的一些指令

    作为一个前端,git的各种指令应该是需要掌握的,因为前一段时间遇到了一些问题,总觉得每次遇到点问题都去百度这样总归不大好,还是记录一下比较常见的一些指令吧.以后遇到新的再继续添加. 1. 新建本地分支 ...