2013-12-12 7 views
7

Mam dziwny problem z aplikacją na system phonegap na iOS. Mam wersję bez reklam zatwierdzonych i działających dobrze na sklepie z aplikacjami oraz nową wersję z reklamami, które zostały odrzucone z powodu aplikacji zawieszonej na ekranie powitalnym.OSTRZEŻENIE: Powolny domyślny dostęp dla klucza Wewnętrzny trwało xx sekund, tolerancja wynosi 0,020000

Różnica w aplikacjach to 3 wtyczki reklam, iAD, admob i revmob. Aplikacja działa dobrze, ale raz na jakiś czas będzie zawieszona na ekranie powitalnym, jak sugeruje Apple, nie mogę znaleźć przyczyny problemu.

Jedyną wskazówką jaką mam jest "OSTRZEŻENIE: Powolny domyślny dostęp dla klucza Wewnętrzny wziął 0.039977 sekund, tolerancja 0.020000" pojawia się w konsoli błędów, ale kiedy to się pojawia, aplikacja nadal działa poprawnie.

Czy to ostrzeżenie może odnosić się do problemu z zawieszeniem na ekranie? Wszelkie pomysły, jak podejść do problemu lub na co zwrócić uwagę, które mogą być przyczyną tego problemu?

Dzięki

+0

Upewnij się, nie rób żadnych obliczeń, zanim aplikacja naprawdę się zacznie. Jeśli trwa to zbyt długo, aplikacja będzie musiała ulec awarii przez system operacyjny. Jeśli potrzebujesz zrobić coś, co zajmie kilka sekund (np. Skopiuj duży plik za pierwszym razem) zrób to w swoim pierwszym VC po viewDidLoad (lub w viewDidLoad w metodzie wywoływanej przez performSelector: afterDelay: .1) – Daniel

Odpowiedz

1

Nie znam, że to jest powód, a ty zapewne coraz to na symulatorze, który nie jest tak skuteczny jak urządzenia.

Powodem koniec startów 90% czasu jest coś, co można zrobić w swojej aplikacji delegata, a dokładniej w

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

unikać wykonywania długich zadań tam, jak połączeń sieciowych lub manipulowania dużych ilości danych, a jeśli trzeba jeszcze coś tam i `t przenieść go do metody viewDidLoad zrobić to w innym wątku tak:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 
[self performSelectorInBackground:@selector(fetchUserInfoFromDB) withObject:nil]; 


return YES; 
} 

-(void)fetchUserInfoFromDB 
{ 
//Do what you need to do in here 
sleep(5); 
NSLog(@"The app lanuched but I am still running in the background, Yay!!"); 

} 

powodzenia

+0

Ops, ja po prostu zauważyłem część PhoneGap, która, jak sądzę, wygenerowałaby dla ciebie plik binarny, nie mając kontroli nad kodem. W każdym razie, mam nadzieję, że moja odpowiedź pomogłaby innym, którzy mieliby stawić czoła temu problemowi podczas rozwijania swoich aplikacji za pomocą xcode i obiektywnego c –

Powiązane problemy