2017-08-25 6 views
0

GoogleSignIn iOSフレームワークv4.0.1(CocoaPods経由でリンク)からthis crashが発生しました。GoogleSignIniOS:preferredInterfaceOrientationForPresentation(7)クラッシュ

Fatal Exception: UIApplicationInvalidInterfaceOrientation preferredInterfaceOrientationForPresentation '(7)' must match a supported interface orientation: 'portrait, landscapeLeft, landscapeRight, portraitUpsideDown'!

Fatal Exception: UIApplicationInvalidInterfaceOrientation 
0 CoreFoundation     0x184656fe0 __exceptionPreprocess 
1 libobjc.A.dylib    0x1830b8538 objc_exception_throw 
2 CoreFoundation     0x184656f28 -[NSException initWithCoder:] 
3 UIKit       0x18a87cbbc -[UIViewController _preferredInterfaceOrientationForPresentationInWindow:fromInterfaceOrientation:] 
4 UIKit       0x18b159cf0 -[_UIFullscreenPresentationController _adjustOrientationIfNecessaryInWindow:forViewController:preservingViewController:] 
5 UIKit       0x18aad6d3c -[UIPresentationController _dismissWithAnimationController:interactionController:target:didEndSelector:] 
6 UIKit       0x18aafd53c -[UIViewController _dismissViewControllerWithAnimationController:interactionController:completion:] 
7 UIKit       0x18a8b2848 -[UIViewController _dismissViewControllerWithTransition:from:completion:] 
8 UIKit       0x18a85a6dc -[UIViewController dismissViewControllerWithTransition:completion:] 
9 UIKit       0x18a85a4bc -[UIViewController dismissViewControllerWithTransition:completion:] 
10 UIKit       0x18aafc7e4 -[UIViewController _performCoordinatedPresentOrDismiss:animated:] 
11 UIKit       0x18a85a230 -[UIViewController dismissViewControllerAnimated:completion:] 
12 Remind101      0x10069f6a0 -[GIDSignIn dismissViewController:] 
13 Remind101      0x100699c4c -[GIDSignIn handleURL:fromGoogleSSOApp:] 
14 Remind101      0x100699b60 -[GIDSignIn handleURL:sourceApplication:annotation:] 
15 Remind101      0x1001a7398 -[RDAppDelegate application:openURL:options:] (RDAppDelegate.m:495) 
16 UIKit       0x18aa13c28 __45-[UIApplication _applicationOpenURL:payload:]_block_invoke 
17 UIKit       0x18aa136b0 -[UIApplication _applicationOpenURL:payload:] 
18 SafariServices     0x19307a628 -[SFSafariViewController remoteViewController:hostApplicationOpenURL:] 
19 SafariServices     0x193072038 -[SFBrowserRemoteViewController willOpenURLInHostApplication:] 
20 CoreFoundation     0x18465ce80 __invoking___ 
21 CoreFoundation     0x1845522c4 -[NSInvocation invoke] 
22 FrontBoardServices    0x186200884 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ 
23 FrontBoardServices    0x1862006f0 -[FBSSerialQueue _performNext] 
24 FrontBoardServices    0x186200aa0 -[FBSSerialQueue _performNextFromRunLoopSource] 
25 CoreFoundation     0x18460542c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 
26 CoreFoundation     0x184604d9c __CFRunLoopDoSources0 
27 CoreFoundation     0x1846029a8 __CFRunLoopRun 
28 CoreFoundation     0x184532da4 CFRunLoopRunSpecific 
29 GraphicsServices    0x185f9d074 GSEventRunModal 
30 UIKit       0x18a7edc9c UIApplicationMain 
31 Remind101      0x10015b958 main (main.m:16) 
32 libdyld.dylib     0x18354159c start 

次のように我々のアプリのデリゲートメソッド(スタックトレース内枠15)が実装されています。

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options 
{ 
    NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey]; 
    NSString *annotation = options[UIApplicationOpenURLOptionsAnnotationKey]; 

    // ... bunch of app-specific checks 

    return [[GIDSignIn sharedInstance] handleURL:url sourceApplication:sourceApplication annotation:annotation]; 
} 

をそして、我々のクラッシュログは(難読化されたURLは、このようなルックスを開くことを示します数字やユーザーIDが特定できるかどうかわからないため):

openURL:com.googleusercontent.apps.(number)-(uid):/oauth2callback?code=4/-(uid)# sourceApplication:com.apple.SafariViewService annotation:(null) 

過去7日間に300回以上のクラッシュが発生しました。クラッシュは8月14日に始まり(17日に急上昇)、その日より前にリリースされたバージョンに表示されているので、私たちがアプリを通じて導入したものとは思えません。どんな助けもありがとうございます。

+0

これらのクラッシュはどのiOSバージョンで起こりますか? – brandonscript

+0

@brandonscript私たちが現在サポートしているのは、すべて - 9,10,11です.iOS 10の初心者は大部分のユーザーが自然であるからです。 – LeffelMania

+0

最近、これらのすべてのバージョンに触れたiOSアップデートがありましたか? iOS 11で再生できますか? – brandonscript

答えて

1

GoogleSignInがSFSafariViewerControllerを終了すると、スタックトレースからクラッシュが発生します。以前のUIViewController(GoogleSignInの一部ではありません)は再び公開されましたが、preferredInterfaceOrientationForPresentationの認識できない値(7)を返します。そのUIViewControllerが最初の画面である場合、そのpreferredInterfaceOrientationForPresentationは最初の外観では呼び出されないかもしれませんが、plistのUISupportedInterfaceOrientations値が代わりに使用されることに注意してください。だからあなたは、UIViewControllerから間違ったUIInterfaceOrientationを知らずに返すことができました。ユーザーがGoogleにサインインしてクラッシュを引き起こした後で再び表示されるまで。

+0

私は正直に反対する必要があります。クラッシュの問題ではなく、もちろんエラーメッセージを読んで解釈することもできますが、私はView Controllerの1つでなければならないという結論には同意しません。質問に記載されているように、これらのクラッシュは特定の日付に表示され始め、クラッシュがその日付より前のリリースに影響を与えているため、私たちがこれを引き起こした変更ではないことを示しています。私にとっては、View ControllerがGoogle SSO Appから却下されるのは、正しく設定されていない可能性もあります。 – LeffelMania

+0

さらに、アプリケーションのpreferredInterfaceOrientationメソッドをオーバーライドしません。値は、提供された有効なenum値を使用してアプリケーションのplistで定義されます。 – LeffelMania