概要
サーバにおいたファイルをダウンロードして、
シェアさせる方法
環境
iOS10.3.2
iPodTouch
Xcode8.3.3
コード
ViewController
//
// ViewController.swift
// uiactivitytest
//
// Created by KatsuyaSakuma on 2017/08/14.
// Copyright © 2017年 Sakuma. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//ダウンロードボタンを押したときの処理
@IBAction func touchedStartDownloadButton(){
//テキトーに動画ダウンロード
let url = URL(string: "https://exsample.com/ex.MOV")
let request = URLRequest(url: url!)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if(data == nil){
print("ダウンロード失敗")
return
}
if data!.count == 0 {
print("ダウンロード失敗?")
} else {
print("ダウンロード成功時")
//ドキュメントフォルダのパス
let path = NSSearchPathForDirectoriesInDomains(
.documentDirectory,
.userDomainMask, true).last!
//ファイルのパス
let _path = path + "/make2017.MOV"
//アプリ内に保存
try? data?.write(to: URL(fileURLWithPath: _path))
print("ダウンロード終了")
}
}
task.resume()
}
//シェアボタンが押されたら
@IBAction func touchedShareButton(){
let path = NSSearchPathForDirectoriesInDomains(
.documentDirectory,
.userDomainMask, true).last!
let moviepath = path + "/make2017.MOV"//保存したファイル名、パスを指定してください。
let text = "sample"
let url = URL(fileURLWithPath: moviepath)//ファイルのパス作成
//ファイルのパスを渡す
//Data型でわたしてもできなかった。
let items = [text,url] as [Any]//動画のパスを渡す
// UIActivityViewControllerインスタンス化
let activityVc = UIActivityViewController(activityItems: items, applicationActivities: nil)
// UIAcitivityViewController表示
self.present(activityVc, animated: true, completion: nil)
}
}
結果
できた。
UIActivityViewControllerに、動画ファイルをDataクラスに変更して、渡してみたが、うまくうごかなかった。Dataクラスにしてシェアすると意図しないファイル名になり、うまく拡張子がおかしくなったりした。そのかわり、ファイルのパスを渡すことで、うまくシェアされることが確認できた。
参考文献