本文介绍 iOS SDK的快速入门。

更多细节用法可以参考本工程的:

您还可以直接 git clone 工程,并配置如下必要的参数:


快速入门_iOS_SDK 参考_对象存储 OSS 阿里云技术文档 第1张

运行工程 demo 如下:


快速入门_iOS_SDK 参考_对象存储 OSS 阿里云技术文档 第2张

示例

以下演示了在 iOS 平台以及 Mac 平台上传和下载文件的基本流程。

  • iOS 平台
    1. 需要添加的引用
      #import <AliyunOSSiOS/OSSService.h>
      
    2. 初始化 OSSClient

      初始化 OSSClient 需完成 Endpoint 设置、鉴权方式设置、Client 参数设置。其中,鉴权方式包含明文设置模式、自签名模式、STS 鉴权模式。 如果要使用 STS鉴权请先阅读访问控制章节以了解 RAM 的基础知识。以下内容假设您已开通 RAM 服务并了解 RAM 相关内容,比如如何获取子账户 AccessKeyId,SecretKeyId 以及 RoleArn 信息。

      完善脚本文件中 AccessKeyId,SecretKeyId 以及 RoleArn 参数信息。通过 Python 启动一个本机 http 服务。在客户端代码中访问本地服务从而获得 StsToken.AccessKeyId、StsToken.SecretKeyId 以及 StsToken.SecurityToken。

      更多信息可查看 sample 中的STS 使用说明

      NSString *endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
      
      // 移动端建议使用STS方式初始化OSSClient。可以通过sample中STS使用说明了解更多(https://github.com/aliyun/aliyun-oss-ios-sdk/tree/master/DemoByOC)
      id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"AccessKeyId" secretKeyId:@"AccessKeySecret" securityToken:@"SecurityToken"];
      
      client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:credential];
      
      

      通过 OSSClient 发起上传、下载请求是线程安全的,您可以并发执行多个任务。

    3. 上传文件

      假设您在控制台有已创建的 Bucket。SDK 的所有操作都会返回一个OSSTask,您可以为这个 Task 设置一个延续动作,等待其异步完成,也可以通过调用waitUntilFinished阻塞等待其完成。

      OSSPutObjectRequest * put = [OSSPutObjectRequest new];
      put.bucketName = @"<bucketName>";
      put.objectKey = @"<objectKey>";
      put.uploadingData = <NSData *>; // 直接上传NSData
      put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
          NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
      };
      OSSTask * putTask = [client putObject:put];
      [putTask continueWithBlock:^id(OSSTask *task) {
          if (!task.error) {
              NSLog(@"upload object success!");
          } else {
              NSLog(@"upload object failed, error: %@" , task.error);
          }
          return nil;
      }];
      // 可以等待任务完成
      // [putTask waitUntilFinished];
    4. 下载指定文件

      以下代码用于下载指定 Object 为NSData

      OSSGetObjectRequest * request = [OSSGetObjectRequest new];
      request.bucketName = @"<bucketName>";
      request.objectKey = @"<objectKey>";
      request.downloadProgress = ^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
          NSLog(@"%lld, %lld, %lld", bytesWritten, totalBytesWritten, totalBytesExpectedToWrite);
      };
      OSSTask * getTask = [client getObject:request];
      [getTask continueWithBlock:^id(OSSTask *task) {
          if (!task.error) {
              NSLog(@"download object success!");
              OSSGetObjectResult * getResult = task.result;
              NSLog(@"download result: %@", getResult.downloadedData);
          } else {
              NSLog(@"download object failed, error: %@" ,task.error);
          }
          return nil;
      }];
      // 如果需要阻塞等待任务完成
      // [task waitUntilFinished];
  • MAC 平台

    在MAC 平台中,除引入方式不一样以外,其他操作示例与 iOS 平台一致。

    import <AliyunOSSOSX/AliyunOSSiOS.h>