質問: item as! UIImage // itemImage を UserDefaultsで保存処理 }) } self.extensionContext!.completeRequestReturningItems([], completionHandler: nil) } ``` こちらのサイトを参考にしているのですが、中に出てくる inputItem, itemProviderの変数の意味がいまいち理解できず、 応用を生かすことができません。 hasItemConformingToTypeIdentifierの中でデータを認識してそれがあるかどうかを チェックするのですが、"public.image", "public.pdf" などがその部分を通らないためできません。 画像のURLや書き込んだ内容(self.contentText)などは保存可能ですが、その画像データ本体を保存することはやはりできないのでしょうか?
回答: こんにちは。はじめに写真をPOSTする手順をお伝えします。 /** 1.BuildTargetをSampleExtensionにする。 理由は、SampleShare_Teratailのソースには保存したファイルを呼び出すコードしか記載しておりません。 初回起動では、保存された写真などはないので、nilになり。例外が起きます。 !イメージ説明 2.共有ボタンを押すとアプリ名が記載されているので、SampleEXtensionをタップします。その後POSTを押すアラートが表示されるので、タップします。 !イメージ説明 3.一旦、アプリを終了して、1.の写真のTargetを切り替えて、再度SampleShare_Teratilを起動します。 !イメージ説明 /** Q image変数を定義して中身があった際に保存処理を行うというところに処理がうまくいかず、urlの中がnilだったのでPostしても何も起きないという事象について、 A 想像ですが、ご自身のプロジェクトファイルのBundleIdntifierをXcodeの設定とコードと紐付ける必要があると思います。 手順 1. let defaults = UserDefaults(suiteName: "group.com.dbank.BLE.SampleShare-Teratail") のcom.dbank.BLE.SampleShare-Teratailは、BundleIdntifierです。 ご自身のプロジェクトファイルのBundleIdntifierを設定します。 保存の場合は"group.com.dbank.BLE.SampleShare-Teratail"のようにします。 !イメージ説明 1. キーチェーン、AppGroupsが有効になっているか再確認願います。 !イメージ説明 この設定がうまく対応できればできると思います。 ちなみにTargetのSampleExtensionのExtensionを語尾につけないと共有ボタンを押す際に、アプリが現れません。そちらも合わせて、確認願います。よろしくお願いします。