#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

//无论程序在前后台运行,只要接收到通知,就会调用此方法

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

{

NSLog(@"%@",notification);

//添加控件,接收显示到的信息

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];

label.backgroundColor=[UIColor grayColor];

label.text=[NSString stringWithFormat:@"%@",notification];

[self.window.rootViewController.view addSubview:label];

}

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

// Override point for customization after application launch.

UILocalNotification *info=launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];

if (info) {

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 320, 300)];

label.backgroundColor = [UIColor orangeColor];

[self.window.rootViewController.view addSubview:label];

//取出携带信息

label.numberOfLines = 0;

//NSDictionary *dict = info[@"UIConcreteLocalNotification"];

// NSArray *keys = [info allKeys];

//for (NSString *str in keys) {

//   label.text = [NSString stringWithFormat:@"%@",str];

//}

//NSDictionary *dict1 = dict[@"user info"];

label.text = [NSString stringWithFormat:@"%@",info.userInfo];

//跳转对应的界面

}

return YES;

}

@end

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//iOS8之后 需要注册通知类型  包含哪些(声音,图标文字,文本) 信息

/*

UIUserNotificationTypeNone    = 0,

UIUserNotificationTypeBadge   = 1 << 0, 包含图标文字  0001

UIUserNotificationTypeSound   = 1 << 1, // 声音      0010

UIUserNotificationTypeAlert   = 1 << 2, // 主题内容  0100

*/

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

//注册通知

[[UIApplication sharedApplication]registerUserNotificationSettings:setting];

}

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

{

//创建本地通知

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

local.alertBody=@"老易:你为什么这么爱生气?";

local.fireDate=[NSDate dateWithTimeIntervalSinceNow:3];

local.soundName=UILocalNotificationDefaultSoundName;

local.alertAction=@"约";

local.applicationIconBadgeNumber=5;

local.userInfo=@{@"name":@"大易",@"age":@"18"};

//定制通知

[[UIApplication sharedApplication]scheduleLocalNotification:local];

//    //立即发送通知

//    [[UIApplication sharedApplication]presentLocalNotificationNow:local];

//    //取消本地所有通知

//    [[UIApplication sharedApplication]cancelAllLocalNotifications];

/*

// timer-based scheduling 定制  特定的时间发出通知

@property(nonatomic,copy) NSDate *fireDate; 触发 时间

@property(nonatomic,copy) NSTimeZone *timeZone; 时区

@property(nonatomic) NSCalendarUnit repeatInterval; 重复间隔     // 0 means don't repeat

@property(nonatomic,copy) NSCalendar *repeatCalendar; 重复间隔

@property(nonatomic,copy) CLRegion *region NS_AVAILABLE_IOS(8_0);//区域

@property(nonatomic,assign) BOOL regionTriggersOnce NS_AVAILABLE_IOS(8_0); //决定区域的一个bool值

// alerts

@property(nonatomic,copy) NSString *alertBody;  提醒的主题

@property(nonatomic) BOOL hasAction;                // NO 不显示滑动解锁的按钮 反之 显示

@property(nonatomic,copy) NSString *alertAction;    //滑动解锁的文字

@property(nonatomic,copy) NSString *alertLaunchImage;   //点击通知横幅的启动程序的 启动 图片

@property(nonatomic,copy) NSString *alertTitle   提示的标题文字

// sound 默认: UILocalNotificationDefaultSoundName

@property(nonatomic,copy) NSString *soundName;

// badge

@property(nonatomic) NSInteger applicationIconBadgeNumber;  //图标文字

// user info

@property(nonatomic,copy) NSDictionary *userInfo;   // 用户指定的携带参数

[UIUserNotificationSettings settingsForUserNotificationTypes:userNotificationActionSettings:]

@property (nonatomic, copy) NSString *category NS_AVAILABLE_IOS(8_0);分类

*/

}

@end

ios本地推送的更多相关文章

  1. (七十三)iOS本地推送通知的实现

    iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被 ...

  2. 81、iOS本地推送与远程推送详解

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

  3. IOS 本地推送(UILocalNotification)

    推送通知 ● 注意:这里说的推送通知跟NSNotification有所区别 • NSNotification是抽象的,不可见的 • 推送通知是可见的(能用肉眼看到) ● iOS中提供了2种推送通知 ● ...

  4. iOS 本地推送通知

    1.什么是本地推送通知 不需要联网的情况下,应用程序经由系统发出的通知 2.本地推送的使用场景 定时提醒,如玩游戏.记账.闹钟.备忘录等 3.实现本地推送通知的步骤 创建本地推送通知的对象UILoca ...

  5. IOS 本地推送 IOS10.0以上 static的作用 const的作用

    //需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...

  6. iOS本地推送与远程推送

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

  7. [转载]iOS本地推送-备用

    第一步:创建本地推送// 创建一个本地推送UILocalNotification *notification = [[[UILocalNotification alloc] init] autorel ...

  8. iOS本地推送与远程推送详解

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

  9. IOS 本地推送

    // 1.打开本地推送并设置属性 NSString *str = @"本地推送的信息"; UIApplication *app = [UIApplication sharedApp ...

随机推荐

  1. zju3547

    题意:给出n(1<=n<=10^8),求小于n的,求所有与n互质的数字的四次幂的加和是多少. 分析:容斥原理 首先要知道四次幂求和公式,1^4+2^4+...+n^4=n*(n+1)*(2 ...

  2. Qt 使用sqlserver

    1. pro 添加 QT       +=sql 2. void MainWindow::connectSqlServer() { QSettings *setIni = new QSettings( ...

  3. fastReport 运行时设计报表 (mtm)

    设计报表 通过“TfrxReport.DesignReport”方法调用报表设计器.你必须在你的项目中包含报表设计器 (必要条件是:要么使用“TfrxDesigner”组件,要么增加“frxDesgn ...

  4. ffmpeg-20160515-git-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  5. jquery 上传图片即时预览功能

    <script type="text/javascript">        jQuery.fn.extend({            uploadPreview: ...

  6. K3数据库表结构

    K3数据库表结构查看方法,直接在数据库中打开表 t_TableDescription,其中即各表及其与K3功能的对应关系 也可直接查询: select * from t_TableDescriptio ...

  7. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  8. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

  9. express响应前端ajax请求

    后端其实并不需要知道前端发起的请求是不是ajax,后端只需要响应请求即可.例子: 前端这样写: $('button').on('click', function(event) { event.prev ...

  10. C++中实现对象的clone()

    在C#中,许多对象自动实现了clone函数,在C++中,要拷贝一个对象,除了自定义一个拷贝构造函数来实现对象复制外,还可以像C#中那样实现一个clone函数,这需要借助编译器实现的一个隐藏拷贝构造函数 ...