Tek*_*ock 12 iphone notifications ios uilocalnotification swift
因此,我现在在应用程序商店中有一个应用程序,提前安排10个通知,假设您错过了一个,您仍将获得第二次机会或十个.在你认为我会打扰这个人之前,通知对于应用程序的功能非常重要,而且确实是主要目的.该应用程序是为iOS 7构建的,因此当时没有"handleActionWithIdentifier",根据我的理解,即使关闭应用程序,也可以完成对应用程序的操作,具体取决于用户对通知的响应.此更新对应用程序非常有用,因为它消除了我必须打开应用程序以响应通知的部分问题(通知询问用户一个问题,并根据答案,完成一些事情).
剩下的问题是检测是否错过了通知,如果通知被取消或忽略,我将如何显示另一个通知,例如第二天.我在google和堆栈溢出搜索了这个,根据我的理解,所有以前的问题一直在询问如何检测通知是否错过了应用程序打开,我不需要.
此时,如果用户通过按下通知中的一个选项来响应通知,则可以正常运行代码:
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()
}
Run Code Online (Sandbox Code Playgroud)
截至目前,我只是采取文本输入并打印它,但如果我愿意,我可以发出第二个通知.有没有一种方法来检测何时错过通知并安排另一个通知?
总是有可能仍然不可能做我想要的事情,我只是预先安排10个通知,这看起来很草率,不让我做出反复的回应.
TLDR; 如果在未打开应用程序的情况下错过本地通知,如何检测并运行代码
顺便说一句:如果你有答案,swift是首选语言
您可以混合使用Background Fetch和某种时间戳测试.
例如:
当您安排通知时,您可以保留一些逻辑,以便跟踪是否忽略该通知.也许存一些数据,NSUserDefaults保持这是最后一次通知发送,当它应该由OS推出
一种方法是检查该时间戳:
如果你在它应该启动的那一刻之后启动这个测试(可能有点晚了,以防用户看到它但仍然没有准备好回答)并且你还没有将它标记为未被忽略,那么用户可能忽略或错过了您的通知.
此测试应该可以在AppDelegate中使用.
然后,在后台模式中启用后台获取功能.
这将给你的应用程序一些CPU时间(当iOS认为这是一个好时机),你可以抓住机会;-).
为了能够做到这一点,您需要在实现中添加适当的功能AppDelegate:
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
// your code
}
Run Code Online (Sandbox Code Playgroud)
在此功能的正文中,运行"测试忽略通知"并根据需要安排新通知.
completionHandler一旦完成测试,请不要忘记打电话!
| 归档时间: |
|
| 查看次数: |
652 次 |
| 最近记录: |