Amazon Drive SDK for iOS


The SDK Client

Creating and Managing a Client

A client requires a block that returns an auth token. The easiest way to provide an auth token is with the open source AMZNAuthorizationProvider, although you may implement your own provider if you prefer.

  ACDSKClient *client = [ACDSKClient clientWithTokenProvider:^NSString *{
      NSError *error = nil;
      return [[AMZNAuthorizationProvider sharedProvider] fetchAuthTokenSynchronously:&error];

It is easy, though not required, to create a shared instance of ACDSKClient that you can use throughout your app. For more details on how to set up a shared instance of ACDSKClient, see the ACDSKClient section of the iOS Best Practices documentation. No matter how you create the client, be sure to keep a strong reference to it in order to prevent it from being deallocated before a request is sent.

When logout occurs, you should deallocate any existing instance of ACDSKClient. You should also cancel any client tasks in progress, or at least ignore the response for any existing requests.

Making a Request

Constructing a Request

To make an API call using the client, you must create an instance of the request object for that API. Example: To call uploadFile, you must create an instance of ACDSKUploadFileRequest. Check the documentation for required parameters for the request as well as additional optional ones.

  // Create the request object and set the required parameters
  ACDSKUploadFileRequest *uploadFileRequest = [ACDSKUploadFileRequest new];
  // Set the local path of the file to upload
  uploadFileRequest.filePath = localFilePath;
  // Set the name to use for the file in Amazon Drive = @"NewCloudDriveFile";

  // Make asynchronous request using instance of ACDSKClient
  [client uploadFile:uploadFile:request fail:^(NSError *error) {
      // Handle failure
  } progress:^(float progressed) {
      // Handle progress
  } success:^(ACDSKUploadFileResponse *response) {
      // Handle success

Making Calls and Handling Errors

ACDSKClient requests are made asynchronously and do not block the calling thread. They are block-based and take a failure block that provides an error with the reason for the failure, as well as a success block that provides a response object. Almost every request class has a parallel response class, such as the ACDSKAccountInfoRequest class and ACDSKAccountInfoResponse class or the ACDSKListNodesRequest and ACDSKListNodesResponse class. Some API calls result in an empty response, represented by the ACDSKEmptyResponse class.

Canceling a Request

Every ACDSKClient method for making a request to Amazon Drive returns a ACDSKTask object which can be used to keep a reference to the request. This task object enables a developer to cancel a request simply by calling cancel on the corresponding task. This will result in the request fail block being executed with error code AMZNCDSKURLErrorOperationCancelled.

  // Set up client
  ACDSKClient *client = // ...
  // Set up request
  ACDSKDownloadFileRequest *downloadFileRequest = // ...

  // Keep a reference to the task returned by the client method
  ACDSKTask *downloadFileTask = [client downloadFile:downloadFileRequest fail:^(NSError *error) {
    if ([error.domain isEqualToString:AMZNCDSKURLErrorDomain] && error.code == AMZNCDSKURLErrorOperationCancelled) {
      // Request was cancelled
  } progress:^(float progressed) {
      // ...
  } success:^(ACDSKDownloadFileResponse *response) {
      // ...

  // Cancel the request
  [downloadFileTask cancel];


If you have any questions, see the Developer Forum.