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

以下演示了上传、下载文件的基本流程。更多细节用法可以参考本工程的:

ios demo示例: 点击查看

mac demo示例:点击查看

swift demo示例:点击查看

测试用例(可以参看api使用方式):点击查看

也可以直接git clone 工程。配置如下必要的参数:



然后运行工程,demo如下:



示例

  • IOS平台
    1. 需要添加的引用
      #import <AliyunOSSiOS/OSSService.h>
      
    2. STEP-1. 初始化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. STEP-2. 上传文件

      这里假设您已经在控制台上拥有自己的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. STEP-3. 下载指定文件

      下载一个指定objectNSData:

      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>