gpt4 book ai didi

ios - 如果第一个通知在 swift 中被忽略,则安排第二个通知(或者如果通知被忽略则完成任何操作)

转载 作者:IT王子 更新时间:2023-10-29 05:27:27 26 4
gpt4 key购买 nike

所以我目前在 App Store 上有一个应用程序可以提前安排 10 条通知,假设您错过了一条通知,您仍然会有第二次或十次的机会。现在,在你认为我会打扰这个人之前,通知对于应用程序的功能非常重要,而且确实是主要目的。该应用程序是为 iOS 7 构建的,因此根据我的理解,当时没有“handleActionWithIdentifier”可以完成应用程序的操作,即使它已关闭,具体取决于用户对通知的响应。此更新对应用程序非常有帮助,因为它消除了我必须打开应用程序才能响应通知的部分问题(通知会向用户提出问题,并根据答案完成某些操作)。

剩下的问题是检测是否错过了通知,如果通知被取消或忽略,我将如何让另一个通知出现,例如第二天。我已经在 google 和 stack overflow 上搜索了这个,根据我的理解,之前的所有问题都在询问如何检测是否错过了我不需要的应用程序打开的通知。

此时,如果用户通过按下通知上的选项之一来响应通知,我可以正确运行代码:

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, withResponseInfo responseInfo: [NSObject : AnyObject], completionHandler: () -> Void) {
var userInfo = [NSObject: AnyObject]()
userInfo["text"] = responseInfo[UIUserNotificationActionResponseTypedTextKey]
NSNotificationCenter.defaultCenter().postNotificationName("text", object: nil, userInfo: userInfo)

print(userInfo)

completionHandler()
}

截至目前,我只是接受文本字段输入并打印它,但如果需要,我可以启动第二个通知。有没有一种方法可以检测何时错过通知并安排另一个通知?

总是有可能仍然无法做我想做的事,我只会提前安排 10 个通知,这看起来很草率,不会让我做出重复的响应。

TLDR;如果在不打开应用程序的情况下错过了本地通知,我该如何检测并运行代码

顺便说一句:如果你有答案,swift 是首选语言

最佳答案

您可以混合使用Background Fetch某种时间戳测试

For instance:

当您安排通知时,您可以保留一些逻辑,让您跟踪该通知是否被忽略。也许在 NSUserDefaults 中保留一些数据,这是最后一次发送的 Notification何时应该由操作系统启动。

One way could be to check for that timestamp:

如果您在它应该启动的那一刻之后启动此测试(并且可能有点晚,以防万一用户看到它但仍未准备好回答)并且您还没有' 仍将其标记为未忽略,则用户可能已忽略或错过您的通知。

This test should be able to be used in your AppDelegate.

然后,在后台模式启用后台获取功能。

This will give some CPU time to your app (when iOS thinks is a good time for that) and you can seize the opportunity ;-).

要做到这一点,您需要将适当的功能添加到您的 AppDelegate 实现中:

func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
// your code
}

在此函数的主体中,运行您的“忽略通知测试”,并在需要时安排新通知。

Don't forget to call completionHandler as soon as you finish your test!

关于ios - 如果第一个通知在 swift 中被忽略,则安排第二个通知(或者如果通知被忽略则完成任何操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34746775/

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