嗨 StackOverflow 开发人员,我有一个问题,我如何设置我的Info.plist
可编程是或否。所以我的应用程序支持背景位置更新。但正如所有 iOS 开发人员都知道的那样,它会像坚果一样杀死电池。所以我想检测是否插入了 iphone,然后只支持后台处理,如果没有插入,我们可以使用 [locationmanger startMonitoringSignificantLocationChanges];。谢谢你的帮助。
问问题
416 次
1 回答
7
回答原始问题
OP询问如何停止更新位置,答案是
CLLocationManager
有stopUpdatingLocation:
方法。
回答新问题
据我了解,属性列表用作您打算在后台使用位置服务的声明,并且就其在运行时的可访问性而言是只读的。因此,似乎正确的方法是CLLocationManager
通过其方法来控制stopUpdatingLocation:
和 startMonitoringSignificantLocationChanges:
。
您可以CLLocationManager
通过使用电池通知注册电池通知来根据电池状态进行控制
[ [ UIDevice currentDevice ] setBatteryMonitoringEnabled:YES ];
[ [ NSNotificationCenter defaultCenter ] addObserver:self selector:@selector(
reactToBatteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil ];
有了这个,您可以确定电话是否已插入。但是,根据 Apple 指南,您应该只在需要时注册电池通知。所以要注销你使用
[ [ UIDevice currentDevice ] setBatteryMonitoringEnabled:NO ];
[ [ NSNotificationCenter defaultCenter ] removeObserver:self name:
UIDeviceBatteryLevelDidChangeNotification object:nil ];
然后根据电池状态,你可以做你需要的。
+ (void) reactToBatteryStatus {
UIDeviceBatteryState batteryState = [ UIDevice currentDevice ].batteryState;
if ( batteryState == UIDeviceBatteryStateCharging || batteryState == UIDeviceBatteryStateFull )
{
// Device is plugged in.
}
}
于 2012-11-19T06:50:17.303 回答