このトピックでは、Alibaba Cloud Drive and Photo Service (PDS) SDK for iOS を統合して使用するためのガイドを提供します。
統合ガイド
SDK の統合
CocoaPods を使用して PDS SDK を統合する場合は、Podfile に pod 'PDS_SDK' を追加し、コマンド pod update を実行して SDK の統合を完了します。
SDK の初期化
SDK を初期化する前に、PDS がアクティベートされ、PDS コンソールでドメインが作成されていることを確認してください。詳細については、「PDS の使用開始」をご参照ください。
次のサンプルコードは、SDK を初期化する方法の例を示しています。
PDSClientConfig *clientConfig = [[PDSClientConfig alloc] init];
clientConfig.userAgent = config.userAgent;//現在のデバイスのユーザーエージェント
clientConfig.dbName = config.dbName;//オプション。 データベースの名前
clientConfig.host = config.apiHost;//API ホスト。 コンソールから取得できます
[PDSClientManager setupWithAccessToken:config.accessToken clientConfig:clientConfig];//アクセストークンは、サーバーが accessKeyId と accessKeySecret を介して取得し、クライアントに送信しますアクセストークンのリフレッシュ:
現在のバージョンでは、SDK はアクセストークンのリフレッシュを処理しません。SDK ユーザーは、サーバーから定期的にアクセストークンのリフレッシュをリクエストし、それを SDK に渡す必要があります。
[[PDSClientManager defaultClient] setAccessToken:accessToken];ファイルのアップロード
PDSDownloadUrlRequest *request = [[PDSDownloadUrlRequest alloc] initWithDownloadUrl:taskInfo.downloadUrl
destination:filePath
fileSize:[taskInfo.fileSize unsignedLongLongValue]
fileID:taskInfo.fileId
hashValue:taskInfo.hashValue
hashType:PDSFileHashTypeCrc64
driveID:taskInfo.driveId
shareID:taskInfo.shareId];
downloadTask = [[PDSClientManager defaultClient].file downloadUrl:request taskIdentifier:taskInfo.taskId];
イメージ ID に基づくファイルのアップロード
PDSUploadPhotoRequest *request = [[PDSUploadPhotoRequest alloc] initWithLocalIdentifier:localIdentifier
parentFileID:taskInfo.parentId
driveID:taskInfo.driveId
shareID:taskInfo.shareId
fileName:taskInfo.fileName];
uploadTask = [[PDSClientManager defaultClient].file uploadPhotoAsset:request taskIdentifier:taskInfo.taskId];
ここで作成された uploadTask はローカル変数であることに注意してください。 それへの独自の参照を維持する必要があります。 そうしないと、このオブジェクトがリリースされた後、コールバックに問題が発生します。
タスクのステータスと進行状況のコールバック:
@weakify(self);
[uploadTask setResponseBlock:^(PDSFileMetadata *result, PDSRequestError *requestError, NSString *taskIdentifier) {
@strongify(self);
if (requestError) {//アップロードに失敗しました
//TODO エラー処理
} else {//アップロードに成功しました。一時ファイルを削除します
[[PDSClientManager defaultClient].file cleanUploadTaskWithTaskIdentifier:taskIdentifier force:YES];
}
} queue:self.transferQueue];
[uploadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//TODO 進行状況のコールバック
} queue:self.transferQueue];アップロードが完了または失敗した後、このファイルで再開可能なアップロードなどの操作を続行しないことを確認した場合は、cleanUploadTaskWithTaskIdentifer メソッドを呼び出して、このアップロードタスクに関連するキャッシュを削除することに注意してください。
ファイルのダウンロード
PDSDownloadTask *downloadTask = nil;
PDSDownloadUrlRequest *request = [[PDSDownloadUrlRequest alloc] initWithDownloadUrl:taskInfo.downloadUrl
destination:filePath
fileSize:[taskInfo.fileSize unsignedLongLongValue]
fileID:taskInfo.fileId
hashValue:taskInfo.hashValue
hashType:PDSFileHashTypeCrc64
driveID:taskInfo.driveId
shareID:taskInfo.shareId];
downloadTask = [[PDSClientManager defaultClient].file downloadUrl:request taskIdentifier:taskInfo.taskId];タスクの進行状況とステータスのコールバック:
@weakify(self);
[downloadTask setResponseBlock:^(PDSFileMetadata *_Nullable result, PDSRequestError *_Nullable requestError, NSString *_Nonnull taskIdentifier) {
@strongify(self);
if (result) {//ダウンロードに成功しました
}
if (requestError) {//ダウンロードに失敗しました
}
} queue:self.transferQueue];
[downloadTask setProgressBlock:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
@strongify(self);
//進行状況のコールバック
} queue:self.transferQueue];
ファイルに対する API 操作
[PDSClientManager defaultClient].file の下のクラスメソッドを介して、共通のファイルインターフェイスを呼び出します。 現在サポートされているファイル操作は次のとおりです。
Complete
Create
Move
Delete
Copy
Update
GetDownloadUrl
GetUploadUrl
GetAsyncTask
インターフェイスパラメーターの詳細な説明については、「ファイル管理」をご参照ください。
オープンソースコード
リリースノート
0.0.2 2022-01-24
ローカルの写真アセットを直接アップロードする機能を追加しました。
ファイルインターフェイス API を追加しました。
再開可能なアップロードとダウンロードを修正しました。
一部のファイルで CRC64 検証が失敗する問題を修正しました。
一部のサーバーエラーコードが正しく処理されなかった問題を修正しました。
0.0.1 2021-12-01
最初のバージョン。ファイルのアップロード/ダウンロードと基本的なファイル操作をサポートします。