iOS版 「ファイル」アプリ対応
file:///private/var/mobile/Containers/Data/Application/(MIDITrailのID)/Documents/Inbox/abcd.mid
file:///private/var/mobile/Containers/Data/Application/(MIDITrailのID)/Documents/abcd.mid
file:///private/var/mobile/Containers/Data/Application/(他アプリのID)/Documents/abcd.mid
file:///private/var/mobile/Containers/Shared/AppGroup/(何かのID)/File%20Provider%20Storage/Downloads/abcd.mid
file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Downloads/abcd.mid
いずれのケースも、(1)(2)のDelegateが両方とも実行された。指定されたURLは(1)(2)で同じであった。 ただし少なくとも(e)のケースでは、(1)で渡されたNSURLオブジェクトを利用すると、ファイルへのアクセスは権限なしで失敗する。 しかし(2)で渡されたNSURLオブジェクトを利用すると、ファイルへのアクセスは成功する。
iOS9以降で(b)(c)(d)(e)が実施できる。
iCloud を追加。"iCloud Documents"を選択状態にする。これによりプロジェクトに MIDITrai.entitlements ファイルが追加された。
Document Types に登録済みの4項目について、次のプロパティを追加。 (Standard MIDI File, Image File, Downloadable Sounds, SoundFont)
Imported UTIs に次の4項目を追加。(2)はカスタムでないので登録不要と思われるが、念のため追加した。
指定URLオープンのデリゲートを定義して、アプリケーションオブジェクトに通知する処理を追加。
既存のファイル受け取り処理 receiveFileFromOtherApp の呼び出しを、iOS9未満の時だけ呼び出すように修正。
ファイル受け取り時に、既存ファイルとファイル名が重複した場合、ファイル名の末尾に追加する連番のフォーマットを変更する。
変更前:XXX-1.mid ハイフン 変更後:XXX_1.mid アンダーバーファイル一覧でファイル名をソート表示したときに、連番が追加されたファイルが後ろに並ぶようにするため。
指定URLのパスを確認して、以下のいずれかの処理を実行する。
次に以下の処理を実行する。
MIDITrailのDocumentsフォルダ配下にファイルを配置するときのファイル名生成メソッドを追加。 ファイル名が重複するときはファイル名末尾に連番(_1,_2,...)を追加する。
指定URLからファイルダウンロードするメソッドを追加。
ファイル一覧 m_pFileArray のクリア処理を追加。
ファイル一覧を複数回更新するケースを想定して m_pFileArray の破棄処理を追加。
ファイル一覧更新メソッドを追加。
指定ファイルまでスクロールして選択状態にするメソッドを追加。
ファイル一覧更新メソッドを追加。 背景画像ビュー制御とWavetableファイルビュー制御にファイル一覧更新を指示する。
ファイル一覧 m_pFileArray のクリア処理を追加。
ファイル一覧を複数回更新するケースを想定して m_pFileArray の破棄処理を追加。
ファイル一覧更新メソッドを追加。
ファイル一覧 m_pFileArray のクリア処理を追加。
ファイル一覧を複数回更新するケースを想定して m_pFileArray の破棄処理を追加。
ファイル一覧更新メソッドを追加。
アプリをリリースする際にOrganizerでValidateを実施したところ、以下のエラーが発生した。 この問題を解決するため、iCloud Containerの設定を追加する。
Automatic signing is unable to resolve an issue with the "MIDITrail.app" target's entitlements. Automatic signing can't add the com.apple.developer.icloud-container-environment entitlement to your provisioning profile. Switch to manual signing and resolve the issue by downloading a matching provisioning profile from the developer website. Alternatively, to continue using automatic signing, remove this entitlement from your entitlements file and its associated functionality from your code. Then rebuild your archive and try again.
Modify App Capabilities Adding or removing any capabilities will invalidate any provisioning profiles that include this App ID and they must be regenerated for future use. (機能を追加または削除すると、このApp IDを含むプロビジョニングプロファイルが無効になり、 将来使用するために再生成する必要があります。)
iOS11から追加されている「ファイル」アプリに対応する。
本対応により、SafariでダウンロードしたファイルをMIDITrailに取り込めるようになる。