29

Pracuję nad grą mobilną, która najwyraźniej ulega awarii po wyświetleniu komunikatu o niskim stanie baterii. Działa dobrze w przypadku małej ilości pamięci, połączeń przychodzących i innych wiadomości.Symulowanie niskiego poziomu naładowania baterii dla iPhone'ów

To jest trudny do przetestowania i debugowania tego, ponieważ nie mogę znaleźć symulatora terminalu lub iPhone'a symulującego tę sytuację, więc muszę trochę naładować mój telefon, uruchomić aplikację, poczekać aż opróżni się jej moc i zacznij od nowa.

Czy ktoś wie, w jaki sposób można uzyskać ten błąd w realistyczny sposób? Mam nadzieję, że coś, co nie jest zbyt stresujące na baterii mojego iPhone'a.

+0

dobre pytanie. Miałem podobny problem –

+0

Kiedy to się psuje? Kiedy otrzymasz "ostrzeżenia o niskim stanie baterii" lub coś innego? –

+0

Zaraz po pojawieniu się niebieskiego alertu aplikacja ulega awarii. Ostrzeżenie o naładowaniu baterii pozostaje. –

Odpowiedz

10

Niestety, nie ma dobrego sposobu na symulację środowiska o niskim poziomie naładowania baterii. Najprawdopodobniej będziesz musiał fizycznie naładować baterię urządzenia, aż znajdzie się tuż nad stanem "niskiego poziomu baterii", a następnie zdebugować aplikację.

Aby rozwiązać to, co mówili inni:

  1. Nie ma sposobu, aby symulować niskie powiadomienia baterii. Projekt , który @Bo. pod warunkiem, że nie robi nic więcej niż zaplanować losowe UILocalNotifications. Nie różni się to zbytnio od zwykłego pokazującego UIAlertView w twojej aplikacji.
  2. Możesz spróbować tego, co @Andrew R. powiedział i użyć prywatnych metod znalezionych w UIDevice header. Ale wątpliwe jest, aby dokładnie naśladować działanie rzeczywistego środowiska o niskim poziomie naładowania.

Chociaż trzeba poczekać, aż urządzenie rzeczywiście trafi w stan niskiego poziomu naładowania baterii, do aplikacji można dodać kod odprowadzający baterię. Na przykład użycie GPS może spowodować szybsze wyczerpanie baterii.

Powodzenia.

1

Czy próbowałeś symulować powiadomienia o niskim poziomie naładowania baterii? Wydaje się, że projekt, który to robi: https://github.com/MegaEduX/LowBattery

+0

Niestety tak naprawdę nie wydaje mi się to realistycznym wyjściem ... To wydaje się naśladować ostrzeżenie i nie powoduje awarii mojej aplikacji, a to wciąż występuje na "prawdziwym" telefonie iPhone'a niska moc. –

-2

Zakładając, to tylko w celach testowych, można podać następujące prywatnym Metody spróbować:

-(void)_setBatteryState:(int)state; 
-(void)_setBatteryLevel:(float)level; 

będziesz musiał eksperymentować, aby zobaczyć, co parametry, których oczekują, lub czy w ogóle mają wpływ.

+1

, podczas gdy funkcja '_setBatteryLevel' jest dostępna poprzez kategorię i podczas gdy w tej kateorze, wywołanie' [self performSelector: @selector (_setBatteryLevel :) withObject: [NSNumber numberWithFloat: 0.01]] 'spowoduje, że wartość zwrócona przez' [[UIDevice currentDevice] batteryLevel] 'aby zwrócić wartość, którą wysłałeś, nie uruchomi ostrzeżenia o małej ilości pamięci. –

+0

@ john.k.doe spróbuj ustawić go na 25, 20? Usłyszałem ostrzeżenie o niskim poziomie naładowania baterii w odstępach 5%, a ostrzeżenie jest wyświetlane tylko po osiągnięciu limitu poziomu – onmyway133

0

W iOS istnieje sposób do symulacji „Low Battery”

monitorowania baterii jest włączone przez ustawienie na TAK właściwością Singleton UIDevice:

UIDevice *device = [UIDevice currentDevice]; 
device.batteryMonitoringEnabled = YES; 

iOS udostępnia dwa rodzaje zdarzeń monitorowania baterii jeden, gdy zmienia się stan (np. ładowanie, odłączenie, pełne naładowanie) i taki, który aktualizuje się, gdy zmienia się poziom naładowania baterii. Tak jak w przypadku monitorowania bliskości, rejestrujesz wywołania zwrotne, aby otrzymywać powiadomienia:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryLevelDidChangeNotification" object:device]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryChanged:) name:@"UIDeviceBatteryStateDidChangeNotification" object:device];