Moje aplikacje mają znaczący crash -WKWebView wywala jeśli użytkownik odbiera przychodzące iMessage
CALayer position contains NaN: [377.833 nan]
z następującym Stack -
Fatal Exception: CALayerInvalidGeometry
0 CoreFoundation 0x18283afe0 __exceptionPreprocess
1 libobjc.A.dylib 0x18129c538 objc_exception_throw
2 CoreFoundation 0x18283af28 -[NSException initWithCoder:]
3 QuartzCore 0x185b50acc CA::Layer::set_position(CA::Vec2<double> const&, bool)
4 QuartzCore 0x185b50c48 -[CALayer setPosition:]
5 QuartzCore 0x185b51198 -[CALayer setFrame:]
6 UIKit 0x1889657a8 -[UIView(Geometry) setFrame:]
7 UIKit 0x188979364 -[UIImageView _setViewGeometry:forMetric:]
8 UIKit 0x1889c6c38 -[UIScrollView _adjustScrollerIndicators:alwaysShowingThem:]
9 UIKit 0x188abfb34 -[UIScrollView(UIScrollViewInternal) _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:]
10 WebKit 0x18c14af3c -[WKWebView _keyboardChangedWithInfo:adjustScrollView:]
11 CoreFoundation 0x1827d55f4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
12 CoreFoundation 0x1827d4d08 _CFXRegistrationPost
13 CoreFoundation 0x1827d4a84 ___CFXNotificationPost_block_invoke
14 CoreFoundation 0x1828437a8 -[_CFXNotificationRegistrar find:object:observer:enumerator:]
15 CoreFoundation 0x18271895c _CFXNotificationPost
16 Foundation 0x18322a930 -[NSNotificationCenter postNotificationName:object:userInfo:]
17 UIKit 0x1893500e4 -[UIInputWindowController postStartNotifications:withInfo:]
18 UIKit 0x189352350 __77-[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]_block_invoke.907
19 UIKit 0x188a383cc -[UIInputViewAnimationStyle launchAnimation:afterStarted:completion:forHost:fromCurrentPosition:]
20 UIKit 0x189351dc8 -[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]
21 UIKit 0x1893588b0 -[UIInputWindowController setInputViewSet:]
22 UIKit 0x189351494 -[UIInputWindowController performOperations:withAnimationStyle:]
23 UIKit 0x188a30d94 -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:]
24 UIKit 0x1890f7160 -[_UIRemoteKeyboards keyboardChanged:shouldConsiderSnapshottingKeyboard:isLocalEvent:]
25 UIKit 0x1890f6e8c __37-[_UIRemoteKeyboards
patrząc na logi użytkowników znalazłem kilka wspólnych rzeczy -
- wszyscy użytkownicy są w kontroler widoku, który zawiera WKWebView
- Wszystkie dzienniki wskazują, że aplikacja dostał „applicationWillResignActive” przed katastrofą
- Stos pokazuje, że klawiatura została otwarta, ale nie mamy z dala, aby otworzyć klawiaturę na tej View Controller
- wszyscy użytkownicy iOS 10,3 +
Jedynym scenariuszem, który pasował, było to, że użytkownik otrzymał wiadomość iMessage, gdy aplikacja była z widocznym WKWebView i wymusiła na szybkiej odpowiedzi. Przetestowaliśmy ten scenariusz i BOOOM, gdy aplikacja się zawiesiła.
Znaleźliśmy awarię, ale nie mamy pojęcia, co się dzieje. Ktoś stawiła czoła temu problemowi lub ma pojęcie, co to może być?
Dzięki
Czy możesz odtworzyć ten problem za pomocą projektu zbudowanego od podstaw (tak więc wystarczy minimalna konfiguracja + WKWebView)? – idmean
Ja drugi wniosek do odtworzenia z oddzielnym projektem. W międzyczasie, w bieżącym projekcie, który faktycznie się zawiesza, ustaw symboliczny punkt przerwania na '[CALayer setPosition:]' i wydrukuj pozycję ustawianą przez wykonanie 'po NSStringFromCGPoint (position)'. Ustaw także symboliczny punkt przerwania na '[UIView setFrame:]' tuż przed tym zdarzeniem. Ponownie wydrukuj ramkę. Zobacz, co jest ustawione. Sprawdź, czy ramka Twojej przeglądarki jest prawidłowa, czy nie. Sprawdź swoje ograniczenia, itp. – Brandon
Próbowałem i grałem ze scenariuszem, o którym wspomniałeś, ale nie mogłeś spowodować awarii. Wygląda na to, że coś innego jest zepsute. –