Как загрузить файл с веб-сайта в iCloud пользователя

У меня есть приложение для iOS, которое загружает файлы данных с веб-страниц. Часто пользователь попадает на веб-страницу, но еще не имеет приложения. Вместо того, чтобы заставлять их загружать приложение, а затем повторно находить веб-страницу в приложении, я хотел бы загрузить файл данных, а затем приложение загрузит его при установке. Из того, что я могу собрать, мне нужно поместить этот файл в iCloud. Но когда я пытаюсь загрузить файл с помощью Safari, он говорит мне, что не может загрузить файл. Если я использую Chrome, он хочет, чтобы я использовал GoogleDrive для сохранения файла. Есть ли способ, которым веб-страница может сохранить файл в iCloud? Или есть другой способ сообщить приложению, какой файл загружать после его установки?


person Melchester    schedule 20.04.2016    source источник
comment
проверьте решение здесь по этой ссылке   -  person Sneha    schedule 20.04.2016
comment
Спасибо, но это не говорит мне, как веб-страница может загрузить файл в iCloud пользователя. Я могу сделать это в своем приложении. Но я хочу, чтобы файл загружался браузером.   -  person Melchester    schedule 20.04.2016


Ответы (2)


Я новичок в разработке приложений для iOS, но я пытаюсь ответить на этот вопрос. Пожалуйста, используйте следующий код:

 - (void)download:(NSURL *)url
{
    dispatch_queue_t q_default;
    q_default = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_async(q_default, ^{

        NSError *error = nil;
        BOOL success = [[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL:url error:&error];
        if (!success)
        {
            // failed to download
        }
        else
        {
            NSDictionary *attrs = [url resourceValuesForKeys:@[NSURLUbiquitousItemIsDownloadedKey] error:&error];
            if (attrs != nil)
            {
                if ([[attrs objectForKey:NSURLUbiquitousItemIsDownloadedKey] boolValue])
                {
                    // already downloaded
                }
                else
                {
                    NSMetadataQuery *query = [[NSMetadataQuery alloc] init];
                    [query setPredicate:[NSPredicate predicateWithFormat:@"%K > 0", NSMetadataUbiquitousItemPercentDownloadedKey]];
                    [query setSearchScopes:@[url]]; // scope the search only on this item

                    [query setValueListAttributes:@[NSMetadataUbiquitousItemPercentDownloadedKey, NSMetadataUbiquitousItemIsDownloadedKey]];

                    _fileDownloadMonitorQuery = query;

                    [[NSNotificationCenter defaultCenter] addObserver:self
                                                             selector:@selector(liveUpdate:)
                                                                 name:NSMetadataQueryDidUpdateNotification
                                                               object:query];

                    [self.fileDownloadMonitorQuery startQuery];
                }
            }
        }
    });
}

- (void)liveUpdate:(NSNotification *)notification
{
    NSMetadataQuery *query = [notification object];

    if (query != self.fileDownloadMonitorQuery)
        return; // it's not our query

    if ([self.fileDownloadMonitorQuery resultCount] == 0)
        return; // no items found

    NSMetadataItem *item = [self.fileDownloadMonitorQuery resultAtIndex:0];
    double progress = [[item valueForAttribute:NSMetadataUbiquitousItemPercentDownloadedKey] doubleValue];
    NSLog(@"download progress = %f", progress);

    // report download progress somehow..

    if ([[item valueForAttribute:NSMetadataUbiquitousItemIsDownloadedKey] boolValue])
    {
        // finished downloading, stop the query
        [query stopQuery];
        _fileDownloadMonitorQuery = nil;
    }
}
person Suraj Sukale    schedule 20.04.2016
comment
Спасибо, но я хочу, чтобы веб-страница загружала файл в iCloud. Возможно, мне вообще не стоило упоминать приложение. Мне не нужна помощь с приложением, обнаруживающим файл в iCloud. Мне просто нужно загрузить файл в (в?) iCloud, прежде чем мое приложение будет установлено. Если бы только был какой-то сквозной параметр, который можно было бы отправить через магазин приложений. - person Melchester; 20.04.2016

Только что услышал официальное слово от Apple. НЕТ способа скопировать/перенести/загрузить файл (изображение или что-то другое) с интернет-сайта в iCloud пользователя.

Путем экспериментов я обнаружил, что Safari БУДЕТ загружать некоторые типы файлов (например, jpeg) с веб-страницы, другие типы файлов выдают ошибку, упомянутую в вопросе, но НИКАКИЕ файлы не будут помещены в iCloud. И поэтому никакие файлы не будут доступны для моего приложения.

person Melchester    schedule 23.04.2016