我有一個Titanium應用程序,它註冊一個iOS後臺服務,該服務每30秒記錄一次設備的GPS數據。我已經將它註冊爲位置服務,它應該可以防止它在10分鐘後停止,但它不起作用。這裏是我的tiapp.xml的相關部分:iOS位置後臺服務10分鐘後停止
<ios>
<plist>
<dict>
<key>UISupportedInterfaceOrientations~iphone</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>gps</string>
<string>location-services</string>
</array>
</dict>
</plist>
</ios>
這是我如何註冊它在alloy.js:
if(utils.ios) {
console.log('registering ios background service');
Ti.App.iOS.registerBackgroundService({ url: 'tracking/backgroundService.js' });
}
和背景服務本身:
var timeout = constants.tracking.interval * 1000;
console.log('starting background gps tracking');
setInterval(function() {
var user = settings.user();
if(user && user.password) {
//user is logged in, let's track them.
gpsTracking.track();
}
else {
console.log('user is not logged in so not tracking');
}
}, timeout);
這在iPhone模擬器上進行了測試,我還沒有在實際的iOS設備上進行測試,因爲開發者網站仍然關閉,所以我無法創建配置文件。
我在構建文件夾中檢查了我的info.plist,它正確地爲UIBackgroundModes和UIRequiredDeviceCapabilities添加了鍵/數組值,所以我不確定接下來要檢查什麼。
任何想法?
他明確表示他更新了tiapp.xml,因此不需要將info.plist放置在項目的根目錄中;事實上,這不是推薦的方法 –
@Aaron - 有什麼想法可能是錯的? – Justin
@Justin:確保你將info.plist文件放到根目錄下,而不是放入Resources文件夾或者生成文件夾 – Anand