iOS Upload SDK

最終更新日:2023-02-02 10:57:22

クラウドVoDは、APPに埋め込むためのiOSアップロードSDKを提供し、iOSモバイルデバイスからクラウドVoDにファイルを簡単にアップロードできるようにします。

はじめに

SDKをダウンロード
ソースコードとインストールガイド

アップロードトークンとURLを取得する

詳細については、ビデオアップロードトークンを取得するをご覧ください。

初期化

初期化して、アップロードドメイン、タイムアウト、アップロードの並行処理、および再試行を設定します。

/**
 Create a Client to send upload request to Cloud VoD
 
 @param baseURL --the upload domain(required)
 @param timeout 
 @param concurrentCount --the concurrencies to do multi-part upload,range 5~10。
 @param retryTimes  */
- (instancetype _Nonnull)initWithBaseURL:(NSURL * _Nullable)baseURL
                              andTimeout:(NSTimeInterval)timeout
                         concurrentCount:(NSUInteger)concurrentCount
                              retryTimes:(NSUInteger)retryTimes;

アップロード方法

通常のアップロード

  WCSUploadObjectRequest *request = [[WCSUploadObjectRequest alloc] init];
  request.token = @"the upload token,get the token via get-upload-token API";
  request.fileName = @"origin name of the fie to be uploaded";
  request.key = @"file name to be displayed on Cloud VoD console, will use fileName by default";
  request.fileData = fileData; // file content to be uploaded
  request.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
    NSLog(@"%lld bytes sent, %lld total bytes sent, %lld total byte exptected", bytesSent, totalBytesSent, totalBytesExpectedToSend);
  };
  WCSClient *client = [[WCSClient alloc] initWithBaseURL:[NSURL URLWithString:"upload.cloudv.haplat.net"] andTimeout:30];
  [[client uploadRequest:request] continueWithBlock:^id _Nullable(WCSTask<WCSUploadObjectResult *> * _Nonnull task) {
    if (task.error) {
      NSLog(@"The request failed. error: [%@]", task.error);
    } else {
      // Below is the response if request successfully
      NSDictionary *responseResult = task.result.results;
    }
    return nil;
  }];

マルチパートアップロード

モバイル端末では大容量のファイルをアップロードするのに時間がかかり、何らかの異常でファイルのアップロードが停止した場合、すべてのコンテンツの再アップロードが必要であり、ユーザーエクスペリエンスに影響を与えます。そのため、大きなファイルをアップロードする場合は、マルチパートアップロードを使用することをお勧めします。
マルチパートアップロードとは、大きなファイルを複数のブロックとカスタムサイズのチャンクにカットし、これらのブロックを並行してアップロードすることです。ブロックのアップロードに失敗した場合、クライアントはこのブロックを再アップロードするだけです。

注: 各ブロックの最大サイズは100Mを超えることはできません。最小サイズは4M以上にしてください。

WCSUploadObjectRequest *request = [[WCSUploadObjectRequest alloc] init];
  request.token = @"the upload token,get the token via get-upload-token API";
  request.fileName = @"origin name of the fie to be uploaded";
  request.key = @"file name to be displayed on Cloud VoD console, will use fileName by default";
  request.fileData = fileData; // file content to be uploaded
  request.blockSize = 8 * 1024 * 1024; // block size
  request.chunkSize = 64 * 1024; // chunk size
  request.uploadProgress = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
    NSLog(@"%lld bytes sent, %lld total bytes sent, %lld total byte exptected", bytesSent, totalBytesSent, totalBytesExpectedToSend);
  };
  WCSClient *client = [[WCSClient alloc] initWithBaseURL:nil andTimeout:30];
  [[client uploadRequest:request] continueWithBlock:^id _Nullable(WCSTask<WCSUploadObjectResult *> * _Nonnull task) {
    if (task.error) {
      NSLog(@"The request failed. error: [%@]", task.error);
    } else {
      // Below is the response if request successfully
      NSDictionary *responseResult = task.result.results;
    }
    return nil;
  }];