我想运行一些代码来更新视图控制器,当我的本地通知已发出,我已经尝试过功能didReceiveLocalNotification
,但它只适用于当用户点击通知时,我想知道是否有办法运行通知已发出时的功能?有没有办法在发送本地通知时运行一些代码?
回答
您可以使用您用来发送通知的方法进行更新。
我认为你无法知道你的本地通知何时发出,主要是因为你可以安排你的本地通知或马上发送,以防你的应用程序在后台。
根据Apple:
您安排致电
scheduleLocalNotification:
本地通知。该应用程序使用UILocalNotification
对象中指定的发送日期。或者,您可以通过调用presentLocalNotificationNow:
方法立即显示通知。应用程序在后台运行并且某些消息,数据或其他物品到达时可能会发现有用的通知,这些通知可能会对用户有用。在这种情况下,应用可以使用
UIApplication
方法presentLocalNotificationNow:
(iOS为应用提供有限的时间在后台运行)立即显示通知。
没有办法知道什么时候发送了UILocalNotification
,但是当它收到时就是某种情况。你的情况,我想你要安排UILocalNotification
让我们通过部分分为:
当应用没有打开,用户触摸它
一个委托通知交付iOS应用程序实现了
application:didFinishLaunchingWithOptions:
方法来处理本地通知。它使用UIApplicationLaunchOptionsLocalNotificationKey
键从启动选项字典中获取关联的UILocalNotification
对象。所以你可以通过触摸UILocalNotification
知道应用程序的开启位置。请看下面的代码:func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { if let launchNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification { // do anything you want update UIViewController, etc } return true }
应用程序运行时,此通知被传递,它
一旦用户触摸用户触摸
UILocalNotification
您使用didReceiveLocalNotification
方法可以处理它,做任何你想在里面。应用程序运行时,通知交付,用户不要去碰它
万一用户不碰UILocalNotification
你可以做知道的唯一的事您发送的UILocalNotification
与您之前计划的UILocalNotifications
保持一个列表,并在稍后检查(这不是一个很好的解决方案,但它的工作)。
然而始终存在UIApplicationWillEnterForegroundNotification
可用于通知要更新,该应用程序将在前台以这种方式进入像UIViewController
:
private var foregroundNotification: NSObjectProtocol!
override func viewDidLoad() {
super.viewDidLoad()
foregroundNotification = NSNotificationCenter.defaultCenter().addObserverForName(UIApplicationWillEnterForegroundNotification, object: nil, queue: NSOperationQueue.mainQueue()) {
[unowned self] notification in
print("Notified ViewControllerB")
}
}
deinit {
// make sure to remove the observer when this view controller is dismissed/deallocated
NSNotificationCenter.defaultCenter().removeObserver(foregroundNotification)
}
我认为你必须正确你需要什么思考在用户不点击它的情况下收到您的通知时在您的应用程序中执行操作。
我希望这对你有所帮助。
有这个目标C的方法,你可以搜索类似的迅速..在你的appdelegate添加这种方法
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions UNNotificationPresentationOptionBadge))completionHandler{
[self.tableview reloadData];
}
我认为这将有助于..
- 1. IOS 5本地通知,而在前台,有没有办法
- 2. 有没有办法在后台发送一些已知pid的程序?
- 3. 程序集加载时有没有办法运行代码?
- 4. 有没有办法在nohup任务开始时发生通知?
- 5. 有没有办法在不发送推送通知的情况下调用saveCurrentTurnWithMatchData?
- 6. 有没有办法调试在`multiprocessing.Process`上运行的Python代码?
- 7. 有没有办法在python中运行powershell代码
- 8. 有没有办法知道我的代码支持哪些版本的Python?
- 9. 有没有办法在ssh中运行本地bash函数
- 10. 有没有办法将厨师退出代码发送到shell
- 11. 有没有办法在rails中通过button_to形式发送flash通知?
- 12. 在onMessage()上收到推送通知时执行一些代码
- 13. 有没有办法通过jQuery发送文本到aspcontrol
- 14. 在Jupyter笔记本接口中,有没有办法在选定的代码行之前运行所有代码?
- 15. 有没有办法在运行时获取类的字节码?
- 16. 没有通知发送apprequest
- 17. IAudioSessionManager2通知没有发送
- 18. 有没有办法确定GWT代码是否在开发模式下运行?
- 19. 有没有办法让我的Android应用程序在安装时运行一些自定义代码?
- 20. 有没有办法在代码
- 21. 发布时有没有办法调用自定义代码?
- 22. Cloudkit没有发送推送通知
- 23. 当请求页面时,有没有办法运行init的php代码?
- 24. 有没有办法让计算机关机时运行python代码?
- 25. 有没有办法将通知从手机发送到网络浏览器
- 26. 有没有办法,从通知中心获取挖掘推送通知? (从服务器推送通知)
- 27. 有没有办法隐藏JavaScript代码?
- 28. 有没有办法从代码
- 29. 有没有办法跟踪推送通知,如果用户没有点击它
- 30. 有没有办法访问通知中心显示的通知?
谢谢你很多,我认为当用户没有点击通知但在通知发送后进入应用程序时,我更加接近更新视图。但似乎我每次打开应用程序时都会收到“通知ViewControllerB”,而不仅仅是在发出通知之后。我认为这是因为它没有正确地放置或在我的应用程序的正确位置。 –
@LudvigSørensen不,如果'UIViewController'仍然是内存,你会收到通知,仅此而已。 –
哦,好的。我正在构建这款日常挑战应用程序,用户每天都会遇到挑战,然后才能完成。我想在发送通知后立即运行的功能就是取新的挑战功能,这样视图就会更新并给用户一个新的挑战。但唯一的问题是,当我在你给我的代码中运行该函数时,每次用户重新输入应用程序时,视图都会更新。我只想在新的挑战到来时更新视图。 (每天) –