【swift】iOSシェア機能でファイルを受信する実装
概要
Gmail等に添付されているファイルをシェア機能と使って受取る実装です。
事前準備
- Gmail等シェアできるアプリが必要です。
Info.plistの設定
- TARGETのInfoから設定するとわかりやすいでしょう
直接設定しても反映されます。
- nameに適当な名前、Typesにファイルタイプを入れます。
ファイルタイプは受取りたいファイルの種別です。System-Declared Uniform Type Identifiersを参照してくださいIdentifier列の値を入れます。
developer.apple.com
- 例:テキストファイルはpublic.text、画像ファイル(png)はpublic.png等、複数設定することも可能です。
- またpublic.dataを設定することで全てのTypeを受けることが出来ます。
- 他のアプリからのシェア機能で現れました。
受信したファイルのURLの取得
- iOS13からはSceneDelegateで受け取ります。
- アプリが起動している時
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { // アプリが起動している場合はこのメソッドで受ける // URLContextsにはいているURLが受信したファイルのURL let content = urlContexts.first let url = content?.url }
- アプリが起動していない
var urlContexts: Set<UIOpenURLContext>? func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { // アプリが起動していない時は起動時にここでシェアするファイルのURL取得する。 urlContexts = connectionOptions.urlContexts guard (scene as? UIWindowScene) != nil else { return } }