StackOverflow 開発者の皆様、Info.plist
プログラム可能な Yes または No を設定する方法について質問があります。そのため、私のアプリは Backgroung Locaton Update をサポートしています。しかし、すべての 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 に答える