在applicationDidBecomeActive上触发本地通知

时间:2016-07-28 13:00:31

标签: ios objective-c xcode notifications

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

  1. 警报时,应用程序位于前台,
  2. 该应用在后台,用户点击通知面板以启动应用
  3. 该应用程序被终止,用户点击通知面板以触发该应用程序。
  4. 警报时,如果用户单击应用程序图标以触发它而不是单击通知面板,则不会在didReceiveLocalNotification中触发我的功能。如何编码来满足这种情况?

    为了在应用程序被杀死时触发通知,iOS可以自动检查预定通知并在launchOptions对象中对其进行响应

    -(BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    
        [self registerNotification];    
    
        UILocalNotification *localNotification =
           [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
        if (localNotification) {
            // Launch VideoVC
            application.applicationIconBadgeNumber = 0;
            [application presentLocalNotificationNow:localNotification];
        }
    }
    

    用于点击通知时启动自定义功能

    -(void)application:(UIApplication *)application
    didReceiveLocalNotification:(UILocalNotification *)notification{
    
        [self launchMyFunction]
    }
    

    如果用户在触发警报时单击应用程序图标而不是通知面板,则不会触发didReceiveLocalNotification

    - (void)applicationDidBecomeActive:(UIApplication *)application {
    
        // How to trigger the notification??????
    }
    

2 个答案:

答案 0 :(得分:1)

我终于使用徽章编号来解决它。 感谢所有回答我问题的成员激励我。

- (void)applicationDidBecomeActive:(UIApplication *)application {

    if([UIApplication sharedApplication].applicationIconBadgeNumber > 0){
        [self myFunction];
    }
}

答案 1 :(得分:0)

从didFinishLaunchingWithOptions,你可以像下面这样调用你的didReceiveLocalNotification。

if let notification:UILocalNotification = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {

self.application(application, didReceiveLocalNotification: notification)

}

这段代码很快,您可以在目标c中找到答案。

有一个快乐的编码。