2017-10-05 68 views
0

正如我们所知,此功能在推送通知标题准备就绪时显示。更改推送通知内容以编程方式

-(void)userNotificationCenter:(UNUserNotificationCenter*)center 
willPresentNotification:(UNNotification*)notification 
withCompletionHandler:(void (^)(UNNotificationPresentationOptions 
options))completionHandler{ 


} 

在这个函数中有Class(UNNotification)的通知,其中包含将在横幅上显示的信息。 现在的问题是,我们可以在应用程序内更改推送通知的内容吗? 我可以用这种方式存储所有的内容。

NSString *title=notification.request.content.title; 
NSString *subTitle=notification.request.content.subTitle; 

等等。 但问题是这些属性(title,subTite)只是只读的。 有没有办法改变这个完成处理程序或其他方法内的内容?

+1

为什么你不能从后端更改推送通知的有效载荷。 APS将显示横幅,但您可以在有效载荷字典中添加更多信息 –

+0

是的,它是一种解决方案,但我现在无法访问后端。由于某些原因,我需要在应用程序中执行此操作。 –

回答

4

创建NotificationService扩展名。当您在有效负载的aps内发送可变内容标志为1时,iOS系统将启动您的扩展并为您提供更改通知内容的机会。即使你的应用程序处于死亡状态,这也可以工作。唯一的缺点是,这仅适用于iOS 10及更高版本。

+1

旧的iOS版本的后备将是安排一个本地推送通知 - 这种行为对我们来说很好:) – Lepidopteron

+2

@Lepidopteron:我想通过调度本地通知,你的意思是发送一个无声推送,然后安排本地通知。但是,在这种情况下,如果用户终止了应用程序,则无法推送沉默推送。 –

+0

它确实是一个很好的灵魂,但我现在没有权限后端。意味着没有人可以立即从后端更新新的P12文件(扩展文件)。 –