cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Announcements
Want to learn some quick and useful tips to make your day easier? Check out how Calvin uses Replay to get feedback from other teams at Dropbox 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: 

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?
Who's talking

Top contributors to this post

  • User avatar
    Giordano58 Explorer | Level 3
  • User avatar
    Greg-DB Dropbox Staff
  • User avatar
    Steve L.32 Explorer | Level 4
What do Dropbox user levels mean?