我有一個用於記錄用戶行程的Cordova應用程序。它在後臺工作正常,並且如果它由於某種原因而被終止(用戶將它刷掉,手機重新啓動等),它會自動重新啓動。如果存在UIApplicationLaunchOptionsLocationKey,則啓動Cordova iOS應用程序
我正在監視一個區域,並且當用戶進入/退出時,應用程序部分重新啓動。這裏的「部分」意味着該應用只能在後臺運行 - Cordova會加載我的應用的插件,但它不會加載WebView。
對於此部分重新啓動,我正在偵聽來自我的插件的pluginInitialize方法的UIApplicationDidFinishLaunchingNotification和UIApplicationLaunchOptionsLocationKey,並立即啓動位置服務以保持運行。
爲什麼不加載WebView?有什麼我需要做的,以觸發由iOS啓動下一階段的初始化?
編輯 2016年3月7日
我做了一些研究和調試。顯然,iOS在後臺啓動我的應用程序;這裏就是我得到的時候自動啓動這種方式與手動啓動,從日誌行:
NSLog(@"Launched in: bg:%d active:%d inactive:%d", state == UIApplicationStateBackground, state == UIApplicationStateActive, state == UIApplicationStateInactive);
Launched in: bg:1 active:0 inactive:0
Launched in: bg:0 active:0 inactive:1
我證實了這一代碼是在兩種情況下被達到(從科爾多瓦-IOS' v.3.9.2(科爾多瓦v.5.4.1)CDVViewController:
NSURLRequest* appReq = [NSURLRequest requestWithURL:appURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20.0];
[self.webView loadRequest:appReq];
我看到在手動情況下,該負載完成,而不是自動啓動的情況下,與日誌行:
Finished load of: file:///var/mobile/Containers/Bundle/Application/[device id]/[app name].app/www/index.html
爲什麼會變成這樣的負載自動啓動時失敗?