I'm relatively new to this, so please bear with me....I'm trying to setup a project integrating BlueCapKit framework, and want to enable bluetooth under Capabilities > Background Modes. But under my capabilities tab, Background Mode doesn't appear. It seems likely a configuration problem, I've searched but so far to no avail. Can anyone kindly point me in the right direction? I'm using the latest Xcode and working towards an iOS target. Thanks greatly!~ Nancy
Post
Replies
Boosts
Views
Activity
I'm trying to upload a binary file from iOS to a server on local Wifi. The uploader on the server works fine from its web page, but I can't get it to upload from Swift. It looks to me like my request is not properly formed, but I haven't been able to figure out what it's missing.
Thanks for any help.
~ Nancy
Here's my upload routine:
func uploadFile() {
let config = URLSessionConfiguration.default
let session = URLSession(configuration: config)
let updateURL = URL(string: ("http://" + currentBaseString + "/update"))
var request = URLRequest(url: updateURL!)
print("SETUP Upload Request: ", request)
request.httpMethod = "POST"
guard let fileURL = Bundle.main.url(forResource: "R2-0701", withExtension: "bin") else {
print("Failed to create URL for file.")
return
}
do {
let data = try Data(contentsOf: fileURL)
print("SETUP Found the data file\n")
request.httpBody = data
let task = URLSession.shared.uploadTask(with: request as URLRequest, fromFile: fileURL) { data, response, error in
if error != nil {
print ("RRC Task error: \(String(describing: error))")
return
}
guard let response = response as? HTTPURLResponse, (200...299).contains(response.statusCode) else {
print ("Server error")
return
}
if let mimeType = response.mimeType,
mimeType == "multipart/form-data",
let updateData = data,
let dataString = String(data: updateData, encoding: .utf8) {
print ("got data: \(dataString)")
}
}
task.resume()
}
catch {
print("Error opening file: \(error)")
}
}
My URL construction is fine, it works for GET requests. "R2-0701.bin" is the filename of a file added to the project.
Here's the server HTML:
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'>
</script>
<form method='POST' action='#' enctype='multipart/form-data' id='upload_form'>
<table cellpadding = '10' align='center''>
<tr>
<td bgcolor='AA0000' align='center' style='color:white;'>
<p font-color='white' text-size='12' >
<b>Reprogram</b>
</p>
</td>
</tr>
<tr>
<td>
<input type='file' name='update'>
</td>
</tr>
<tr>
<td align='center'>
<input type='submit' value='Update'>
</form>
</td>
</tr>
<tr>
<td align='center'>
<div id='prg'>progress: 0%</div>
</td>
</tr>
</table>
<script>
$('form').submit(function(e){
e.preventDefault();
var form = $('#upload_form')[0];
var data = new FormData(form);
$.ajax({
url: '/update',
type: 'POST',
data: data,
contentType: false,
processData:false,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener('progress', function(evt) {
if (evt.lengthComputable) {
var per = evt.loaded / evt.total;
$('#prg').html('progress: ' + Math.round(per*100) + '%');
}
}, false);
return xhr;
},
success:function(d, s) {
console.log('success!')
},
error: function (a, b, c) {
}
});
});
</script>;
Here's the output:
SETUP Upload Request: http://192.168.86.41/update
SETUP Found the data file
2022-07-04 17:21:52.075958-0600 RoadrunnerComfort[5034:11127394] Task <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7> HTTP load failed, 1048855/0 bytes (error code: -1005 [4:-4])
2022-07-04 17:21:52.082677-0600 RoadrunnerComfort[5034:11127423] Task <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7> finished with error [-1005] Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={_kCFStreamErrorCodeKey=-4, NSUnderlyingError=0x283fb49c0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x2812ecc80 [0x22eb841b8]>{length = 16, capacity = 16, bytes = 0x10020050c0a856290000000000000000}, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalUploadTask <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7>"
), NSLocalizedDescription=The network connection was lost., NSErrorFailingURLStringKey=http://192.168.86.41/update, NSErrorFailingURLKey=http://192.168.86.41/update, _kCFStreamErrorDomainKey=4}
2022-07-04 17:21:52.083212-0600 RoadrunnerComfort[5034:11127396] [tcp] tcp_input [C7:2] flags=[R.] seq=3409008496, ack=2962928595, win=5744 state=LAST_ACK rcv_nxt=3409008496, snd_una=2962927159
RRC Task error: Optional(Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={_kCFStreamErrorCodeKey=-4, NSUnderlyingError=0x283fb49c0 {Error Domain=kCFErrorDomainCFNetwork Code=-1005 "(null)" UserInfo={NSErrorPeerAddressKey=<CFData 0x2812ecc80 [0x22eb841b8]>{length = 16, capacity = 16, bytes = 0x10020050c0a856290000000000000000}, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalUploadTask <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalUploadTask <25F2EC07-30D7-4532-BD6A-D35A41716AF2>.<7>"
), NSLocalizedDescription=The network connection was lost., NSErrorFailingURLStringKey=http://192.168.86.41/update, NSErrorFailingURLKey=http://192.168.86.41/update, _kCFStreamErrorDomainKey=4})`
Apologies, I am a beginner in this. I’m trying to archive my iOS app but keep getting this error:
Command PhaseScriptExecution failed with a nonzero exit code
It lists an error based on unmatched parentheses in a generated file,
<project>.build/Script-CEC03A37266E7CBC00D5745A.sh: line 4: unexpected EOF while looking for matching `"'
That file contains the following:
#!/bin/sh
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion "$PRODUCT_SETTINGS_PATH")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$PRODUCT_SETTINGS_PATH"
As you can see, the 2nd line has an odd parens(“).
I’ve tried making the 2nd line
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PRODUCT_SETTINGS_PATH")
…which didn't work, the file gets overwritten.
Running MacOS 11.5, Xcode 12.5.1
Thank you for any help.