2013-05-14 18 views
2

我試圖確定UIApplication didReceiveLocalNotification:的不同方案。如果用戶點擊該應用程序處於非活動狀態的通知,我應該將它們帶到相應的UI頁面。否則,如果用戶只是打開應用程序而不點擊通知,我應該讓他們留在他們離開的UI頁面。確定是否從調度或用戶交互中觸發了UILocalNotification

但是,由於我自己安排了UILocalNotification,所以存在一些小問題。

[[UIApplication sharedApplication] scheduleLocalNotification:scheduledAlert]; 

所以每次發射的iOS的時候,它會調用相同的委託方法作爲回調時,我手動點擊狀態欄上的通知:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { ... } 

我嘗試了一些棘手的黑客,如在應用程序處於非活動狀態時統計觸發時間,計數1表示iOS觸發,計數2表示用戶點擊,以及相對計數管理代碼。

但我不認爲這可能是最佳做法。我檢查了具有相同功能的iOS消息應用程序。如果您將應用置於非活動狀態,例如向下滾動狀態欄,則可以確定UILocalNotification來自您的觸摸(並且將打開文本編輯模式),或者只是您返回到應用程序(保持以前的狀態)。

如果你們能讓我知道最佳解決方案在這裏,我將不勝感激!

回答

0

我使用了一個自定義的鍵值對,我設置了一個NSMutableDictionary,然後將其分配給UILocalNotification.userInfo,以告訴不同的場景。

+0

謝謝!但是,你能更具體嗎?我認爲在這兩種情況下,它都會收到相同的通知 - 它將包含相同的字典。 – Pei 2013-05-25 00:04:09

-1

我檢查應用程序狀態,這樣我只處理通知,如果我從背景的:

UIApplicationState state = [application applicationState]; 
if (state == UIApplicationStateInactive) { 
    // Your Code Here 
} else { 

} 
相關問題