Ios 在ApplicationIDBecomeActive上触发本地通知

Ios 在ApplicationIDBecomeActive上触发本地通知,ios,objective-c,xcode,notifications,Ios,Objective C,Xcode,Notifications,我正在使用UILocalNotification对象开发一个报警应用程序。在“我的代码”中,当用户发出警报并单击通知面板时,我的应用程序将显示另一个视图控制器。为了满足这种情况,我在下面添加了不同生命周期的代码: 向上报警时,应用程序位于前台 应用在后台,用户点击通知面板触发应用 应用程序被终止,用户单击通知面板触发应用程序 当向上报警时,如果用户单击应用程序图标来触发它,而不是单击通知面板,则didReceiveLocalNotification中不会触发我的功能。如何编写代码来满足这种情况?

我正在使用UILocalNotification对象开发一个报警应用程序。在“我的代码”中,当用户发出警报并单击通知面板时,我的应用程序将显示另一个视图控制器。为了满足这种情况,我在下面添加了不同生命周期的代码:

  • 向上报警时,应用程序位于前台
  • 应用在后台,用户点击通知面板触发应用
  • 应用程序被终止,用户单击通知面板触发应用程序
  • 当向上报警时,如果用户单击应用程序图标来触发它,而不是单击通知面板,则didReceiveLocalNotification中不会触发我的功能。如何编写代码来满足这种情况?
    对于在应用程序被终止时触发通知,iOS可以自动检查计划通知并在launchOptions对象中响应 用于在用户单击通知时启动自定义功能 如果触发报警时用户单击应用程序图标而不是通知面板,则不会触发didReceiveLocalNotification
    从didFinishLaunchingWithOptions,您可以按如下方式调用您的didReceiveLocalNotification

    if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {
    
    self.application(application, didReceiveLocalNotification: notification)
    
    }
    
    这个代码是swift的,你可以在目标c中找到


    祝您编码愉快。

    我终于用徽章号解决了这个问题。 感谢所有回答我问题的成员,以激励我

    - (void)applicationDidBecomeActive:(UIApplication *)application {
    
        if([UIApplication sharedApplication].applicationIconBadgeNumber > 0){
            [self myFunction];
        }
    }
    

    您在满足特定条件时设置通知。。。您只需检查ApplicationIDBecMeactive方法中是否满足该条件,如果满足该条件,请调用LaunchMyFunction我一直在考虑在ApplicationIDBecMeactive:application方法中检查所有计划通知。。。但未找到正确的条件…我无法在ApplicationIDBecomeActive:application Method中获取launchOptions如果应用程序未被终止,并且用户单击应用程序图标将其打开,不会调用didFinishLaunchingWithOptions方法。您可以将本地通知对象保留在NSUserDefault中,以便在ApplicationIDBecMeactive中检索它。我已经尝试过了。但是,它不知道iOS启动了哪个通知。
    - (void)applicationDidBecomeActive:(UIApplication *)application {
         
        // How to trigger the notification??????
    }
    
    if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {
    
    self.application(application, didReceiveLocalNotification: notification)
    
    }
    
    - (void)applicationDidBecomeActive:(UIApplication *)application {
    
        if([UIApplication sharedApplication].applicationIconBadgeNumber > 0){
            [self myFunction];
        }
    }