Сигурност на транспорта на приложения, ако не знам всички несигурни домейни, които трябва да използвам

Видях донякъде отговор на този въпрос тук, но в моя случай съм използване на NSURLSession за показване на изображения. Тези изображения се качват от потребителя или се сканират в база данни с помощта на скрипт.

В този случай писането на URL адреси за изключения (NSExceptionDomains) няма да работи, защото изображението се хоства от потребител на техния сайт или на друг сайт. Ако разреша NSAllowsArbitraryLoads, ще мога ли пак да бъда одобрен за App Store, тъй като не прилагам най-добрите практики на ATS?

Не съм сигурен кой е най-добрият начин да продължа. Всеки принос ще бъде оценен!

Ето кода, който използвам.

    NSString *thumbnail_url = [tempObject objectForKey:@"image"];
    NSURL  *url = [NSURL URLWithString:thumbnail_url];
    NSURLSession *session = [NSURLSession sharedSession];

    NSURLSessionDownloadTask *downloadPhotoTask = [session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
            NSData *imageData = [[NSData alloc] initWithContentsOfURL:location];
            dispatch_async(dispatch_get_main_queue(), ^{
                cell.tableImageView.image = [UIImage imageWithData:imageData];
        });
    }];

    [downloadPhotoTask resume];

person JetSet    schedule 01.12.2015    source източник
comment
NSAllowsArbitraryLoads е напълно поддържа се от Apple, следователно да, ще можете да изпратите приложението си в AppStore с това.   -  person holex    schedule 01.12.2015


Отговори (1)


Да, ще преминете проверка дори и с този параметър. Качили сме много компилации след iOS9 SDK с NSAllowsArbitraryLoads зададено на YES.

P.S.: Вашият код трябва да изглежда по-добре така:

cell.thumbnailURL = URL;
__weak typeof(cell) weak
NSURLSessionDownloadTask *downloadPhotoTask = [session downloadTaskWithURL:URL completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
    NSData *imageData = [[NSData alloc] initWithContentsOfURL:location];
    UIImage *image = [UIImage imageWithData:imageData];
    dispatch_async(dispatch_get_main_queue(), ^{
        if (weakCell.thumbnailURL != URL) {
            return;
        }
        weakCell.tableImageView.image = image;
    });
}];
[downloadPhotoTask resume];
person Timur Bernikovich    schedule 01.12.2015