iOS 在收到静默远程通知后发送本地通知
Posted
技术标签:
【中文标题】iOS 在收到静默远程通知后发送本地通知【英文标题】:iOS send a local notification after receiving a silent remote notification 【发布时间】:2019-11-04 20:19:39 【问题描述】:当服务器发送静默通知时,我想检查用户是否处于正确的状态,然后如果用户处于正确的状态,则发出本地通知,或者如果用户不在,则不执行任何操作正确的状态。
这可行吗?
谢谢!
【问题讨论】:
【参考方案1】:如果您使用"content-available": 1
发送推送通知,它将是静默推送(参见Apple 的local and remote notification guide)。
然后,您希望使用UNUserNotificationCenter.current().add()
有条件地安排本地通知,并为UNUserNotificationCenterDelegate
实现委托方法。
【讨论】:
【参考方案2】:这不是个好主意。 系统将后台通知视为低优先级。 证明:https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app
所以后台通知不适合您。 如果您不想在某些情况下显示通知,您只需在 UNUserNotificationCenterDelegate 的实现方法不调用完成处理程序:
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
guard self.shouldShowNotification(notification) else return // don't call completion handler if we're don't want to show push
completionHandler(.alert)
func shouldShowNotification(_ notification: UNNotification) -> Bool
if ...
return true
else
return false
【讨论】:
以上是关于iOS 在收到静默远程通知后发送本地通知的主要内容,如果未能解决你的问题,请参考以下文章