iOS8我们有一个新的通知中心,我们有一个新的通报机制。当在屏幕的顶部仅需要接收一个推拉向下,你可以看到高速接口,天赋并不需要输入应用程序的操作。锁定屏幕,用于高速处理可以推动项目。

推送信息,再次提高处理效率。

可以进行直接互动的短信、邮件、日历、提醒,第三方应用,可以让你不用进入程序就能进行快捷操作,并专注于手中正在做的事情。

  • 在通知横幅高速回复信息,不用进入短信程序;
  • 可直接拒绝或接受邮件邀请;
  • 可对提醒进行标记为完毕或推迟;
  • 当第三方应用更新接口后便可直接相应用进行高速操作。


               

近期研究了下iOS8的官方文档。对这项功能进行了钻研,基本上效果已经出来。由于远程消息推送比較繁琐,须要后台支持,所以我用本地推送来取代的,基本上它们要调用的代理方法类似。

长话短说,以下我就说下主要的流程:

1.创建消息上面要加入的动作(button的形式显示出来)

 UIMutableUserNotificationAction *action = [[UIMutableUserNotificationAction alloc] init];
action.identifier = @"action";//button的标示
action.title=@"Accept";//button的标题
action.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
// action.authenticationRequired = YES;
// action.destructive = YES; UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init]; //第二button
action2.identifier = @"action2";
action2.title=@"Reject";
action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序。在后台处理
action.authenticationRequired = YES;//须要解锁才干处理,假设action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
action.destructive = YES;

2.创建动作(button)的类别集合

UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
categorys.identifier = @"alert";//这组动作的唯一标示
[categorys setActions:@[action,action2] forContext:(UIUserNotificationActionContextMinimal)];

3.创建UIUserNotificationSettings,并设置消息的显示类类型

 UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:[NSSet setWithObjects:categorys, nil]];

4.注冊推送

[[UIApplication sharedApplication] registerUserNotificationSettings:uns];
<pre name="code" class="objc">[[UIApplication sharedApplication] registerForRemoteNotifications];

UserRequires call to registerUserNotificationSettings:• SilentInfo.plist UIBackgroundModes array contains remote-notification•
Can use both

离线push数据包带上特定Category字段(字段内容需要前后台一起定义。必需要保持一致),手机端收到时。就能展示上述代码相应Category设置的button,和响应button事件。

// payload example:  {"aps":{"alert":"Incoming call", "sound":"default", "badge": 1, "category":"incomingCall"}}

重大改动: 离线push数据包之前能带的数据最多为256字节,如今APPLE将该数值放大到2KB。

这个应该是仅仅针对IOS8的。

5.发起本地推送消息

 UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:5];
notification.timeZone=[NSTimeZone defaultTimeZone];
notification.alertBody=@"測试推送的快捷回复";
notification.category = @"alert";
[[UIApplication sharedApplication] scheduleLocalNotification:notification]; //用这两个方法推断是否注冊成功
// NSLog(@"currentUserNotificationSettings = %@",[[UIApplication sharedApplication] currentUserNotificationSettings]);
//[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];

6.在AppDelegate.m里面对结果进行处理

//本地推送通知
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
//成功注冊registerUserNotificationSettings:后,回调的方法
NSLog(@"%@",notificationSettings);
} -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
//收到本地推送消息后调用的方法
NSLog(@"%@",notification);
} -(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler
{
//在非本App界面时收到本地消息,下拉消息会有快捷回复的button,点击button后调用的方法,依据identifier来推断点击的哪个button,notification为消息内容
NSLog(@"%@----%@",identifier,notification);
completionHandler();//处理完消息。最后一定要调用这个代码块
} //远程推送通知
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//向APNS注冊成功,收到返回的deviceToken
} -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
//向APNS注冊失败,返回错误信息error
} -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
//收到远程推送通知消息
} -(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler
{
//在没有启动本App时。收到server推送消息。下拉消息会有快捷回复的button,点击button后调用的方法,依据identifier来推断点击的哪个button
}

执行之后要按shift + command +H,让程序推到后台,或者按command+L让模拟器锁屏,才会看到效果。

假设是程序退到后台了,收到消息后下拉消息,则会出现刚才加入的两个button;假设是锁屏了,则出现消息后,左划就会出现刚才加入的两个button。

效果例如以下:

  

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXVqaWFueGlhbmc2NjY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

如今仅仅是能让消息中显示出button的形式,带输入框的还在研究中,假设大研究了,也谢谢分享什么啊。我们共同努力改善!

代码:https://github.com/ios44first/PushDemo

(转载请注明地址。谢谢 http://blog.csdn.net/yujianxiang666/article/details/35260135)

iOS8推送消息的回复处理速度的更多相关文章

  1. iOS8推送消息的快速回复处理

    http://blog.csdn.net/yujianxiang666/article/details/35260135 iOS8拥有了全新的通知中心,有全新的通知机制.当屏幕顶部收到推送时只需要往下 ...

  2. IOS中程序如何进行推送消息(本地推送,远程推送)

    [1]-------------什么是推送消息? 我就以一张图解释------------ [2]-----------IOS程序中如何进行本地推送?----------- 2.1,先征求用户同意 1 ...

  3. IOS 本地通知推送消息

    在现在的移动设备中,好多应用性的APP都用到了推送服务,但是有好多推送的内容,比如有的只是单纯的进行推送一个闹钟类型的,起了提醒作 用,有的则是推送的实质性的内容,这就分为推送的内容来区别用什么推送, ...

  4. 点击推送消息跳转处理(iOS)

    当用户点击收到的推送消息时候,我希望打开APP,并且跳转到对应的界面,这就需要在AppDelegate里面对代理方法进行处理. 当用户点击推送消息打开APP的时候会调用 - (BOOL)applica ...

  5. iOS 远程推送消息解析及逻辑处理

    关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...

  6. iOS监听模式系列之推送消息通知

    推送通知 和本地通知不同,推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: ...

  7. 微信硬件平台(八) 4 ESP8266通过微信公众号给用户推送消息

    https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=自己申请微信公众号的TOKEN 输出结果:  由于aRDUINO串 ...

  8. 极光推送消息——Alias别称方式(Andirod)

    1.pom文件引入相关jar包 <!--极光推送消息start--> <dependency> <groupId>net.sf.json-lib</group ...

  9. 使用PushSharp给iOS应用推送消息

    PushSharp是一个C#编写的服务端类库,用于推送消息到各种客户端,支持iOS(iPhone/iPad).Android.Windows Phone.Windows 8.Amazo.Blackbe ...

随机推荐

  1. 《转》VC++多线程编程

    原地址:http://www.cnblogs.com/wxfasdic/archive/2010/09/23/1833522.html 留个纪念,不错的总结.十个例子清晰列举啦多线程编程的奥妙.  V ...

  2. [Android]获取设备相关信息

    public static int screenWidth(Activity activity) { DisplayMetrics dm = new DisplayMetrics(); activit ...

  3. OCP读书笔记(10) - 使用闪回技术I

    使用闪回技术查询数据 闪回查询:就是查询表在过去某个时间点的数据,所用到的技术就是undo数据 SQL> conn scott/tiger 创建测试表 SQL> create table ...

  4. 在C#中子线程如何操作主窗口线程上的控件

    在C#中子线程怎样操作主线程中窗口上控件 在C#中,直接在子线程中对窗口上的控件操作是会出现异常,这是因为子线程和运行窗口的线程是不同的空间,因此想要在子线程来操作窗口上的控件.是不可能简单的通过控件 ...

  5. Thrift反序列化导致OOM(转)

    概述 最近线上的日志处理服务偶尔会出现Out Of Memory的问题,从Exception的call stack中顺藤摸瓜,最终定位到是thrift反序列化的问题. 发现问题 先交代一下问题现场: ...

  6. 七古&#183;夏泳小梅沙

    七古·夏泳小梅沙 文/天地尘埃2020 近日与同学等海泳小梅沙,归后背黑而焦灼如针刺.一周后焦皮始脱尽,发现还是往日那个黄种人.涂鸦一文以记之. 一湾碧水青山前, 夏日方来酷暑煎. 疏狂仅仅愿清凉刻, ...

  7. NTFS权限设置时卡死

    客户是一家技术咨询和零部件制造的小公司,使用的文件服务器为R410上插4块1T硬盘做raid 5,服务器操作系统为windows server 2008R2,所有的设计资料的授权都是结合域账户和NTF ...

  8. HTML转义字符大全(转)

    1.常用转义字符 转义字符串(Escape Sequence)也称字符实体(Character Entity).在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符 ...

  9. SlidingMenu开源项目滑动界面的实现总结

    先上图 须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMe ...

  10. atitit.java方法属性赋值and BeanUtils 1.6.1 .copyProperty的bug

    atitit.java分配给属性值方法and BeanUtils 1.6.1 .copyProperty的bug 1. core.setProperty(o, "materialId&quo ...