2013-09-28 40 views
3

我的應用程序不允許在後臺運行。 我省標誌unexpectedExit的方法:什麼是iOS中意外退出的所有方式

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

和透明標誌unexpectedExit在明年方法:

- (void)applicationWillTerminate:(UIApplication *)application; 
- (void)applicationDidEnterBackground:(UIApplication *)application 

什麼是可能的原因是缺少清除標誌?

我知道下一個:

  1. 一些越獄人員 - 我發現越獄的設備,而忽略從他們由用戶創建的
  2. 崩潰(與0x00000000deadfa11代碼)任何崩潰 - 長按鎖按鈕,直到UI改變+長按主頁按鈕 - 直到崩潰。接近傳感器開啓時不可能發生這種類型的碰撞。
  3. 手動重啓設備 - 同時長按鎖定+主頁按鈕。接近傳感器打開時也不可能。
  4. 電池放電。我看到電池電量爲0時 - 它會在退出應用程序時直接關閉電源。我跟蹤電池充電
  5. 崩潰其可通過用lowmemory相關CrashLytics或PLCrashReporter或類似
  6. 碰撞來處理。根據documentation的應用程序應該能夠處理它與

    (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;

  7. 崩潰generated by watchdog(與0x8badf00d代碼)也沒有處理任何碰撞工具(據我所知),我不知道任何方式來捕捉這個。你知道嗎?

現實表明我錯過了一些東西。它可能是什麼? 我上面的建議有什麼錯誤嗎?

+1

查看一些值得注意的[例外代碼]列表(https://developer.apple.com/library/ios/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-ANALYZING_CRASH_REPORTS- EXCEPTION_CODES)。 – Rob

+0

非常感謝@Rob提到這一點 - 我修正了我的問題,以便更清楚地知道我的應用程序不支持後臺,所以鏈接的異常不適用於我。異常是:0xc00010ff - 但我希望這種類型的崩潰應該由Crashlytics和PLCrashReporter – Speakus

+0

處理這就是「酷關」異常(並在鏈接頁面上列出)。這意味着設備過熱。它說:異常代碼0xc00010ff表示該應用程序被操作系統殺死以迴應熱事件。這可能是由於發生此次崩潰的特定設備或其所在的環境造成的問題。有關使您的應用程序更高效運行的提示,請參閱儀器WWDC會話中的[iOS性能和功耗優化](https://developer.apple.com/videos/wwdc/2011/?id=312)。 – user1118321

回答

2

您是否考慮過附加mach exception handlersignal handler,並使用它來設置標誌?要求在iOS中終止應用程序的所有方式的完整列表看起來像是永遠無法回答的事情 - 每個版本都有可能添加新的異常,更改異常代碼或以不同的方式響應unix信號。你試圖用你的旗幟實現什麼?

+0

我的標誌允許我知道何時發生意外退出。它讓我想到「我能做些什麼來防止意外退出」。我開發鬧鐘。因此,如果在應用程序處於活動狀態時發生意外退出,那麼客戶只會使用本地通知進行喚醒。因此,當任何意外退出發生時 - 用戶通過應用程序詢問 - 將日誌發送給開發人員進行分析。因此,對於每運行10萬次的應用程序,當出現此問題時,我有10封電子郵件。 1封電子郵件 - 當鬧鐘啓用時有問題,所以我的客戶只能通過本地通知(與電子郵件相關的9封電子郵件等)來喚醒。 – Speakus

+0

關於你提到的處理程序:據我所知,他們使用Crashlytics和PLCrashReporter。 – Speakus

0

看看「捕捉未捕獲的異常」。 您可以在this article的末尾找到簡要說明。

+0

謝謝你提到這個。我不需要'捕捉未捕獲的異常',因爲Crashlytics和PLCrashReporter成功完成了這個任務。 (我測試過) – Speakus