iOS10富文本推送--NotificationContentExtension
程序员文章站
2022-04-15 10:48:03
notificationcontentextension文件
根据以下contentextension info.plist文件中的配置决定category的设置,两者必须一致
宏定义采用下列代码...
notificationcontentextension文件
根据以下contentextension info.plist文件中的配置决定category的设置,两者必须一致
宏定义采用下列代码:
//推送相关设置 #define action_category_identifier_image @"image_category" //图片类别标识符 #define action_category_identifier_audio @"audio_category" //音频类别标识符 #define action_category_identifier_movie @"movie_category" //视频类别标识符 #define action_identifier_image_confirm @"imageconfirmaction" //图片确认按钮 #define action_identifier_image_concel @"imageconcelaction" //图片取消按钮 #define action_identifier_audio_confirm @"audioconfirmaction" //音频确认按钮 #define action_identifier_audio_concel @"audioconcelaction" //音频取消按钮 #define action_identifier_movie_confirm @"movieconfirmaction" //视频确认按钮 #define action_identifier_movie_concel @"movieconcelaction" //视频取消按钮 #define action_title_image_confirm @"查看" //图片确认按钮标题 #define action_title_image_concel @"忽略" //图片取消按钮标题 #define action_title_audio_confirm @"查看" //音频确认按钮标题 #define action_title_audio_concel @"忽略" //音频取消按钮标题 #define action_title_movie_confirm @"查看" //视频确认按钮标题 #define action_title_movie_concel @"忽略" //视频取消按钮标题
采用的是自定义布局,注意如果想使用这个布局的话,
你必须提前在service里面设置好categoryidentifier,它的值是你plist文件里面的任何一个
@interface notificationviewcontroller () @property (nonatomic, strong)uiimageview *imageview; @property (nonatomic,strong)uilabel *label; @end
lazyload
-(uiimageview *)imageview{ if (_imageview == nil) { _imageview = [[uiimageview alloc] init]; _imageview.contentmode = uiviewcontentmodescaleaspectfit; } return _imageview; }
addview
- (void)viewdidload { [super viewdidload]; [self.view addsubview:self.imageview]; // do any required interface initialization here. }
取出多媒体资料并展示到视图上,下面为image
- (void)didreceivenotification:(unnotification *)notification { nslog(@"notification.request.content.userinfo%@",notification.request.content.userinfo); unnotificationcontent * content = notification.request.content; cgfloat widthtime = 2; if ([uiscreen mainscreen].bounds.size.width>375) { widthtime = 3.0; } uiimage *image = nil; if (content.attachments.count) { unnotificationattachment * attachment_img = content.attachments[0]; if (attachment_img.url.startaccessingsecurityscopedresource) { image = [uiimage imagewithcontentsoffile:attachment_img.url.path]; self.imageview.image = image; } } self.imageview.frame = self.view.frame; self.label.text = notification.request.content.body; }
响应相关action
-(void)didreceivenotificationresponse:(unnotificationresponse *)response completionhandler:(void (^)(unnotificationcontentextensionresponseoption))completion{ unnotificationcontent *content = [response.notification.request.content mutablecopy]; nsstring *category = content.categoryidentifier; nsstring *actionidentifier = [response.actionidentifier copy]; if ([category isequaltostring:action_category_identifier_image]) { if ([actionidentifier isequaltostring:action_identifier_image_confirm]) { completion(unnotificationcontentextensionresponseoptiondismissandforwardaction); }else{ completion(unnotificationcontentextensionresponseoptiondismiss); } }else if ([category isequaltostring:action_category_identifier_audio]){ if ([actionidentifier isequaltostring:action_identifier_audio_confirm]) { completion(unnotificationcontentextensionresponseoptiondismissandforwardaction); }else{ completion(unnotificationcontentextensionresponseoptiondismiss); } }else{ if ([actionidentifier isequaltostring:action_identifier_movie_confirm]) { completion(unnotificationcontentextensionresponseoptiondismissandforwardaction); }else{ completion(unnotificationcontentextensionresponseoptiondismiss); } } }