質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

392閲覧

Shared Extensionでwebページの画像を保存したい

hodoru3sei

総合スコア284

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/19 07:17

###実現したいこと
Shared Extensionを使ってSafariで開いている画像をアプリ内に保存したいと考えています。

###試したこと

こちらの記事を参考にShared Extensionの設定を行いました。
teratialの過去の質問に画像取得に関する質問があったので回答のコードを使わせていただいたのですが、画像の保存ができていない状況です。

didSelectPostメソッドの中のコードは以下の様に定義しています。

Swift

1 override func didSelectPost() { 2 print("postされたよ") 3 let inputItem: NSExtensionItem = self.extensionContext?.inputItems[0] as! NSExtensionItem 4 let itemProvider = inputItem.attachments![0] as! NSItemProvider 5 6 // shareExtension ではそのページの 画像 を取得 7 if itemProvider.hasItemConformingToTypeIdentifier("public.url") { 8 itemProvider.loadPreviewImage(options: nil, completionHandler: { (url, error) in 9 if let image = url as? UIImage { 10 //キーチェーンで紐付いている名前を記入 11 let defaults = UserDefaults(suiteName: "group.com.dbank.BLE.sampleShare") 12 defaults?.setValue(image.pngData(), forKey: "ddd") 13 let objects = defaults!.object(forKey: "ddd") 14 print(objects!) 15 } 16 self.extensionContext?.completeRequest(returningItems: [], completionHandler:nil) 17 }) 18 } 19 }

デバッグしながら進めるとif itemProvider.hasItemConformingToTypeIdentifier("public.url") {の行で弾かれてしまっている様です。
画像取得を試みているURLに変更してみたのですが結果は同じでした。

###ログ
出力されているログはこの様に表示されています。

log

12019-06-19 16:06:23.901153+0900 ShareExtension[4262:267428] [core] SLComposeServiceViewController got NSURL (null) for public.jpeg error: Error Domain=NSItemProviderErrorDomain Code=-1100 "Cannot load an object of class NSURL" UserInfo={NSLocalizedDescription=Cannot load an object of class NSURL} 22019-06-19 16:06:23.916201+0900 ShareExtension[4262:267362] [core] SLComposeServiceViewController got attachment coarseType 1 32019-06-19 16:06:23.993828+0900 ShareExtension[4262:267362] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 42019-06-19 16:06:23.994053+0900 ShareExtension[4262:267362] [MC] Reading from public effective user settings. 5postされたよ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2019/06/20 07:45

> Shared Extensionを使ってSafariで開いている画像をアプリ内に保存したいと考えています。 どこでpostしているんでしょう? safariでgoogleのトップページからポストすれば"public.url"で通るのは手元で確認しています。 おそらく、それ以外の場所でポストしているんですよね?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問