質問編集履歴

5

追記

2021/06/01 12:25

投稿

ryo-dev
ryo-dev

スコア437

test CHANGED
File without changes
test CHANGED
@@ -169,3 +169,31 @@
169
169
  で、スリープを挟もうとおもいスリープを挟むとHTTP通信でエラーになります。
170
170
 
171
171
  これをうまく回避する方法はありませんか?
172
+
173
+ ### エラー
174
+
175
+ メモリのエラー
176
+
177
+ ![イメージ説明](88f2049a7c6e08512f76f7bf8b380ad9.png)
178
+
179
+
180
+
181
+ スリープを挟むと通信できない...
182
+
183
+ ```log
184
+
185
+ 2021-06-01 21:23:05.839333+0900 U22[6841:1264487] [connection] nw_endpoint_handler_set_adaptive_read_handler [C2 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
186
+
187
+ 2021-06-01 21:23:05.839464+0900 U22[6841:1264487] [connection] nw_endpoint_handler_set_adaptive_write_handler [C2 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
188
+
189
+ 2021-06-01 21:23:10.479982+0900 U22[6841:1264484] [connection] nw_endpoint_handler_set_adaptive_read_handler [C3 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
190
+
191
+ 2021-06-01 21:23:10.480112+0900 U22[6841:1264484] [connection] nw_endpoint_handler_set_adaptive_write_handler [C3 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
192
+
193
+ 2021-06-01 21:23:10.848275+0900 U22[6841:1264486] [connection] nw_endpoint_handler_set_adaptive_read_handler [C4 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
194
+
195
+ 2021-06-01 21:23:10.848521+0900 U22[6841:1264486] [connection] nw_endpoint_handler_set_adaptive_write_handler [C4 192.168.100.16:8200 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
196
+
197
+ 2021-06-01 21:23:12.232012+0900 U22[6841:1264486] XPC connection interrupted
198
+
199
+ ```

4

修正

2021/06/01 12:25

投稿

ryo-dev
ryo-dev

スコア437

test CHANGED
File without changes
test CHANGED
@@ -163,3 +163,9 @@
163
163
  アドバイスを頂き、画像データをPNG形式へ変換し、そのデータをBase64でエンコードしたデータをPHPへ送信し、PHP側でPNGファイルへデコードする事にしました。
164
164
 
165
165
  なんですが、別問題が発生しました。
166
+
167
+ 読み込んだ画像をpngへ変換する処理(`let pngImageData = image!.pngData()`)を加えると、メモリのエラーで落ちます。←おそらくメモリ不足
168
+
169
+ で、スリープを挟もうとおもいスリープを挟むとHTTP通信でエラーになります。
170
+
171
+ これをうまく回避する方法はありませんか?

3

追記

2021/06/01 12:20

投稿

ryo-dev
ryo-dev

スコア437

test CHANGED
File without changes
test CHANGED
@@ -156,4 +156,10 @@
156
156
 
157
157
  ```
158
158
 
159
- 最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。
159
+ ~~最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。~~
160
+
161
+
162
+
163
+ アドバイスを頂き、画像データをPNG形式へ変換し、そのデータをBase64でエンコードしたデータをPHPへ送信し、PHP側でPNGファイルへデコードする事にしました。
164
+
165
+ なんですが、別問題が発生しました。

2

修正

2021/06/01 12:15

投稿

ryo-dev
ryo-dev

スコア437

test CHANGED
File without changes
test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  assets.enumerateObjects({(obj, index, stop) -> Void in
46
46
 
47
- manager.requestImage(for: obj, targetSize: CGSize(width: obj.pixelWidth, height: obj.pixelHeight), contentMode: .aspectFill, options: nil) { [self] (image, info) -> Void in
47
+ manager.requestImage(for: obj, targetSize: CGSize(width: obj.pixelWidth, height: obj.pixelHeight), contentMode: .aspectFill, options: nil) {(image, info) -> Void in
48
48
 
49
49
  if(!arr.contains(String(obj.hashValue))){
50
50
 
@@ -52,7 +52,13 @@
52
52
 
53
53
  // pngで保存する場合
54
54
 
55
- let pngImageData = image!.pngData()
55
+ // let pngImageData = image!.pngData()
56
+
57
+
58
+
59
+
60
+
61
+ // self.backImageView.image = image! as UIImage
56
62
 
57
63
  // jpgで保存する場合
58
64
 
@@ -78,23 +84,39 @@
78
84
 
79
85
  // print(fileURL)
80
86
 
87
+ // print(pngImageData!)
88
+
89
+ // print("サーバーと通信をする")
90
+
81
91
 
82
92
 
83
- // ファイルの送信
93
+
84
94
 
95
+ // 送信処理
96
+
85
- var request = URLRequest(url: URL(string: "http://192.168.100.16:8200/form.php")!)
97
+ var request = URLRequest(url: URL(string: "http://192.168.100.16:8200")!)
86
98
 
87
99
  request.httpMethod = "POST"
88
100
 
89
- request.addValue("text/plain", forHTTPHeaderField: "content-type")
90
-
91
- request.addValue("image/png", forHTTPHeaderField: "content-type")
101
+ request.addValue("application/json", forHTTPHeaderField: "content-type")
92
-
93
- request.httpBody = "dummy=dummy&id=(UUID().uuidString)&files[]=(pngImageData)".data(using: .utf8)
94
102
 
95
103
 
96
104
 
105
+ do{
106
+
107
+ // クエリをサーバーに投げる
108
+
109
+ request.httpBody = try JSONEncoder().encode(["query":"mutation{data(uuid:\"(UUID().uuidString)\",hash:\"(obj.hashValue)\",data:\"0000000\")}"])
110
+
111
+ }catch{
112
+
113
+ print("エラー")
114
+
115
+ }
116
+
117
+
118
+
97
- let task = URLSession.shared.uploadTask(with: request, from: nil) {[self]data, response, err in
119
+ let t = URLSession.shared.uploadTask(with: request, from: nil) { data, response, err in
98
120
 
99
121
  if err != nil{
100
122
 
@@ -104,19 +126,23 @@
104
126
 
105
127
 
106
128
 
107
- print(String(data: data!,encoding: .utf8)!)
129
+ let resultData = String(data: data!,encoding: .utf8)!
130
+
131
+ // print(resultData)
132
+
133
+ // 送信済みリストを取得
134
+
135
+ print("通信結果", resultData)
136
+
137
+ // func2(resultData: resultData)
108
138
 
109
139
  }
110
140
 
111
- task.resume()
141
+ t.resume()
112
-
113
- print("通信終わり")
114
-
115
- Thread.sleep(forTimeInterval: 10)
116
142
 
117
143
 
118
144
 
119
-
145
+ sleep(5)
120
146
 
121
147
 
122
148
 
@@ -126,6 +152,8 @@
126
152
 
127
153
  })
128
154
 
155
+ }
156
+
129
157
  ```
130
158
 
131
159
  最初は一度pngファイルに保存してから送信しようとしてたのですが、ファイルに保存しなくてもpng形式に変換すれば送れそうだったので、`pngImageData`に入ったpngデータを送信しようとしてます。その関係でコメントアウトが多くなってます。

1

修正

2021/06/01 12:11

投稿

ryo-dev
ryo-dev

スコア437

test CHANGED
File without changes
test CHANGED
@@ -86,7 +86,9 @@
86
86
 
87
87
  request.httpMethod = "POST"
88
88
 
89
+ request.addValue("text/plain", forHTTPHeaderField: "content-type")
90
+
89
- request.addValue("application/json", forHTTPHeaderField: "content-type")
91
+ request.addValue("image/png", forHTTPHeaderField: "content-type")
90
92
 
91
93
  request.httpBody = "dummy=dummy&id=(UUID().uuidString)&files[]=(pngImageData)".data(using: .utf8)
92
94