我正在开发一款移动游戏,但当“低电量”警报被显示时,游戏会出现崩溃现象,而在低内存、来电和其他消息的情况下则能正常运行。
由于无法找到模拟此情况的终端或iPhone模拟器方式,因此测试和调试变得很麻烦。我必须将手机充电一段时间,启动应用程序,等待其耗尽电力,然后再重新开始。
是否有人知道以逼真的方式产生此错误的方法?希望不要对我的iPhone电池造成太大压力。
我正在开发一款移动游戏,但当“低电量”警报被显示时,游戏会出现崩溃现象,而在低内存、来电和其他消息的情况下则能正常运行。
由于无法找到模拟此情况的终端或iPhone模拟器方式,因此测试和调试变得很麻烦。我必须将手机充电一段时间,启动应用程序,等待其耗尽电力,然后再重新开始。
是否有人知道以逼真的方式产生此错误的方法?希望不要对我的iPhone电池造成太大压力。
很遗憾,没有好的方法来模拟低电量环境。您实际上最有可能需要将设备的电池充到略高于“低电量”状态,然后调试应用程序。
针对其他人所说的:
UILocalNotifications
。这与在应用程序中显示UIAlertView并没有太大区别。虽然等待设备实际达到低电量状态很麻烦,但您可以向应用程序添加一些耗电代码来协助您。例如,使用GPS可能会更快地消耗电池。
祝好运。
假设这只是为了测试目的,您可以尝试使用以下私有UIDevice
方法:
-(void)_setBatteryState:(int)state;
-(void)_setBatteryLevel:(float)level;
你需要进行实验以确定它们期望的参数,或者它们是否有任何影响。
_setBatteryLevel
函数可以通过类别使用,并且在该类别中,调用 [self performSelector:@selector(_setBatteryLevel:) withObject:[NSNumber numberWithFloat:0.01]]
将导致 [[UIDevice currentDevice] batteryLevel]
返回您发送的值,但不会触发低内存警告。 - john.k.doeUIDevice *device = [UIDevice currentDevice];
device.batteryMonitoringEnabled = YES;
iOS 提供了两种类型的电池监测事件,一种是当状态发生变化时(例如,充电、拔出、充满电),另一种是在电池电量变化时更新。与接近度监测一样,您可以注册回调以接收通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryLevelDidChangeNotification" object:device];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryStateDidChangeNotification" object:device];