Как сделать так, чтобы UIDocumentInteractionController показывал Календарь в качестве опции для открытия файла .ics?

Я перехватываю тип URL-адреса в веб-просмотре, который я использую в своем приложении, чтобы загрузить файл, на который он ссылается, вместо того, чтобы просто пытаться открыть его в веб-просмотре. Ссылка на файл .ics. Поэтому я загружаю этот файл во временный каталог, а затем открываю файл в экземпляре UIDocumentInteractionController, но Календарь не отображается как одно из приложений, в котором можно открыть этот файл .ics, только Mail, DropBox и «Копировать».

Как вы можете видеть в закомментированной строке в коде ниже, я пытался сделать ссылку открытой с помощью webcal:// спереди вместо http://, а также вручную установить UTI UIDocumentInteractionController безрезультатно. Есть ли какая-то причина, по которой мой локальный файл .ics не будет отображать Календарь как вариант для его открытия?

//Test for link to an ics file
if ([urlToLoad rangeOfString:@"GetSingleEventCalendarFile" options:NSCaseInsensitiveSearch].location != NSNotFound)
{
    //urlToLoad = [urlToLoad stringByReplacingOccurrencesOfString:@"http" withString:@"webcal"];
    //NSData *contact = [NSData dataWithContentsOfURL:[NSURL URLWithString:webCalProtocol]];
    //return NO;
    NSURLRequest *req = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:urlToLoad]];
    [NSURLConnection sendAsynchronousRequest:req queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *resp, NSData *respData, NSError *error){
        NSString *urlString = [req.URL absoluteString];
        NSString *actIdAndRest = [urlString substringFromIndex:[urlString rangeOfString:@"="].location + 1];
        NSString *actId = [actIdAndRest substringToIndex:[actIdAndRest rangeOfString:@"&"].location];
        NSString *fileName = [[@"activity" stringByAppendingString:actId] stringByAppendingString:@".ics"];
        NSString * path = [NSTemporaryDirectory() stringByAppendingPathComponent:fileName];
        NSError *errorC = nil;
        BOOL success = [respData writeToFile:path
                                     options:NSDataWritingFileProtectionComplete
                                       error:&errorC];

        if (success) {
            NSBundle * bundleContaining = [NSBundle bundleWithPath:NSTemporaryDirectory()];
            NSLog(@"%@", bundleContaining);
            NSURL *fileURL = [bundleContaining URLForResource:fileName withExtension:@"ics"];
            documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
            //documentController.UTI = @"ics";
            [documentController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];
        } else {
            NSLog(@"fail: %@", errorC.description);
        }
    }];
}

person Liam Hession    schedule 16.09.2013    source источник
comment
Хотя этому уже больше года, проблема с UIDocumentInteractionController все еще остается. @ Лиам, тебе удалось найти работающее решение?   -  person Alex    schedule 15.01.2015
comment
Вчера задал свой первый вопрос на Quora более чем за год, а потом получил ответ на этот... странно. Во всяком случае, если я правильно помню (маловероятно), я просто позволил нормально открыть ссылки на файлы ics, и загрузка произошла, как и следовало ожидать? Не уверен, извини!   -  person Liam Hession    schedule 15.01.2015
comment
Ха-ха, сумасшедший. Ну, в последний раз я проверил, щелкнув ссылку на фактический файл ics в UIWebView, вы можете подписаться на этот календарь, который на самом деле не загружает данные, но достигает конечной цели добавления событий в календарь. К сожалению для меня, расписание, с которым я работаю, создается динамически на основе личных данных пользователя, а на веб-сервере нет фактического файла ics. Спасибо за быстрый ответ в любом случае!   -  person Alex    schedule 15.01.2015