我有一个注册 iOS 后台服务的 Titanium 应用程序,它每 30 秒记录一次设备的 GPS 数据。我已将其注册为定位服务,本应防止其在 10 分钟后停止,但它无法正常工作。这是我的 tiapp.xml 的相关部分:
<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 的键/数组值,所以我不确定接下来要检查什么。
有任何想法吗?