摘要:iOS 8提供了一个令人兴奋的新API来创建交互式通知,它能让你在你的应用之外为用户提供额外的功能。
由于发现网上还没有关于如何实现它的比较好的示例教程,所以我将在这篇文章里来实现一个简单的交互式通知示例,分享给大家。
和以前简单地注册通知类型(sounds、banners、alerts)相比,现在你可以注册自定义的通知类别和动作。类别描述了应用自定义的通知类型,并且包含用户能够执行的响应动作。比如,你收到一个通知说某人在社交网上了关注了你,作为回应你可能会想要关注他或者忽略。
这里是一个非常简单的使用Objective-C编写的示例,演示如何注册一个包含两个动作的通知。
01
NSString * const NotificationCategoryIdent = @"ACTIONABLE";
02
NSString * const NotificationActionOneIdent = @"ACTION_ONE";
03
NSString * const NotificationActionTwoIdent = @"ACTION_TWO";
04
- (void)registerForNotification {
05
UIMutableUserNotificationAction *action1;
06
action1 = [[UIMutableUserNotificationAction alloc] init];
07
[action1 setActivationMode:UIUserNotificationActivationModeBackground];
08
[action1 setTitle:@"Action 1"];
09
[action1 setIdentifier:NotificationActionOneIdent];
10
[action1 setDestructive:NO];
11
[action1 setAuthenticationRequired:NO];
12
UIMutableUserNotificationAction *action2;
13
action2 = [[UIMutableUserNotificationAction alloc] init];
14
[action2 setActivationMode:UIUserNotificationActivationModeBackground];
15
[action2 setTitle:@"Action 2"];
16
[action2 setIdentifier:NotificationActionTwoIdent];
17
[action2 setDestructive:NO];
18
[action2 setAuthenticationRequired:NO];
19
UIMutableUserNotificationCategory *actionCategory;
20
actionCategory = [[UIMutableUserNotificationCategory alloc] init];
21
[actionCategory setIdentifier:NotificationCategoryIdent];
22
[actionCategory setActions:@[action1, action2]
23
forContext:UIUserNotificationActionContextDefault];
24
NSSet *categories = [NSSet setWithObject:actionCategory];
25
UIUserNotificationType types = (UIUserNotificationTypeAlert|
26
UIUserNotificationTypeSound|
27
UIUserNotificationTypeBadge);
28
UIUserNotificationSettings *settings;
29
settings = [UIUserNotificationSettings settingsForTypes:types
30
categories:categories];
31
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
32
}
要发送这个通知类型,只需简单的将category添加到声明里。
1
"aps" : {
2
"alert" : "Pull down to interact.",
3
"category" : "ACTIONABLE"
4
}
现在为了响应用户选择的操作,你需要在UIApplicationDelegate协议添加两个新方法:
1
application:handleActionWithIdentifier:forLocalNotification:completionHandler:
2
application:handleActionWithIdentifier:forRemoteNotification:completionHandler
用户从你的推送通知中选择一个动作后,该方法将会在后台被调用。
01
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler {
02
if ([identifier isEqualToString:NotificationActionOneIdent]) {
03
NSLog(@"You chose action 1.");
04
}
05
else if ([identifier isEqualToString:NotificationActionTwoIdent]) {
06
NSLog(@"You chose action 2.");
07
}
08
if (completionHandler) {
09
completionHandler();
10
}
11
}
如文档所述,通过标示符来判定是哪个动作被选中,最后调用completionHandler,即可大功告成。这里仅仅简单的演示了一下iOS 8 新通知API表面上的功能,今后我将更深入的研究一下,有机会再和大家分享。
分享到:
相关推荐
iOS关于界面设计与客户交互相关指导操作, 学习相关知识更利于开发一个受人欢迎的App.
在iOS 9上使用文本输入进行交互式通知在iOS 9上测试具有交互式通知和文本输入功能的项目
游戏引擎移植者现身讲解:《在iOS平台上用Cocos2D做开发》 | iOS独立开发者 秦春林 | iOS DevCamp 议题简介:Cocos2d是iOS平台上著名的游戏引擎,它开源,结构简单清晰,功能强大,是个人或者中小型团队开发的首选...
Apple 添加了对在运行时自动计算 UILabel 的preferredMaxLayoutWidth的支持,当在 Interface Builder 中将该属性设置为Automatic时,这使得在 iOS 8 中创建多行标签变得更加容易。 同样在 iOS 8 中,Apple 为 UITa
iOS8环境下本地通知的创建 UIMutableUserNotificationCategory *shoppingListReminderCategory = [[UIMutableUserNotificationCategory alloc] init]; shoppingListReminderCategory.identifier = @...
演示如何使用 WRLD iOS API 在 iOS 设备上显示漂亮的交互式 3D 地图的示例。 入门 先决条件 Xcode(7.3或更高版本) 一个 正在安装 在 repo 的根目录中,运行pod install以使用设置依赖。 open api-samples....
IOS加载bundle里的html并实现WebView与JavaScript的交互
ios7之后,ios中加入了JavaScriptCore框架。该框架让Objective-C和JavaScript代码直接的交互变得更加的简单方便。ios 原生与js交互,demo代码,其中包括利用JSBinding简单使用!
第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分:如何在iOS App中添加启动画面? 第九部分:从UITableView中删除一行和Model-View-Controller 第十部分:使用Storyboards创建导航控制器和表...
用于iOS项目的交互式时钟组件。 ##我该如何使用? 将ALDClock.h和ALDClock.m都添加到您的项目,然后#import "ALDClock.h"到您自己的类中。 通过以下方式创建时钟的实例: ALDClock *clock = [[ALDClock alloc] ...
在最基本的形式中,它有助于以声明方式轻松安排本地通知。 最先进的是,它引入了一种全新的查看本地通知的方式,具有“通知时间线”的概念,类似于WidgetKit或ClockKit API。 建于 。 作者和维护者: 警告! ...
iOS 8 分屏浏览iOS 8 使UISplitViewController通用——即它适用于所有 iOS 设备。 为了支持这一点,它可以根据容器的水平尺寸类更改其视图控制器层次结构。 由于这可以在运行时更改,因此添加了新的 API 以支持...
IOS滚动文本通知
第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分:如何在iOS App中添加启动画面? 第九部分:从UITableView中删除一行和Model-View-Controller 第十部分:使用Storyboards创建导航控制器和表...
iOS开发中使用UIWebView与JavaScript交互的相关代码,js调用Oc,Oc调用js……
ios WKWebView与JS交互实战技巧,所以在这整理了一些 App 与 Web 交互的方法。
第一部分:Hello World!创建你的第一个iPhone App 第二部分:iOS编程基础:Hello World应用程序如何工作的?...第七部分:如何在Xcode 4.* 添加定制字体到iOS 应用程序中? 第八部分:如何在iOS App中添加启动画面?
适用于以Swift编写的iOS的可定制,交互式,自动扩展和折叠式侧边菜单。 以下是一些可定制“交互式边菜单”的方法: 动画时长 可见内容宽度 内容量表 UIViewSpring动画 动画曲线 针对不同方向的自定义动画设置 通讯...