【審査】LSSupportsOpeningDocumentsInPlace で死ぬ話 その2【iOS】

【審査】Document Based Apps should support either the Document Browser 対応、パーミッション設定だけして出すと死ぬ話【iOS】

前回の問題の関連で、パーミッションを追加して、エミュレータ上で、アプリがクラッシュした原因を突き止めるまでの話

まず、エミュレータのクラッシュダンプの場所がここ

~/Library/Logs/CoreSimulator/xxxxxx/system.log
xxxxx の部分はエミュレーションタイプによるGUID なのだけど、新しいフォルダを選ぶとOK
 

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application has LSSupportsOpeningDocumentsInPlace key, but doesn't implement application:openURL:options: on delegate

丁寧にクラッシュ理由が書いてた。

どうやら application:openURL:options: も実装する必要があるらしい

0   CoreFoundation                      0x000000010f404f45 __exceptionPreprocess + 165

1   libobjc.A.dylib                     0x000000010d3c3deb objc_exception_throw + 48

2   CoreFoundation                      0x000000010f404daa +[NSException raise:format:arguments:] + 106                 

3   Foundation                          0x000000010cbb15ee -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198
4   UIKit                               0x000000010ddc5549 __45-[UIApplication _applicationOpenURL:payload:]_block_invoke + 453

5   UIKit                               0x000000010ddc5133 -[UIApplication _applicationOpenURL:payload:] + 729          

6   UIKit                               0x000000010ddb34c1 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4430

7   UIKit                               0x000000010ddb99c3 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1750

8   UIKit                               0x000000010ddb6ba3 -[UIApplication workspaceDidEndTransaction:] + 188           

9   FrontBoardServices                  0x00000001106a5784 -[FBSSerialQueue _performNext] + 192

10  FrontBoardServices                  0x00000001106a5af2 -[FBSSerialQueue _performNextFromRunLoopSource] + 45         

11  CoreFoundation                      0x000000010f331011 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17

12  CoreFoundation                      0x000000010f326f3c __CFRunLoopDoSources0 + 556

13  CoreFoundation                      0x000000010f3263f3 __CFRunLoopRun + 867 

14  CoreFoundation                      0x000000010f325e08 CFRunLoopRunSpecific + 488


もともと使っていたコードは
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
なのだけど、
- (BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options

に置き換えることでエラーは発生しなくなりました。

要するに、 openURL だけでなく、 handleOpenURL も置き換えないと行けなかったのですね。 

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です