回答編集履歴

1

サンプルのコードを追記しました。

2022/10/12 05:06

投稿

退会済みユーザー
test CHANGED
@@ -8,3 +8,62 @@
8
8
  Documentsはディレクトリですので、
9
9
  stringByAppendingPathComponentでファイルを指定する形になっているみたいです。
10
10
 
11
+ ### 追記です。
12
+
13
+
14
+ コメントありがとうございます。
15
+ サンプルコードも含めて追記します。
16
+
17
+
18
+ > 他の青アプリで当該URL(...mp4)をダウンロードしたり保存することは可能です。
19
+ こちらはmp4ファイル自体は問題なさそうなのですね。
20
+ 関係しているかわからないので念の為の確認ですが、ファイルサイズはどれくらいでしょうか?
21
+
22
+
23
+ > ちょっとわからなくなってきました、、
24
+ 一度に全ての問題を対処しようとすると混乱してしまいますので、
25
+ 1つずつゆっくり確認すると良いと思います。
26
+
27
+
28
+ 処理の流れは次のような感じになりますので、
29
+ 上から順番に、それぞれのポイントで正しく処理ができているか
30
+ 確認してみると良いと思います。
31
+
32
+ 1. mp4ファイルダウンロード
33
+ 2. ドキュメントディレクトリに保存する([Product]-[Run]するたびにアプリのディレクトリが変わる?ため注意)
34
+ 3. 写真アプリに保存する
35
+
36
+
37
+ ちょっと細かい実装は違いますが、
38
+ 手元の環境(Xcode 14.0)で再現確認したコードも記載しておきます。
39
+
40
+ ```swift
41
+ func action() {
42
+ Task {
43
+ // ダウンロード
44
+ let url = URL(string: "http://localhost:1313/test.mp4")!
45
+ let (data, response) = try await URLSession.shared.data(from: url)
46
+ guard let httpResponse = response as? HTTPURLResponse,
47
+ httpResponse.statusCode == 200 else {
48
+ print("response: \(response)")
49
+ return
50
+ }
51
+ // ドキュメントディレクトリに保存する
52
+ let urlDocumentDirectory = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
53
+ let urlFilePath = urlDocumentDirectory.appendingPathComponent("download.mp4")
54
+ print(urlFilePath)
55
+ try! data.write(to: urlFilePath)
56
+ // 写真アプリに保存する
57
+ PHPhotoLibrary.shared().performChanges {
58
+ PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: urlFilePath)
59
+ } completionHandler: { success, error in
60
+ if let error = error {
61
+ print("error: \(error)")
62
+ return
63
+ }
64
+ print("success: \(success)")
65
+ }
66
+ }
67
+ }
68
+ ```
69
+