【问题标题】:Change Push Notifications Content Programmatically以编程方式更改推送通知内容
【发布时间】:2017-10-05 07:06:32
【问题描述】:

我们知道当推送通知横幅准备好呈现时调用此函数。

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


 }

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

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

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

【问题讨论】:

  • 为什么不从后端更改推送通知的负载。 aps 将显示在横幅中,但您可以在有效负载字典中添加更多信息
  • 是的,这是一个解决方案,但我现在无法访问后端。由于某些原因,我需要在应用程序中执行此操作。

标签: ios objective-c ios10 ios11


【解决方案1】:

创建NotificationService 扩展。当您在负载中的 aps 中发送 mutable-content 标志为 1 时,iOS 系统会启动您的扩展程序并让您有机会更改通知内容。即使您的应用程序处于终止状态,这也将起作用。唯一的缺点是这仅适用于 iOS 10 及更高版本。

【讨论】:

  • 旧 iOS 版本的后备方案是安排本地推送通知 - 这种行为对我们来说很好:)
  • @Lepidopteron:我想通过安排本地通知,您的意思是发送静默推送,然后安排本地通知。但是,在这种情况下,如果用户终止了应用程序,silet push 将不会被传递。
  • 它确实是一个很好的灵魂,但我现在没有访问后端的权限。意味着现在没有人可以从后端更新新的 P12 文件(扩展文件)。
  • @ZaheerUdeenBabar:那么恐怕你无能为力了。通知系统会将有效负载显示为已收到。
猜你喜欢
  • 1970-01-01
  • 2018-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多