应用程序进入前台时检测远程通知

时间:2016-06-13 09:20:12

标签: ios objective-c iphone push-notification appdelegate

美好的一天, 我有一个关于在iOS上接收远程通知的问题,我知道如果应用程序正在运行或者应用程序未运行且用户点击通知时将调用n -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

但是,如果用户忽略锁定屏幕中的通知徽章并解锁iPhone,之后您运行应用程序,那么该功能将不会被调用,那么我该如何收到收到的通知!!

谢谢你:)

4 个答案:

答案 0 :(得分:4)

当手机被锁定时,操作系统会将应用程序发送到非活动状态。 因此,在此期间收到的通知与应用在后台时收到的通知一样好。 就像在后台收到的任何通知一样,除非用户点击托盘中的通知,否则应用程序无法获得控制权。

答案 1 :(得分:1)

如果您忽略来自通知中心的通知,则无法在应用程序中获取该通知。

答案 2 :(得分:0)

您可以使用以下代码

执行此操作
 NSDictionary *pushNotificationPayload = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    if(pushNotificationPayload)
    {
        [self application:application didReceiveRemoteNotification:pushNotificationPayload];
    }

答案 3 :(得分:-1)

对于任何条件,请检查用户是否已点按,或应用是处于后台还是处于活动状态。 您只需要检查

中的应用程序状态
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

    if(application.applicationState == UIApplicationStateActive) {

        //app is currently active, can update badges count here

    }else if(application.applicationState == UIApplicationStateBackground){

        //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here

    }else if(application.applicationState == UIApplicationStateInactive){

        //app is transitioning from background to foreground (user taps notification), do what you need when user taps here

    }