通過使用applicationWillResignActive和applicationDidBecomeActive,我可以檢測到iPhone進入睡眠狀態並從睡眠中回來。但是,我怎麼知道它是什麼樣的中斷。我正在製作一個音頻播放器應用程序,並且需要在iPhone進入睡眠狀態時保持音頻播放(我知道該怎麼做)。但是當消息,鬧鐘或低電池電量中斷髮生時,我需要中斷音頻。當事件結束時,我還需要恢復音頻。檢測iPhone中斷的類型
那麼如何區分這些不同的中斷。
通過使用applicationWillResignActive和applicationDidBecomeActive,我可以檢測到iPhone進入睡眠狀態並從睡眠中回來。但是,我怎麼知道它是什麼樣的中斷。我正在製作一個音頻播放器應用程序,並且需要在iPhone進入睡眠狀態時保持音頻播放(我知道該怎麼做)。但是當消息,鬧鐘或低電池電量中斷髮生時,我需要中斷音頻。當事件結束時,我還需要恢復音頻。檢測iPhone中斷的類型
那麼如何區分這些不同的中斷。
該信息可能不適用於您的應用,但這裏有一些要嘗試的操作。
在applicationWillResignActive:
,檢查NSNotification的對象和用戶信息的屬性,看看是否有任何提示存在。
註冊,就能獲得所有通知張貼到默認的通知中心:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveNotification:) name:nil object:nil];
什麼時候張貼你的方法將被調用。記錄通知對象和userInfo字典,也許你會看到一個有用的通知張貼。如果你找到一個,你可以註冊。
以上所有方法都將依賴未記錄的行爲來工作,並且可能會讓您的提交在App Store中被拒絕。它們都不涉及私人方法調用,但您可能會認爲觀察未記錄的通知名稱將視爲私有API。最後,蘋果的意見是唯一重要的。
就我個人而言,我會嘗試一下,確保代碼在系統發生變化時優雅地失敗。
嘗試過A和B,但它全部空了。用戶信息中沒有描述或鍵值對。對象也沒有。它奇怪蘋果如何錯過這樣簡單的功能。沒有嘗試C,因爲它看起來太hacky,即使對我來說。 – Prashant 2009-12-15 06:12:32
你可能想重新考慮一下C:如果你只是假設在你的應用上顯示的任何*警告都是暫停音樂的理由,那麼你將不會做任何沒有記錄的事情。它只是圍繞視圖層次結構來讀取將是hacky的警報文本。 – benzado 2009-12-15 06:21:42