本地推送的使用(干货)

一、推送通知有5种不同的呈现效果

1、在屏幕顶部显示一块横幅(显示具体内容)

2、在屏幕中间弹出一个UIAlertView(显示具体内容)

3、在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)

4、更新app图标的数字(说明新内容的数量)

5、播放音效(提醒作用)

二、如何发出本地推送通知

1、创建本地推送通知对象

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

2、设置本地推送通知属性

(1)推送通知的触发时间(何时发出推送通知)

@property(nonatomic,copy) NSDate *fireDate;

(2)推送通知的具体内容

@property(nonatomic,copy) NSString *alertBody;

(3)在锁屏时显示的动作标题(完整标题:“滑动来” + alertAction)

@property(nonatomic,copy) NSString *alertAction;

(4)音效文件名

@property(nonatomic,copy) NSString *soundName;

(5)app图标数字

@property(nonatomic) NSInteger applicationIconBadgeNumber;

(6)每隔多久重复发一次推送通知

@property(nonatomic) NSCalendarUnit repeatInterval;

(7)点击推送通知打开app时显示的启动图片

@property(nonatomic,copy) NSString *alertLaunchImage;

(8)附加的额外信息

@property(nonatomic,copy) NSDictionary *userInfo;

(9)时区

@property(nonatomic,copy) NSTimeZone *timeZone;

(一般设置为[NSTimeZone defaultTimeZone] ,跟随手机的时区)

(10)在通知中心里显示的标题

@property(nonatomic,copy) NSString *title;

(11)显示滑动解锁的按钮:设置成no,则显示“滑动来查看”,不显示用户设定的内容

@property(nonatomic) BOOL *hasAction;

3、推送通知的发出

(1)调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出)

[[UIApplication sharedApplication] scheduleLocalNotification:ln];

(2)获得被调度(定制)的所有本地推送通知

@property(nonatomic,copy) NSArray *scheduledLocalNotifications;

(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)

(3)取消调度本地推送通知

- (void)cancelLocalNotification:(UILocalNotification *)notification;

- (void)cancelAllLocalNotifications;

(4)立即发出本地推送通知

- (void)presentLocalNotificationNow:(UILocalNotification *)notification;

三、点击本地推送通知

1、当用户点击本地推送通知,会自动打开app,这里有2种情况

(1) 状态:app并没有关闭,一直隐藏在后台

    操作:让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)

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

(2) 状态:app已经被关闭(进程已死)

操作:启动app,启动完毕会调用AppDelegate的下面方法

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

  launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象

2、关于页面跳转的逻辑判断(要进行程序所处状态的逻辑判断)

(1)程序在前台运行时,不需要根据本地推送进行跳转操作

(2)程序在后台运行时,跳转到通知逻辑指定的页面

(3)程序关闭时,跳转到通知逻辑指定的页面

(4)程序第一次运行(本地推送还没有发生),是不需要加载推送通知逻辑的

四、关于注册通知(获得许可)

1、在iOS 8.0中,如果要使用本地通知,需要得到用户的许可

2、设置方式

(1)设置setting

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

(2)应用程序对象注册推送

[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

(3)关于分类categories

通过分类可以给推送通知添加快捷回复,包括按钮和文本框

五、category的设置

1、在通知处显示按钮,可以点击进行快捷回复,默认会回到程序中。另外可以设置快捷回复的文本框,进行信息发送。

2、设置

(1)配置可变的category对象

UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc]init];

(2)设置标识符

category.identifier = @"cate";

(3)为category 准备 action(动作按钮),这点类似  alertViewController

 UIMutableUserNotificationAction*action = [[UIMutableUserNotificationAction alloc]init];

    action.title = @“已阅读”;

    action.identifier = @"action1”;

 //让按钮的响应在后台处理,不用跳转到应用程序中去

    action.activationMode = UIUserNotificationActivationModeBackground;

//true时,用户在点击动作之前必须确认自己的身份

    action.authenticationRequired = NO;

 //在通知中心显示不同背景颜色

    action.destructive = NO;

(4)设置快捷回复的文本框,点击按钮出现输入文本框进行快捷回复

action.behavior = UIUserNotificationActionBehaviorTextInput;

(5)添加动作到分类

[category setActions:@[action1,action2] forContext:UIUserNotificationActionContextDefault];

(6) 在注册通知的时候,添加分类进去

UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound |  UIUserNotificationTypeAlert  categories:[NSSet setWithObjects:category, nil]];

[[UIApplication sharedApplication]registerUserNotificationSettings:setting];

3、动作按钮的响应(application的代理方法)

(1)动作按钮的响应事件————不带文本框信息

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler

    if ([identifier isEqualToString:@"action1”]) { //点击了标记已读

        NSLog(@"点击了标记已读");

    }

    if ([identifier isEqualToString:@"action2”]) { //点击了删除

        NSLog(@"点击了删除");

    }

//这里执行一下block

    completionHandler();

}

(2)动作按钮的响应事件————快捷回复带文本框信息

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler

{

    if ([identifier isEqualToString:@"action2”]) { //点击了标记已读

//注意key

        NSLog(@"%@",responseInfo[UIUserNotificationActionResponseTypedTextKey]);

    } 

    completionHandler();

}
时间: 2024-10-20 20:40:15

本地推送的使用(干货)的相关文章

本地推送 和 远程推送

今天看了一下远程推送,之前写的软件一直没加进这个功能,下个软件貌似要求有这个,所以问了一下度娘,也是有那么一丢丢的小麻烦吧,因为他没跳推送都必须经过苹果APNS,然后再发送给每个安装了软件的用户~~~ ///本地添加 void ,__FUNCTION__); if timeZone是UILocalNotification激发时间是否根据时区改变而改变,如果设置为nil的话,那么UILocalNotification将在一段时候后被激发,而不是某一个确切时间被激发.*/ ofType:@]; fo

ios本地推送demo

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     // Override point for customization after application launch.     //应用图标数字     application.applicationIconBadgeNumber=6;          //申请用

Apache Web Server 本地推送命令

/*****openssl 系统命令    x509输入文件类型       -in 是参数输入文件   -inform本地文件     -out是参数  是生成文件  ***/ openssl    x509  -in  *.cer  -inform  der  -out *.pem openssl  pkcs12  -nocets  -out  *.pem  -in  *.p12 /*****   >是 表示连接   ****/ cat  *.pem  *.pem  >  *.pem 在终

本地推送通知UILocalNotification

1 - (IBAction)schedule { 2 // 1.创建本地推送通知对象 3 UILocalNotification *ln = [[UILocalNotification alloc] init]; 4 5 // 2.设置通知属性 6 // 音效文件名 7 ln.soundName = @"buyao.wav"; 8 9 // 通知的具体内容 10 ln.alertBody = @"重大新闻:xxxx xxxx被调查了...."; 11 12 // 锁

SWIFT推送之本地推送(UILocalNotification)

本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. 1.首先在didFinishLaunchingWithOptions方法内添加代码,IOS8推送消息首先要获得用户的同意,在初次安装App时会提示用户是否允许程序推送消息,此方法是App第一次运行的时候被执行一次,每次从后台激活时不执行该方法. func application(application:

iOS 本地推送

在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒 两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会 补充通知中心的内容避免初学者对两种概念的混淆. 简单些了一个关于

iOS的本地推送UILocalNotification的使用

UILocalNotification 1 第一步:接收本地推送 2 3 实现代理方法didReceiveLocalNotification 4 5 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{ 6 7 //在此时设置解析notification,并展示提示视图 8 9 } 10 11 第二步:创建本地推送 12 -

本地推送通知在iOS8上的不同

iOS8的不同点 你如果把上面的程序运行在iOS8上,会爆出如下错误 预习01-本地推送通知[掌握][615:7847] Attempting to schedule a local notification {fire date = Monday, July 13, 2015 at 9:02:25 AM China Standard Time, time zone = (null), repeat interval = 0, repeat count = UILocalNotification

本地推送通知小demo

本地推送通知: #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 在iOS8之后,Apple对用户隐私要求更加严格,所