gpt4 book ai didi

ios - 可以在 iOS 上覆盖现有的推送通知

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:11:33 25 4
gpt4 key购买 nike

在 Android 中,如果您继续使用相同的通知 ID,可能会覆盖现有的推送通知。

iOS 是否也有同样的可能?

似乎很难找到任何关于替换推送通知的信息,因为很多答案都使用静默推送通知并手动删除它们。

我使用 Cordova,因此在接收推送通知时我的后台进程选项有限。

在 iOS 上,当应用程序处于后台时,我无法运行代码来手动删除任何推送通知。

最佳答案

不,在 iOS 中你不能覆盖已经安排的远程/本地通知。

您必须安排另一个推送通知。

通过维护一些标志或检查键/值。您必须在恢复新通知时删除以前的通知。

希望这对您有所帮助。

已更新

作为替代,一旦您收到推送通知,基于您在推送通知负载中收到的信息。

您可以安排本地通知。

import UIKit
import PushKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate,PKPushRegistryDelegate {

var window: UIWindow?
let notificationObject = UILocalNotification()

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


return true
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {



notificationObject.fireDate = NSDate(timeIntervalSinceNow: 1)
notificationObject.alertBody = "Title"
notificationObject.alertAction = "Open"
notificationObject.soundName = "SoundFile.mp3"
notificationObject.category = ""
notificationObject.userInfo = "As per payload you receive"

UIApplication.sharedApplication().scheduleLocalNotification(notificationObjectCall)


}

Swift 4.2 代码

import UIKit
import PushKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate{
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
<#code#>
}


var window: UIWindow?

let notificationObject = UILocalNotification()


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {



notificationObject.fireDate = NSDate(timeIntervalSinceNow: 1) as Date
notificationObject.alertBody = "Title"
notificationObject.alertAction = "Open"
notificationObject.soundName = "SoundFile.mp3"
notificationObject.category = ""
notificationObject.userInfo = "As per payload you receive"

UIApplication.shared.scheduleLocalNotification(notificationObject)


}

正如您在上面的代码中看到的,本地通知对象是全局声明的。因此,每当您收到有效负载时,该对象就会一次又一次地被覆盖。

对于远程通知,您不能创建对象并覆盖它。

我不太了解 cordova,但在 native iOS 中,通过这种方式,您可以使用本地通知进行覆盖。

希望您了解使用的技术并帮助您找出解决方案。

关于ios - 可以在 iOS 上覆盖现有的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43131707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com