環境要件

iOS 7.0 以降

インストール

OSS iOS SDK

アップロード SDK のダウンロード
  • フレームワークの導入

    OSS iOS SDK と VODUpload iOS SDK のフレームワークを導入します。

    Xcode で、フレームワークをドラッグしてターゲットにドロップし、表示されたダイアログボックスで [Copy items if needed] を選択します。

  • プロジェクトへのヘッダーファイルの導入
    #import <VODUpload/VODUploadClient.h>
    フレームワークを導入した後、プロジェクトの Build SettingsOther Linker Flags に、-ObjC を追加します。 プロジェクトに -force_load オプションが設定されている場合は、-force_load /AliyunOSSiOS を追加します。
  • IPv6 専用ネットワークとの互換性
    OSS モバイル SDK では、ワイヤレスネットワークでのドメイン名解決ハイジャックを回避するため HTTPDNS を導入しており、サーバーへのリクエストに対しては、IP アドレスを直接使用しています。 IPv6 専用ネットワークでは、互換性の問題が発生する可能性があります。 アプリは公式に、各アプリは IPv6 専用ネットワーク互換を必要とする旨のアプリのレビュー要件を発行しました。 このため、SDK は V2.5.0 以降で互換性を持つようになっています。 新しいバージョンでは、-ObjC の設定とは別に、2 つのシステムライブラリを導入する必要があります。
    libresolv.tbd
    SystemConfiguration.framework

VODUpload インスタンスの作成

コールバック関数の設定
OnUploadStartedListener testUploadStartedCallbackFunc = ^(UploadFileInfo* fileInfo) {
      NSLog(@"upload started .") ;
  };
 OnUploadSucceedListener testSuccessCallbackFunc = ^(NSString* filePath){
    NSLog(@"file:%@ upload success!", filePath);
 };
 OnUploadFailedListener testFailedCallbackFunc = ^(NSString* filePath, NSString* code, NSString* message){
    NSLog(@"failed code = %@, error message = %@", code, message);
 };
 //  Unit: byte
 OnUploadProgressListener testProgressCallbackFunc = ^(NSString* filePath, long uploadedSize, long totalSize) {
    NSLog(@"progress uploadedSize : %li, totalSize : %li", uploadedSize, totalSize);
 };
 OnUploadTokenExpiredListener testTokenExpiredCallbackFunc = ^{
    NSLog(@"*token expired.");
    // get token and call resmeUploadWithAuth.
 };
 OnUploadRertyListener testUploadRertyListener = ^{
    NSLog(@"retry begin.") ;
 };
 OnUploadRertyResumeListener testUploadRertyResumeListener = ^{
    NSLog(@"retry resume.") ;
 };
 VODUploadListener *listener;
 listener = [[VODUploadListener alloc] init];
 listener.started = testUploadStartedCallbackFunc;
 listener.success = testSuccessCallbackFunc;
 listener.failure = testFailedCallbackFunc;
 listener.progress = testProgressCallbackFunc;
 listener.expire = testTokenExpiredCallbackFunc;
 listener.retry = testUploadRertyListener;
 listener.retryResume = testUploadRertyResumeListener;

アップロード SDK の初期化

以下、いずれかの方法で権限付与情報を入力します。
  • AccessKey
    簡単ですが安全ではありません。 この方法は、テスト環境で使用することを推奨します。
    VODUploadClient *uploader;
     [uploader init:<accessKeyId>
              accessKeySecret:<accessKeySecret>
              listener:listener];
  • トークン
    安全ですが複雑です。 この方法は、本番環境で使用することを推奨します。 トークンの有効期限は一時的であり、ある期間に限り有効です。 そのため、トークンの送信は安全です。
    VODUploadClient *uploader;
     [uploader init:<accessKeyId>
              accessKeySecret:<accessKeySecret>
              secretToken:<secretToken>
              expireTime:<expireTime> 
              listener:listener];
  • リストの管理
    • アップロードするファイルの追加
      アップロード可能なファイルサイズは 5 MB までです。
      [uploader addFile:<uploadFilePath>
              endpoint:<endpoint> //Example: 'http://oss-cn-hangzhou.aliyuncs.com'
              bucket:<bucketName> //Enter the actual bucket name 
              object:<objectKey>];
      アップロード中、メディアセットの属性 (タイトル、タグ、説明、カテゴリ、カバー URL、カスタムデータ) を次の方法で取得します。addFile には、reload 関数が含まれており、最後のパラメーターは VodInfo のオブジェクトです。 定義は次のとおりです。
      @interface VodInfo : NSObject
      @property (nonatomic, strong) NSString* title;
      @property (nonatomic, strong) NSString* tags;
      @property (nonatomic, strong) NSString* desc;
      @property (nonatomic, strong) NSNumber* cateId;
      @property (nonatomic, strong) NSString* userData;
      @property (nonatomic, strong) NSString* coverUrl;
    • アップロードしたファイルの削除
      [uploader deleteFile:<index>];
    • リスト内の 1 つのファイルのアップロードをキャンセル
      [uploader cancelFile:<index>];
    • リスト内で 1 つのファイルのアップロードを再開
      [uploader resumeFile:<index>]; 
    • アップロードファイルリストの取得
      [uploader listFiles];
    • アップロードファイルリストの消去
      [uploader clearFiles];

アップロードの制御

  • アップロードの開始
    [uploader start];
  • アップロードの停止
    [uploader stop];
  • アップロードの一時停止
    [uploader pause];
  • アップロードの再開
    [uploader resume];
  • トークンが無効になった後のアップロードの再開
    [uploader resumeWithToken:<accessKeyId>
              accessKeySecret:<accessKeySecret>
              secretToken:<secretToken>
              expireTime:<expireTime>]