0

ビデオ/オーディオ/画像などのメディアを転送するチャットアプリを開発しています。

以下のコード スニペットで転送を行うと、Wifi では転送はスムーズですが、3G ネットワークに移動すると非常に遅くなります。

また、別の問題は、バックグラウンドで AWS SDK が転送を一時停止し、フォアグラウンドになると再開することです。

1) AWS リージョンを変更しようとしても成功しないため、転送を高速化するにはどうすればよいですか。2) また、AWS S3 転送マネージャーと比較して S3Background 転送の例を使用しますが、ホーム ボタンを押すとダウンロードが一時停止します。

以下は私のコードを切り取ったものです。

//アップロード機能

AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];

AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = S3BucketName;

User *userMO = .....my user details 

NSString *fileName = [[filePath componentsSeparatedByString:@"/"] lastObject];

uploadRequest.key = [userMO.user_pool_id stringByAppendingPathComponent:fileName];

NSURL *uploadFileURL = [NSURL fileURLWithPath:filePath];

uploadRequest.body = uploadFileURL;

uploadRequest.expires = [NSDate dateWithTimeIntervalSinceNow:3600];


NSString *fileContentTypeStr = @"image/jpg";

if ([FileManager isVideoFile:fileName]) {
    //        fileContentTypeStr = [NSString stringWithFormat:@"video/%@",[[fileName pathExtension] lowercaseString]];
    fileContentTypeStr = [NSString stringWithFormat:@"video/quicktime"];
}
else if ([FileManager isImageFile:fileName]) {
    fileContentTypeStr = [NSString stringWithFormat:@"image/%@",[[fileName pathExtension] lowercaseString]];
}
else if ([FileManager isAudioFile:fileName]) {
    fileContentTypeStr = [NSString stringWithFormat:@"audio/%@",[[fileName pathExtension] lowercaseString]];
}

uploadRequest.contentType = fileContentTypeStr;

[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {

    if (task.error) {

        if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) {
            switch (task.error.code) {
                case AWSS3TransferManagerErrorCancelled:
                {
                        //updating ui to notify cancel

                }
                    break;
                case AWSS3TransferManagerErrorPaused:
                {
                        //updating ui to notify paused
                }
                    break;

                default:
                {
                    NSLog(@"Upload task failed: %@",[task.error localizedDescription]);
                        //updating ui to notify failed
                }
                    break;
            }
        } else {
            NSLog(@"Upload task failed: %@",[task.error localizedDescription]);
                        //updating ui to notify failed

        }
    }

    if (task.result)
    {
                        //updating ui to notify finished
    }
 return nil;
 }];


if(uploadRequest.state == AWSS3TransferManagerRequestStateRunning)
{
                        //updating ui to notify progress
}

//Add the request to the current upload cache handler entry as handle

どの団体にも提案があり、同様の問題に直面しました。

4

1 に答える 1