1

バックグラウンド アクティビティとして所有するすべてのデバイスのバッテリーを監視し、その情報を 1 時間ごとにサーバーにアップロードするアプリを構築したいと考えています。このようにして、デバイスを頻繁に再充電する必要がある時期を知ることができます。

アプリがバックグラウンドにあるときにこの情報を取得する方法がわかりません。アクティブでない場合、通知が届かないようです。これはまったく可能ですか?何らかの形で役立つ場合は、これが私のコードです。

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
// Request to be notified when battery charge or state changes
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryLevelDidChangeNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryStatus) name:UIDeviceBatteryStateDidChangeNotification object:nil];

- (void)batteryStatus
{
    NSArray *batteryStatus = [NSArray arrayWithObjects:
                          @"Battery status is unknown.",
                          @"Battery is in use (discharging).",
                          @"Battery is charging.",
                          @"Battery is fully charged.", nil];

//    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
//        [self notifyServer];
// do something. this is never called when in background.
    if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateUnknown)
    {
        [textViewStatus setText:[batteryStatus objectAtIndex:0]];
        NSLog(@"%@", [batteryStatus objectAtIndex:0]);
    }
    else
    {
        NSString *msg = [NSString stringWithFormat:
                     @"Battery charge level: %0.2f%%\n%@", [[UIDevice currentDevice] batteryLevel] * 100,
                     [batteryStatus objectAtIndex:[[UIDevice currentDevice] batteryState]] ];

        [textViewStatus setText:msg];  
        NSLog(@"%@", msg);
    }
}
4

2 に答える 2

0

申し訳ありませんが、このようなバックグラウンドサービスは許可されていないため、ジェイルブレイクされていないiOSデバイスでは許可されていません。

于 2013-03-06T22:21:49.317 に答える