Swift3.0
ios10

Swiftで動画ダウンロードして、シェアする方法

More than 1 year has passed since last update.

概要

サーバにおいたファイルをダウンロードして、
シェアさせる方法

環境

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クラスにしてシェアすると意図しないファイル名になり、うまく拡張子がおかしくなったりした。そのかわり、ファイルのパスを渡すことで、うまくシェアされることが確認できた。

参考文献

https://teratail.com/questions/26203