一、iOS 10 推送通知 UserNotifications
1、推送内容丰富
内容可包括:title,subtitle,body,attachments, 图片,音频,视频等
锁屏时收到消息样式如下, 可通过3D Touch触发右图:
2、技术方面
引入UserNotifications.framework
1) File->New->Target 添加: Notification service 和 Notification Content
2)推送UI:下图中header和default区域是默认的,可修改, custom和actions 两部分可以自定义View,
(1)添加Notification Content后自动生成NotificationViewController类,定义界面
(2)添加Notification service后自动生成NotificationService类, 接收通知处理方法didReceiveNotificationRequest:withContentHandler(接收到通知后,展示前,可对通知内容做修改,下载图片、视频并保存等);
(3)actions: 创建UNNotificationAction,带输入框为UNTextInputNotificationAction, 通过方法setNotificationCategories:添加到通知中心UNUserNotificationCenter
(4) action点击处理方法userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler, 通过response.actionIdentifier区分操作按钮点击
3) 推送管理:
更新或删除未读通知:
(1)通过方法addNotificationRequest:, 不改变identifier,重新添加,可以更新原来通知
(2)通过removePendingNotificationRequestsWithIdentifiers方法, 删除已发出推送
(3)还包括删除所有推送,查看已发出推送等 UNUserNotificationCenter.h
参考:https://github.com/LeeWongSnail/iOS10APNSTest
http://www.cnblogs.com/MasterPeng/p/5909752.html
二、Widget
1、简单效果图
2、技术方面
1) 添加Today Extension
2)绘制UI , TodayViewController.m
绘制的内容默认与左侧边界有一定距离, NCWidgetProviding协议中调整方法widgetMarginInsetsForProposedMarginInsets:在iOS10后也会去掉
3)调app
extension和containing app是两个独立进程,可以通过openURL:completionHandler:方法,点击跳转到应用对应页面
4)数据共享: Capabilities—>AppGroups
通过App Groups提供的同一group内app共同读写区域,可以用NSUserDefaults和NSFileManager两种方式实现extension和containing app之间的数据共享。