像 WhatsApp 一样,我将为iPhone
应用程序实现Web界面。如果用户同时在两种环境(iPhone和Web)上登录并收到其他用户的消息,则会向iPhone
和Web发送通知。当用户从Web界面读取该消息时,即使iPhone
应用被杀死,发送给iPhone的通知也应像 WhatsApp 一样被删除。
我们如何删除iPhone从后端发送的通知?据我了解,app is killed by User
时,我们无法控制iPhone应用。
谢谢。
答案 0 :(得分:2)
我不知道whatsapp是如何管理的,但是您可以使用静默通知来实现上述功能。您需要打开后台模式以进行静默通知。
当静默通知到来时,它不会像常规通知一样显示在屏幕上,即使您的应用程序处于终止模式,它也会打开您的应用程序。系统将为您的应用提供一些时间来执行某些任务,并且您只能在该时间范围内完成操作。
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()
}
答案 1 :(得分:1)
什么是VoIP应用程序,它总是(在某种程度上)在后台唤醒。因此,可以执行api调用以检查应用程序消息的状态。 如果您的应用程序具有VoIP功能,则可以从中受益。
答案 2 :(得分:1)
尝试使用VoIP推送,如果应用被用户故意终止,则无提示推送通知将不起作用。