系统服务之本地通知

简介:

开发中不仅仅有远程推送还有本地通知,这样可以减轻服务器的压力。

一、在IOS8中需要先注册


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
    return YES;
}

 二、在-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification方法中接收通知


//这个方法只有在程序启动之后才会执行,因此当程序处于后台时,该方法不会执行
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    NSLog(@"%@",notification);
    UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"通知" message:@"下班了" delegate:self cancelButtonTitle:@"NO" otherButtonTitles:@"YES", nil];
    [alertView show];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
 
}

 三、创建本地通知


//
//  ViewController.m
//  UILocalNotification
//
//  Created by City--Online on 15/5/15.
//  Copyright (c) 2015年 XQB. All rights reserved.
//
 
#import "ViewController.h"
 
@interface ViewController ()
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
     
    UILocalNotification *notification=[[UILocalNotification alloc]init];
    if (notification) {
        //设置推送时间
        NSDate *currentDate=[NSDate date];
        notification.timeZone=[NSTimeZone defaultTimeZone];
        notification.fireDate=[currentDate dateByAddingTimeInterval:10];
         
        //设置重复间隔  NSCalendarUnit类型 0表示不重复
        notification.repeatInterval=kCFCalendarUnitMinute;
        //设置提醒的文字
        //设备收到本地通知时横额或锁屏时的主要文字内容
        notification.alertBody=@"内容";
        notification.alertTitle=@"标题";
        //锁屏时显示的slide to后面的文字内容
        notification.alertAction=NSLocalizedString(@"我是谁?", nil);
        //提示音 默认
        notification.soundName=UILocalNotificationDefaultSoundName;
        //设置应用程序右上角的提醒个数
        notification.applicationIconBadgeNumber++;
         
        //设置通知的userInfo
        NSMutableDictionary *userInfo=[[NSMutableDictionary alloc]init];
        [userInfo setObject:@"kLocalNotificationID" forKey:@"kLocalNotificationID"];
        [userInfo setObject:@"cuiyanwei" forKey:@"name"];
        notification.userInfo=userInfo;
        //将通知添加到系统中
        //如果我们的应用程序给系统发送的本地通知是周期性的,那么即使把程序删了重装,之前的本地通知在重装时依然存在(没有从系统中移除)(注册到系统服务里并不是在APP中)
        [[UIApplication sharedApplication]scheduleLocalNotification:notification];
//        [self delete];
         
    }
}
//删除本地通知
-(void)delete
{
    //往系统服务里面注册之后有时会需要删除
    //1.暴力删除,取消所有的通知
    //[[UIApplication sharedApplication] cancelAllLocalNotifications];
    //2.删除制定的通知
    for (UILocalNotification *notification in [[UIApplication sharedApplication] scheduledLocalNotifications]) {
        NSString *kLocalNotificationID=[notification.userInfo objectForKey:@"kLocalNotificationID"];
        NSLog(@"%@",kLocalNotificationID);
        if ([kLocalNotificationID isEqualToString:@"kLocalNotificationID"]) {
            [[UIApplication sharedApplication] cancelLocalNotification:notification];
            UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"取消通知" message:@"已经取消通知" delegate:self cancelButtonTitle:@"YES" otherButtonTitles:nil, nil];
            [alertView show];
            break;
         
        }
    }
}
 
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
@end


 四、运行结果

 

相关文章
|
7月前
|
Java API 调度
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
409 0
|
3月前
|
安全 数据安全/隐私保护 Windows
怎样配置和管理WinXP/2003系统服务
怎样配置和管理WinXP/2003系统服务
|
7月前
|
存储 安全 Android开发
Android系统 自定义系统和应用权限
Android系统 自定义系统和应用权限
353 0
|
Shell Linux C++
Linux应用程序重启:实现应用程序的被动重启
要实现一个程序能够重启另一个程序,可以使用Shell脚本或编写一个C/C++程序来完成这个任务。
245 0
|
运维 监控 安全
精简系统服务和开机进程
一、线上服务器建议开启的服务 二、可删除的系统用户和组 三、下期公开课预告 四、广而告之
小技巧 - 一键启动常用程序(含部分多开)
小技巧 - 一键启动常用程序(含部分多开)
128 0
编写一个闹钟和定时关机工具(MFC VS2010)
这个小工具在自己生活当中能用到,运行软件以后,会显示当前的系统时间,然后你可以设定时间,再选择是定时响铃还是关机。截图如下: 前言:本程序采用visual studio 2010 ,对话框类型的应用程序,生成的类视图如下,右边为CTimeDlg类的本分函数:     主要的实现方法和关键点如下: 1.
1149 0