swiftを勉強中の者です。
タイトルの通り、サーバーに置いてる画像をSNSでシェアできるように実装したいと考えてます。
Socialフレームワークを使ってTwitterに画像をシェアする場合、
swift
1twitterVC.addImage(UIImage(named: "hogehoge"))
のようにすることで、アプリ内にもっている画像を入れられるのは知っているのですが
サーバーに置いてある画像をシェアしたい場合はどのように書けばよいのでしょうか?
そもそも、そのようなことは可能なのでしょうか?
お分かりの方がいらっしゃいましたらご教授頂けると幸いです。
何卒よろしくお願い致しますm(__)m
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
以下のコードでいかがでしょうか?
上記の画像がダウンロードされTwitter画面に添付されます。
ダウンロード先によってはiOS9 ATS問題
もありますので、ご注意ください。
swift
1import UIKit 2import Social 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 } 9 10 // ボタン押下時処理 11 @IBAction func pushTweetButton(sender: UIButton) { 12 13 // 画像ダウンロード 14 let url = NSURL(string: "https://teratail.com/uploads/contributed_images/78379419b2c58363c546e3e6e094a8c9.png") 15 let config = NSURLSessionConfiguration.defaultSessionConfiguration() 16 let session = NSURLSession(configuration: config) 17 let req = NSURLRequest(URL: url!) 18 19 let task = session.dataTaskWithRequest(req, completionHandler: { (data, response, error) in 20 21 if let imageData = data , image = UIImage(data: imageData) { 22 // ダウンロード成功時 23 dispatch_async_main { 24 // メインスレッドから呼び出し 25 self.openTweetVC(image) 26 } 27 28 } else { 29 // エラー処理 30 print("Error!") 31 } 32 }) 33 task.resume() 34 } 35 36 // Twitter画面に画像を添付して遷移 37 func openTweetVC(image: UIImage) { 38 let twitterVC = SLComposeViewController(forServiceType: SLServiceTypeTwitter) 39 twitterVC.addImage(image) 40 twitterVC.setInitialText("Message") 41 presentViewController(twitterVC, animated: true, completion: nil) 42 } 43} 44 45func dispatch_async_main(block: () -> ()) { 46 dispatch_async(dispatch_get_main_queue(), block) 47}
通信後の処理をメインスレッドで処理する
swift
1// 画像ダウンロード 2let url = NSURL(string: "https://teratail.com/uploads/contributed_images/78379419b2c58363c546e3e6e094a8c9.png") 3let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration(), delegate: nil, delegateQueue: NSOperationQueue.mainQueue()) 4let req = NSURLRequest(URL: url!) 5 6let task = session.dataTaskWithRequest(req, completionHandler: { (data, response, error) in 7 8 if let imageData = data , image = UIImage(data: imageData) { 9 // ダウンロード成功時 10 self.openTweetVC(image) 11 12 } else { 13 // エラー処理 14 print("Error!") 15 } 16}) 17task.resume()
投稿2016/04/04 14:42
編集2016/04/05 04:08総合スコア8490
0
サーバーから画像をダウンロードするだけでは?
サーバーに画像が置かれた時点で、シェアされた状態にあると思います。
投稿2016/04/04 10:17
総合スコア2183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/04 11:08
2016/04/04 14:25
2016/04/04 14:29
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/05 02:01
2016/04/05 04:06