0

ライブフォト・壁紙のアプリを作っています。サーバーから画像と .mov ファイルをダウンロードしています。今、私はこれらのファイルをドキュメントディレクトリに保存することに固執しています。ライブ壁紙をドキュメント ディレクトリに保存するにはどうすればよいですか。誰かがこれについて考えているか教えてください。これが私のコードです

SDWebImageDownloader *downloader = [SDWebImageDownloader sharedDownloader];
[downloader downloadImageWithURL:[NSURL URLWithString:imgFile]
                         options:0
                        progress:nil                           completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {
                           if (image && finished) {
        NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentPath = [searchPaths objectAtIndex:0];
        NSString* photoPath =  [documentPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.JPG",strImg]];
        [data writeToFile:photoPath atomically:YES];


                           }
                       }];
NSURL *URL = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];

NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * downloadProgress){
    NSLog(@"%f",downloadProgress.fractionCompleted);
    NSString * str = [NSString stringWithFormat:@"%.2f",downloadProgress.fractionCompleted];
    NSDictionary * infoDict = @{@"Download": str,
                                @"id":uniqId};
    [[NSNotificationCenter defaultCenter]
     postNotificationName:@"DownloadNotification"
     object:self userInfo:infoDict];



}destination:^ NSURL *(NSURL *targetPath, NSURLResponse *response) {

    NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentPath = [searchPaths objectAtIndex:0];
    NSString* videoPath =  [documentPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.MOV",strImg]];
    NSURL *videoUrl =[NSURL URLWithString:videoPath];

    NSLog(@"%@",[videoUrl URLByAppendingPathComponent:videoPath]);
    return videoUrl;

} completionHandler:^(NSURLResponse* response, NSURL *filePath, NSError *error) {

    if(error)
    {
        NSLog(@"File Not Dowloaded %@",error);
        [self downloadFile];
    }
    else {
        NSLog(@"%@",filePath);


        [self.downloadRecord removeObjectAtIndex:0];
        if (self.downloadRecord.count > 0) {
            [self downloadFile];
        }
    }
}];
4

1 に答える 1

0

アプリ内からプログラムで壁紙を設定する (または壁紙のリストに画像/ビデオを追加する) 公式な方法はありません。達成できる最も近い方法は、それをカメラの役割に保存し、ユーザーがそこから壁紙として設定できるようにすることです。

ただし、Apple は一部の広告でこれを実現するためにプライベート API を使用していると思いますが、これは文書化されておらず、それを使用すると、アプリがアプリ ストアの承認から拒否される可能性があります。

于 2016-06-27T09:25:06.727 に答える