内容简介:玩转 iOS 开发:iOS 10 新特性《Notification Content Extensions》
文章分享至我的个人技术博客: https://cainrun.github.io/14974988224036.html
Notification Content Extensions
在之前我们就讲过苹果爸爸在 iOS 10
推出了一个新的 UserNotification
框架, 但苹果爸爸的野心不小, 不单单推出框架那么简单, 而且连 Extension
都给你搞了一个, 哼哼, 我看还有谁~
这里所演示的项目是和之前一样的, 如果找不到的盆友可以到这里去看看.
添加Notification Extension
回到我们的项目, 拷贝一份新的, 然后添加 Notification Extension
:
配置Notification Extension Info
添加完 Extension
之后, 我们需要来配置一下 Info.plist
文件, 这里我们要添加点东西:
- UNNotificationExtensionDefaultContentHidden
- 设置成为YES
- UNNotificationExtensionCategory
- 和我们之前项目的
AppDelegate.m
文件所添加的Category
保持一致, 我这里是reminder
- 和我们之前项目的
- UNNotificationExtensionInitialContentSizeRatio
- 这个东东我改为0.5
修改完成后的结果:
来通知的效果:
自定义一个小方法
上面的东西都搞定了之后, 那么接下来就是要自定义一个小方法:
- (void)addShakeAnimation { CAKeyframeAnimation *frameAnimation = [CAKeyframeAnimation animation]; frameAnimation.keyPath = @"transform.translation.x"; frameAnimation.duration = 1; frameAnimation.repeatCount = MAXFLOAT; frameAnimation.values = @[@-20.0, @20.0, @-20.0, @20.0, @-10.0, @10.0, @-5.0, @5.0, @0.0]; frameAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; [self.view.layer addAnimation:frameAnimation forKey:@"shake"]; } - (void)removeShakeAnimation { [self.view.layer removeAnimationForKey:@"shake"]; }
-
addShakeAnimation添加摇摆动画的方法
-
removeShakeAnimation删除摇摆动画的方法
效果:
- didReceiveNotificationResponse:completionHandler:方法
在 Notification Extension
里, 有这么一个方法叫做: - didReceiveNotificationResponse:completionHandler:
, 这个方法可以获取通知里的 Action
事件, 我这里是这么写的:
- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(UNNotificationContentExtensionResponseOption))completion { if ([response.actionIdentifier isEqualToString:@"cancel"]) { UNNotificationRequest *request = response.notification.request; NSArray *identifiers = @[request.identifier]; // 根据标识符删除等待通知 [[UNUserNotificationCenter currentNotificationCenter] removePendingNotificationRequestsWithIdentifiers:identifiers]; // 根据标识符删除发送通知 [[UNUserNotificationCenter currentNotificationCenter] removeDeliveredNotificationsWithIdentifiers:identifiers]; self.label.text = @"点击了取消按钮"; // 删除动画效果 [self removeShakeAnimation]; // 不隐藏通知页面 completion(UNNotificationContentExtensionResponseOptionDoNotDismiss); } else { // 隐藏通知页面 completion(UNNotificationContentExtensionResponseOptionDismiss); } }
如果不懂这个动画应用的话, 我在度娘里看到了一篇文章, 可以来看看 IOS 核心动画之CAKeyframeAnimation
整体的运行效果:
总结
文章里只是简单的讲解, 如果还想了解更多的话, 可以自行去查看WWDC 2016的视频讲解.
工程地址
项目地址: https://github.com/CainRun/iOS-10-Characteristic/tree/master/6.Notification%20Content%20Extension
最后
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Chrome 72 开发者工具新特性
- 基于 Kotlin 特性开发的有限状态机
- 玩转 iOS 开发:iOS 10 新特性《Measurement》
- PyQt 5 开发之旅之 OpenCV 的 GUI 特性
- 前端开发不得不知的ES6十大新特性
- 每个开发者都应该了解的一些C++特性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Is Parallel Programming Hard, And, If So, What Can You Do About
Paul E. McKenney
The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!