モバイルネットワークでは、アップロードが途中でサイレントに失敗した場合でも、iOS SDK はアップロードが成功したと報告する可能性があります。ワイヤレス接続性の不良や、長時間のアップロード中のネットワーク切り替えにより、転送が失敗することがあります。ファイル全体がまだアップロードされていないため、オブジェクトは OSS コンソールに表示されません。
モバイルネットワークでアップロードを信頼性の高いものにするには、以下の方法を使用してください。
適切なアップロード方法の選択
再開可能なアップロードは、ファイルを独立して追跡されるパートに分割します。あるパートが失敗した場合、ファイル全体ではなく、そのパートのみがリトライされます。モバイルネットワーク上の大きなファイルの場合、これが推奨されるアップロード方法です。
| 単一アップロード | 再開可能なアップロード | |
|---|---|---|
| 最適な用途 | 安定したネットワーク上の小さなファイル | 大きなファイルまたは不安定なモバイルネットワーク |
| ネットワーク障害時 | アップロード全体を再実行する必要があります。 | 失敗したパートのみをリトライする |
詳細については、開発者リファレンスの「再開可能なアップロード」をご参照ください。
タイムアウトとリトライ回数の設定
モバイルアプリケーションの場合、リクエストがタイムアウトするまでの待機時間と、失敗時にリトライする回数を制御するために、OSSClientConfiguration を設定します。
OSSClientConfiguration * conf = [OSSClientConfiguration new];
conf.maxRetryCount = 3; // ネットワークリクエストが例外により失敗した後のリトライ回数。
conf.timeoutIntervalForRequest = 30; // ネットワークリクエストのタイムアウト期間 (秒単位)。アップロードの整合性の検証
OSS が受信したデータが送信したデータと一致することを確認するためのメカニズムが 2 つあります。
Content-Type の設定と MD5 検証の有効化
Content-Type ヘッダーを設定し、アップロードリクエストで「MD5 検証」を有効にします。MD5 ハッシュが一致しない場合、オブジェクトを再アップロードします。
CRC-64 値の確認
OSS は、いずれかのアップロード方法を使用してアップロードされたオブジェクトに対して CRC-64 チェックサムを返します。データ整合性を確認するために、ローカルで計算された CRC-64 値と比較します。
「CRC-64 を使用したデータ伝送の整合性の確認」をご参照ください。
アップロード失敗を診断するためのロギングの有効化
アップロードの問題を追跡するために、2 つのロギングオプションが利用可能です。
OSS ロギング機能
「OSS ロギング機能」は、アップロードアクティビティをリアルタイムで記録し、障害が発生した場所を特定するのに役立ちます。
OSS SDK ローカルロギング
モバイル動作環境は予測不可能です。SDK は特定のリージョンや期間で利用できない場合があります。ローカルロギングを有効にすると、SDK はログエントリをデバイスサンドボックスまたは OSSLogs フォルダに書き込みます。クライアントを初期化し、ログ有効化メソッドを呼び出してアクティブ化します。必要に応じて、より詳細な分析のためにログをサーバーにアップロードします。