我讀上推送通知處理
Handling Local and Remote Notifications
蘋果的文檔,它看起來對我有衝突的聲明。有人能澄清這些混亂點嗎?現在讓我們嚴格說說遠程通知(與本地)。
文檔說,如果通知上的操作按鈕被按下,它會調用application:didFinishLaunchingWithOptions並傳入通知有效內容。後來它說如果應用程序在前臺運行,它會通過application:didReceiveRemoteNotification:來傳遞通知。這意味着當應用程序背景或未運行時,應用程序:didFinishLaunchingWithOptions被調用。否則,應用程序:didReceiveRemoteNotification:被調用。
後來,有一個iOS的紙條,上面寫着以下內容:
「iOS版注:在iOS中,您可以決定一個應用程序被啓動,是用戶的敲擊動作按鈕或通知是否被交付結果在應用程序的代理實現中:didReceiveRemoteNotification:或application:didReceiveLocalNotification:方法,獲取applicationState屬性的值並對其進行評估;如果值爲UIApplicationStateInactive,則用戶點擊操作按鈕;如果值是UIApplicationStateActive,則應用程序在收到通知時處於最前面。「
這意味着應用程序:didReceiveRemoteNotification:在應用程序已經預先着手並且用戶按下動作按鈕(或將幻燈片放在iOS 5中的動作滑塊)前景/啓動應用程序時調用。
我的困惑的根源可能在於文檔暗示通知有效內容與應用程序一起發送的第一部分:didFinishLaunchingWithOptions:方法或誤解了「正在運行」的應用程序是什麼(後臺應用程序被認爲是「運行「?)。應用程序的文檔:didReceiveRemoteNotification:聲明它被稱爲「正在運行」的應用程序。
因此,要總結,我能得到澄清:
1)是應用:didReceiveRemoteNotification:當應用程序被前景化或總是叫當用戶選擇的通知「行爲」?如果不是,我們如何理解iOS中有關確定應用程序狀態處於活動狀態還是非活動狀態的說明?
2)是一個後臺應用程序「運行」,至少在文檔聲稱應用程序意義上說:didReceiveRemoteNotification被稱爲運行應用程序?
3)完成後,是一個後臺應用UIApplicationStateInactive或Active?
我可以得到一個複選標記嗎? – ch3rryc0ke 2012-07-19 22:45:40