移动推送通知目前只能创建普通通知和标准视图的自定义样式通知,无法满足部分复杂的业务需求。如果您的App需要创建较为复杂的消息通知,建议使用移动推送透传消息,并在接收到消息后自行创建通知。
除了Notification Service Extension,另一个通知相关的Extension为内容扩展Content Extension,可用于自定义通知详情UI,如修改样式、颜色等。
iOS 10收到通知后,支持下拉通知(经测试iPhone 5c不支持,建议使用iPhone 6以上手机测试) or 3D touch展开通知详情,携带图片的通知详情样式默认如下图所示,内容扩展可针对通知详情进行定制。
内容扩展添加步骤:
NSExtensionAttributes
NSExtensionMainStoryboard,storyboard文件名,默认填充为MainInterface;(必需)
NSExtensionPointIdentifier,默认填充为com.apple.usernotifications.content-extension;(必需)
UNNotificationExtensionCategory,指定自定义通知详情UI适用于哪些category,可为String or Dictionary;(必需)
UNNotificationExtensionInitialContentSizeRatio,通知视图长宽比例;(必需)
UNNotificationExtensionDefaultContentHidden,原本通知内容是否隐藏,若不指定,默认为NO;(可选)
Xcode -> File -> New -> Target,选择Notification Content,如下图所示:
输入Target名,Xcode自动生成NotificationViewController头文件和源文件,MainInterface.storyboard和Info.plist,其中NotificationViewController和MainInterface.storyboard一起定义了通知详情的UI。
Info.plist中自动生成NSExtension相关KV配置,具体含义如下所示:
OpenAPI推送时,必需通过setiOSNotificationCategory接口指定通知category,只有指定的category在Info.plist的UNNotificationExtensionCategory设置,才能保证通知详情自定义UI生效。
参考iOS Demo Notification Content Extension的实现方式,进行通知详情自定义UI的设置,如下图所示,绿色的aliyun-body为自定义的展示UI,字段内容通过拷贝通知内容得来。