【Swift4】Document Based Apps should support either the Document Browserというエラーが出た時に対処方法【Objective-C】

2020年8月26日

別アプリで開いたPDFファイルを、自分が作成したアプリで開く実装した後にアプリの申請をしたところ、以下のようなエラーが出ました。

WARNING ITMS-90737: "Invalid Document Configuration. Document Based Apps should support either the Document Browser (UISupportsDocumentBrowser = YES) or implement Open In Place (LSSupportsOpeningDocumentsInPlace = YES/NO). Visit https://developer.apple.com/document-based-apps/ for more information."

アプリ間の間でPDFファイルを共有を設定するにはDocumentTypesを設定すればいいのですが、申請の時はplistに「UISupportsDocumentBrowser」と「LSSupportsOpeningDocumentsInPlace」を許可する設定が別途必要になるということみたいです。

もくじ

  1. 別アプリで開いたPDFをアプリで開く方法
  2. PDFのアプリ間共有を有効にして申請する方法

1. 別アプリで開いたPDFをアプリで開く方法

TARGETS > Info > DocumetTypes を設置します。

Name:任意
Types:com.adobe.pdf(PDFの場合)

上記のように変更することで、他アプリ、例えばsafariで開いたPDFをsafariの共有ボタンを押し、自身のアプリを選択することでPDFの情報を受け渡すことができます。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
 
    // url にシェアで共有されたファイルのローカルパス(tmpフォルダのパス)が入っている
    
    return YES;
}

あとはAppDelegateでシェアされたファイルのURLを取得できるデリゲートメソッドを記述し、URLを使って任意のファイルを開く実装をすれば完了です。

ちなみにTypesにはPDFの他にも様々なTypesがあります。
PDF以外を設定したい人はググれば見つかると思うのでググってみてください。

2. PDFのアプリ間共有を有効にして申請する方法

さて、アプリ間の共有は先ほどので完了ですが、このままアプリをAppStoreへ申請するとエラーがでます。

WARNING ITMS-90737: "Invalid Document Configuration. Document Based Apps should support either the Document Browser (UISupportsDocumentBrowser = YES) or implement Open In Place (LSSupportsOpeningDocumentsInPlace = YES/NO). Visit https://developer.apple.com/document-based-apps/ for more information."

これを解決するには以下の2行をinfo.plistに追記します。

<key>UISupportsDocumentBrowser</key> <true/>
<key>LSSupportsOpeningDocumentsInPlace</key> <true/>

これでエラーが出ることなくAppSotreへの申請が可能となります。