当应用程序被用户杀死时,如何从后端删除发送到 iPhone 的通知
How to remove notification from backend sent to iPhone when app is killed by User
与 WhatsApp 一样,我将为 iPhone
应用程序实现一个 Web 界面。如果用户在两个环境(iPhone 和网络)上登录并收到来自另一个用户的消息,则会向 iPhone
和网络发送通知。当用户从 Web 界面读取该消息时,发送至 iPhone 的通知应被删除,就像 WhatsApp 所做的那样,即使 iPhone
应用程序已被终止。
我们如何删除 iPhone 从后端发送的通知?据我所知,当 app is killed by User
.
时,我们无法控制 iPhone 应用程序
提前致谢。
我不知道whatsapp是如何管理的,但是你可以使用静默通知来实现上述feature.You需要打开后台模式以进行静默通知。
当静默通知出现时,它不会像常规通知那样出现在屏幕上,即使您的应用程序处于终止模式,它也会打开您的应用程序。系统会为您的应用程序提供一些时间来执行某些任务,您只能在该时间范围内执行。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print(" Entire message \(userInfo)")
print("Article avaialble for download: \(userInfo["articleId"]!)")
//let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(scheduleLocalNotification), userInfo: nil, repeats: false)
let state: UIApplication.State = application.applicationState
switch state {
case UIApplicationState.active:
print("If needed notify user about the message")
default:
registerBackgroundTask()
removeBadges()
}
completionHandler(UIBackgroundFetchResult.newData)
}
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != UIBackgroundTaskIdentifier.invalid)
}
func endBackgroundTask() {
print("Background task ended.")
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = UIBackgroundTaskIdentifier.invalid
}
func removeBadge() {
UIApplication.shared.applicationIconBadgeNumber = 0
UIApplication.shared.cancelAllLocalNotifications()
}
What's app 是一个 VoIP 应用程序,它总是(在某种程度上)在后台处于唤醒状态。因此可以执行 api 调用来检查应用程序消息的状态。
如果您的应用程序具有 VoIP 功能,您可以从中受益。
尝试使用 VoIP 推送,如果应用程序被用户故意终止,静默推送通知将不起作用。
与 WhatsApp 一样,我将为 iPhone
应用程序实现一个 Web 界面。如果用户在两个环境(iPhone 和网络)上登录并收到来自另一个用户的消息,则会向 iPhone
和网络发送通知。当用户从 Web 界面读取该消息时,发送至 iPhone 的通知应被删除,就像 WhatsApp 所做的那样,即使 iPhone
应用程序已被终止。
我们如何删除 iPhone 从后端发送的通知?据我所知,当 app is killed by User
.
提前致谢。
我不知道whatsapp是如何管理的,但是你可以使用静默通知来实现上述feature.You需要打开后台模式以进行静默通知。
当静默通知出现时,它不会像常规通知那样出现在屏幕上,即使您的应用程序处于终止模式,它也会打开您的应用程序。系统会为您的应用程序提供一些时间来执行某些任务,您只能在该时间范围内执行。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print(" Entire message \(userInfo)")
print("Article avaialble for download: \(userInfo["articleId"]!)")
//let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(scheduleLocalNotification), userInfo: nil, repeats: false)
let state: UIApplication.State = application.applicationState
switch state {
case UIApplicationState.active:
print("If needed notify user about the message")
default:
registerBackgroundTask()
removeBadges()
}
completionHandler(UIBackgroundFetchResult.newData)
}
func registerBackgroundTask() {
backgroundTask = UIApplication.shared.beginBackgroundTask { [weak self] in
self?.endBackgroundTask()
}
assert(backgroundTask != UIBackgroundTaskIdentifier.invalid)
}
func endBackgroundTask() {
print("Background task ended.")
UIApplication.shared.endBackgroundTask(backgroundTask)
backgroundTask = UIBackgroundTaskIdentifier.invalid
}
func removeBadge() {
UIApplication.shared.applicationIconBadgeNumber = 0
UIApplication.shared.cancelAllLocalNotifications()
}
What's app 是一个 VoIP 应用程序,它总是(在某种程度上)在后台处于唤醒状态。因此可以执行 api 调用来检查应用程序消息的状态。 如果您的应用程序具有 VoIP 功能,您可以从中受益。
尝试使用 VoIP 推送,如果应用程序被用户故意终止,静默推送通知将不起作用。