无法触发 did接收通知委托,当您将应用从后台带到前台



我已经为ios10实现了推送通知。 点击通知警报将触发"didReceive"委托,如果我在前台,我将通知保存在 coredata 中或静默通知中。问题是如果我在后台收到一堆通知,当我将我的应用程序从后台带到前台时,是否有可能调用"didReceive"委托或任何其他推送通知委托,如果我可以将我的项目同步到 coredata。

注意我不想使用静默通知或点击警报在后台同步(didReceive或任何委托(项目。当我将应用程序带到前台时,它应该会自动同步推送通知堆栈

func handleInboxNotification(didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
if let inboxValue = userInfo["inbox"] as? String, let value = inboxValue.boolValue(), value {
let mappedMessage = MessageCenterSDK.shared.constructReorderedDictionary(userInfo: userInfo)
MessageCenterDataManager.shared.synchronize(messages: mappedMessage)
messageCenterDelegate?.didFindNewMessages(hasNewMessages: true)
}
}

func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
/// Handle outbound remote
handleInboxNotification(didReceiveRemoteNotification: response.notification.request.content.userInfo)
completionHandler()
}

我遇到了同样的问题,但我的目标是iOS 13,我正在使用BGTaskScheduler在后台从服务器获取数据以及处于终止状态。

我也想在应用程序处于后台时触发通知。但是没有点击,但这似乎是不可能的,所以我们通过启用后台模式来更改我们的实现,它对我有用。

希望它也有帮助。

有关BGTaskScheduler的更多参考,https://developer.apple.com/documentation/backgroundtasks/bgtaskscheduler

您需要在appDelegate中使用willpresent委托

func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
// Change this to your preferred presentation option
completionHandler([])
}

当通知出现在前台时调用此委托

相关内容

  • 没有找到相关文章

最新更新