Just a Computer Graphics Studio & My Life

[iOS] 判斷App在前景或背景

收到推播時有兩種狀況:

  • 前景 (Foreground)
  • 背景 (Background)

push notification from background

我現在想只在背景收到推播時,使用者點進來再做對應處理,不然使用者在前景已經處理過的任務,後到的推播再來做一次,就不是很合理囉~


/**
 Theme: Detect Foreground or Background
 IDE: Xcode 7
 Language: Objective C
 Date: 104/09/28
 Author: HappyMan
 Blog: https://cg2010studio.wordpress.com/
 */
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    // 先判斷前景或背景收到,因為推播太慢(可能要30s)收到
    if ([AppDelegate runningInForeground]) {
        return;
    }
}

+(BOOL)runningInBackground
{
    UIApplicationState state = [UIApplication sharedApplication].applicationState;
    BOOL result = (state == UIApplicationStateBackground);

    return result;
}

+(BOOL)runningInForeground
{
    UIApplicationState state = [UIApplication sharedApplication].applicationState;
    BOOL result = (state == UIApplicationStateActive);

    return result;
}

[UIApplication sharedApplication].applicationState

  • UIApplicationStateActive
  • UIApplicationStateInactive
  • UIApplicationStateBackground

Inactive我就不太曉得什麼狀況用得上。

參考:iOS how to judge application is running foreground or background?

廣告

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: