iOS_远程推送(iOS10)_UNNotificationContentExtension
来源:互联网 发布:钱龙软件怎么样 编辑:程序博客网 时间:2024/06/05 17:41
UNNotificationContentExtension简介
- UNNotificationContentExtension这个类,也是iOS10推送的新特性,官方文档用这么一句话,简单的解释了一下,Presents a custom interface for a delivered local or remote notification.(当你收到远程或者本地通知的时候,弹出一个自定义界面)
- 界面可以分为三大部分
- 顶部:App名称;
- 中部:上中下三个视图和一个自定义的View视图
- 底部:原本的推送标题、推送内容等
如何新建一个UNNotificationContentExtension
创建target
File->New->Target…
选择NotificationContentExtension按钮,然后进行程序的命名
最终会生成下图所示文件夹
- 看过UNNotificationServiceExtension的可以发现,两者的创建流程基本一致,无非生成的文件不同。
如何使用UNNotificationContentExtension
- 下面介绍一下生成的四个文件
NotificationViewController文件
- 看名字就知道这是一个继承UIViewController的控制器文件。
- 在此文件内有两个方法:
- 对于
- (void)viewDidLoad;
就不多说了,基本都会用。 - 对于
- (void)didReceiveNotification:(UNNotification *)notification;
这个方法,内部有一行代码self.label.text = notification.request.content.body;
从这行代码中我们可以看出,这是接收到通知时,进行的回调方法,在这个方法内,我们对页面效果进行修改和展示。 - 使用示例如下:
- 对于
- (void)didReceiveNotification:(UNNotification *)notification { // 这个方法,可以给自己的控件赋值啊,调整frame啊等等,我在这里打印出来了通知的内容,供大家使用。 NSDictionary *dict = notification.request.content.userInfo; // 这里可以把打印的所有东西拿出来 NSLog(@"%@",dict); /****************************打印的信息是************ aps = { alert = "This is some fancy message."; badge = 1; from = "hello word"; imageAbsoluteString = "http://upload.univs.cn/2012/0104/1325645511371.jpg"; "mutable-content" = 1; sound = default; };} *******************************************/}
简单介绍其遵守的协议<UNNotificationContentExtension>
- 在
<UNNotificationContentExtension>
中,存在下面这个方法,这个方法的用法与UNNotificationServiceExtension中的一样。
- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(UNNotificationContentExtensionResponseOption option))completion;
- 在
<UNNotificationContentExtension>
中,有着这么一个枚举
typedef NS_ENUM(NSUInteger, UNNotificationContentExtensionMediaPlayPauseButtonType) { // 没有播放按钮 UNNotificationContentExtensionMediaPlayPauseButtonTypeNone, // 有播放按钮,点击播放之后,按钮依旧存在,类似音乐播放的开关 UNNotificationContentExtensionMediaPlayPauseButtonTypeDefault, // 有播放按钮,点击后,播放按钮消失,再次点击暂停播放后,按钮恢复 UNNotificationContentExtensionMediaPlayPauseButtonTypeOverlay,}
- 在
<UNNotificationContentExtension>
中,有以下几个属性
// 设置播放按钮的属性@property (nonatomic, readonly, assign) UNNotificationContentExtensionMediaPlayPauseButtonType mediaPlayPauseButtonType;// 设置播放按钮的frame@property (nonatomic, readonly, assign) CGRect mediaPlayPauseButtonFrame;// 设置播放按钮的颜色@property (nonatomic, readonly, copy) UIColor *mediaPlayPauseButtonTintColor;// 开始跟暂停播放- (void)mediaPlay;- (void)mediaPause;
- 在这个协议内也有以下内容:
// 这两个方法只是会被单纯的调用,不会被监听到,因此,也不会在这两个方法内回调。@interface NSExtensionContext (UNNotificationContentExtension)// 控制播放- (void)mediaPlayingStarted // 控制暂停- (void)mediaPlayingPaused @end
- 由于这些属性都是只读的,因此我们只能调用他们的get方法,来设置buttton的样式、大小、颜色
MainInterface.storyboard文件
- 这就是个storyboard文件,系统在创建时就与NotificationViewController进行了绑定,便于开发者进行可视化编程,布局页面效果。
Info.plist文件
- 从上面的截图,可以看出,主要有三个字段NSExtensionAttributes、NSExtensionMainStoryboard、NSExtensionPointIdentifier。
NSExtensionAttributes
- 在这个字段内有UNNotificationExtensionCategory、UNNotificationExtensionInitialContentSizeRatio这两个字段。
UNNotificationExtensionCategory
- 系统生成的是一个字符串类型的Value值,我们可以将其修改成数组类型,然后在内添加元素,示例如下图所示:
- 这里面的两个值是我随便写的,可以与后台商量,确定字段的值。
- 在收到通知的时候,我们可以让后台把这个通知的categoryIdentifier带上,作用是,我们可以根据视频,音乐,图片,来分别自定义我们的通知内容。不同的分类标识符,也会在我们讲到UNNotificationAction的时候,帮助我们区分是什么类型的通知,方便我们对不同类型的通知做出不同的操作行为。
- (void)didReceiveNotification:(UNNotification *)notification {// 不同的分类标识符 NSString *categoryId = notification.request.content.categoryIdentifier;}
UNNotificationExtensionInitialContentSizeRatio
- 这个值的类型是一个浮点类型,代表的是高度与宽度的比值。系统会使用这个比值,作为初始化view的大小。举个简单的例子来说,如果该值为1,则该视图为正方形。如果为0.5,则代表高度是宽度的一半。
NSExtensionMainStoryboard
- 系统默认生成的,用于绑定Storyboard和ViewController,可以进行修改,只要不嫌自己重新建一个麻烦。
NSExtensionPointIdentifier
- 系统默认生成的,直接可以用,不用修改。
代码地址:
https://github.com/FlyingKuiKui/PushTestApp.git
阅读全文
0 0
- iOS_远程推送(iOS10)_UNNotificationContentExtension
- iOS_远程推送(iOS10)_UNNotificationServiceExtension
- iOS_远程推送详解
- iOS_远程推送(官方)
- iOS_远程推送
- iOS10 极光推送(远程) 小结
- iOS10 远程推送适配
- iOS10 远程推送和本地推送
- IOS10 Notification远程推送通知(三)
- iOS10本地推送和远程推送的原理
- iOS10 推送
- iOS APNs远程推送(详细图文) + iOS10相关
- iOS_本地推送
- iOS_极光推送
- iOS_推送证书流程
- iOS10 关于推送
- iOS10注册极光推送
- iOS10 推送最新配置
- 帮未来岳父修电脑记
- C语言 异或加密
- 关于怎么获取kafka指定位置offset消息
- BFPRT算法
- 【SSLGZ 2676】2017年8月10日提高组T1 数学
- iOS_远程推送(iOS10)_UNNotificationContentExtension
- HPU1413- StarFarming [最短路]
- C语言入门:选择排序(代码实现,而不是排序方法阐述)
- javascript测试框架mocha
- 虚拟机kali连wifi的问题
- node中使用consolidate后报错Cannot find module 'ejs'
- mysql搭建备库---使用xtrabackup
- python数据结构之列表
- Sliding Window (单调队列)