如何知道iOS设备何时插入?

hum*_*an4 5 iphone localization ios

有没有办法知道我的设备(iPhone)何时插入电源,如带USB端口的电脑或汽车音响系统?我在我的应用程序中使用本地化服务,我想在kCLLocationAccuracyBestForNavigation插入设备时自动更改.谢谢...

pro*_*rmr 7

您可以通过UIDevice类启用电池监控,并检查电池状态以查看是否正在充电:

typedef enum {
    UIDeviceBatteryStateUnknown,
    UIDeviceBatteryStateUnplugged,
    UIDeviceBatteryStateCharging,
    UIDeviceBatteryStateFull,
} UIDeviceBatteryState;
Run Code Online (Sandbox Code Playgroud)

在启用最佳GPS准确度之前,您需要检查充电或充电.


Sam*_*Sam 3

您可以注册以便在配件连接或断开连接时收到通知。

例子:

[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
                       selector:@selector(accessoryDidConnect:)
                           name:EAAccessoryDidConnectNotification
                         object:nil];
[notificationCenter addObserver:self
                       selector:@selector(accessoryDidDisconnect:)
                           name:EAAccessoryDidDisconnectNotification
                         object:nil];
Run Code Online (Sandbox Code Playgroud)

收到此通知后,您可以使用 for 循环来遍历每个配件,例如:

NSArray *accessories = [[EAAccessoryManager sharedAccessoryManager] connectedAccessories]; 
EAAccessory *accessory = nil; 

for (EAAccessory *obj in accessories)
{ 
    // See if you're interested in this particular accessory
}
Run Code Online (Sandbox Code Playgroud)

在某些时候(也许是释放)您会想要取消注册这些通知。你可以这样做:

NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter removeObserver:self 
                              name:EAAccessoryDidDisconnectNotification 
                            object:nil];
[notificationCenter removeObserver:self 
                              name:EAAccessoryDidConnectNotification 
                            object:nil];
[[EAAccessoryManager sharedAccessoryManager] unregisterForLocalNotifications];  
Run Code Online (Sandbox Code Playgroud)