您好StackOverflow开发人员,我有一个问题如何设置我的Info.plist
可编程是或否。所以我的应用程序支持Backgroung Locaton Update。但是,正如所有iOS Devlopers都知道它像坚果一样杀死电池。所以我想检测iphone是否插入然后只支持后台访问,如果没有插入我们可以用户[locationmanger startMonitoringSignificantLocationChanges] ;.谢谢你的帮助。
答案 0 :(得分: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.
}
}