cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
What’s new: end-to-end encryption, Replay and Dash updates. Find out more about these updates, new features and more here.

Dropbox API Support & Feedback

Find help with the Dropbox API from other developers.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Re: API V2 analogue of canceFileLoad and cancelFileUpload

API V2 analogue of canceFileLoad and cancelFileUpload

Steve L.32
Explorer | Level 4
Go to solution

In my iOS app using Dropbox API V1 I cancel file uploads and downloads using code similar to this:

 

[self.restClient canceFileLoad:dBox.cloudURLDropbox];

 

What is the corressponding V2 method call ... I've spent some time looking throught the docs and for the life of me I cannot see what to do!

 

Thanks,

Steve

1 Accepted Solution

Accepted Solutions

Greg-DB
Dropbox Staff
Go to solution

You can save the task returned by the download/upload call, and then call cancel on it:

 

DBDownloadDataTask *downloadTask = [[client.filesRoutes downloadData:filePath] setResponseBlock:^(DBFILESFileMetadata *metadata, DBFILESDownloadError *downloadError, DBRequestError *error, NSData *fileData) {
        // ...
}];

// ...

[downloadTask cancel];

 

Hope this helps! 

View solution in original post

7 Replies 7

Greg-DB
Dropbox Staff
Go to solution

You can save the task returned by the download/upload call, and then call cancel on it:

 

DBDownloadDataTask *downloadTask = [[client.filesRoutes downloadData:filePath] setResponseBlock:^(DBFILESFileMetadata *metadata, DBFILESDownloadError *downloadError, DBRequestError *error, NSData *fileData) {
        // ...
}];

// ...

[downloadTask cancel];

 

Hope this helps! 

Steve L.32
Explorer | Level 4
Go to solution

Thank you Greg, perfecto! I can cancel uploads and downloads on the iOS simulator.  But when I try to run my App on a real device (iPhone 7) I get a dynlib error similar to what happens when archiving the macOS version of my App  😞 I am again using the Xcode subproject method.

 

So I am stuck again ...

 

Thanks,

Steve

 

Screen Shot 2017-05-20 at 11.00.12 PM.pngScreen Shot 2017-05-20 at 11.05.40 PM.png

 

Steve L.32
Explorer | Level 4
Go to solution

Hmmm.  After hours of hacking I tried adding the framework an an embedded binary, and lo and behold the App now runs on a device:

 

Screen Shot 2017-05-22 at 9.49.26 AM.png

That seems to give me TWO instances of Linked Frameworks now.  In the DB docs, for method #3 Xcode subprojects the instructions are very specific:

 

1) for iOS add the framework as a Linked Framework only.

2) for macOS add the framework as an Embedded Binary only.

 

I am confused 🙂

 

In any case I am prepared to mark this particular question concerning canceling up/down-loads from Objective-C as answered, leaving aside the unanswered linking questions/problems.  As an aside I will note that I can also better read the full Objective-C V2 API docs thanks to you.  It was, as they say, hard for me to see the forest for the trees.

 

Thanks!

 

Greg-DB
Dropbox Staff
Go to solution
Thanks! I'm glad to hear you got that working.

I'll still have engineering investigate this to figure out what's causing that though.

Giordano58
Explorer | Level 3
Go to solution

Hi Steve and Greg,

I already use this feature and it works but I have a further question.

 

Suppose I have to upload a file of 1 MB.  I start the upload but after 1-2 secs I stop the upload. It works but in the while some bytes have been uploaded and I want to remove them. Is there a way to automatically remove the uploaded bytes or I have to remove them by myself after I stopped the upload?

 

Many thanks and regards,

Giordano

Greg-DB
Dropbox Staff
Go to solution

@Giordano58 If you cancel the upload before it completes, the partial data is never "committed" and you don't need to do anything to remove it. 

Giordano58
Explorer | Level 3
Go to solution

Yes, ok.

 

Making use of the following method to upload file 

[userClient.filesRoutes uploadUrl:pathToSave inputUrl:db]

 

I have solved also this problem.

 

Thanks and regards,

Giordano

Need more support?