Ссылка на PDF в приложении - PullRequest
       23

Ссылка на PDF в приложении

0 голосов
/ 11 января 2011

У меня есть приложение для iOS, которое в какой-то момент открывает ссылку на веб-сайт в веб-просмотре.Эти ссылки хранятся в файле plist (поэтому их легко поддерживать по мере развития приложения).Далее я также хочу сослаться на PDF-файлы (или любое изображение в формате текстового файла, даже в формате html, это гибко), которые хранятся в приложении.И я хотел бы сделать это как можно больше из существующей структуры приложения.Итак, возможно ли создать ссылку, которая может быть помещена в список в виде веб-ссылки, но вместо этого открывает файл на самом устройстве (возможно, в веб-просмотре)?И как бы я пошел по этому поводу?Есть идеи?

Заранее благодарим за помощь!

Ответы [ 2 ]

0 голосов
/ 12 января 2011

Вам нужно будет создать ссылки во время выполнения. Я бы предложил иметь определенный префикс к локальному URL, например, mylocalfile: filename. Затем в коде, который загружает plist, проверьте префикс и при необходимости создайте ссылку. Вы также можете просто создать эти ссылки один раз и сохранить их в отдельном файле, а затем загрузить их вместо оригинала.

NSArray *links = nil; //I assumed your plist is an array. Change to dictionary if required
NSString *pathToStoredFile; //Get the path for the file you create with the updated links
if([[NSFileManager defaultManager] fileExistsAtPath:pathToStoredFile]) {
    links = [NSArray arrayWithContentsOfFile:pathToStoredFile];
} else {
    NSArray *tmp = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ListOfLinks" ofType:@"plist"]];
    if(!tmp) {
        //handle error
    }
    NSMutableArray *tmpLinks = [[NSMutableArray alloc] initWithCapacity:[tmp count]];
    for(NSString *link in tmp) {
        if([link hasPrefix:@"mylocalfile:"]) {
            link = [link substringFromIndex:12]; //12 is the length of mylocalfile:
            NSURL *url = [[NSBundle mainBundle] urlForResource:[link stringByDeletingPathExtension] withExtension:[link pathExtension]];
            [tmpLinks addObject:[url absoluteString]];
        } else [tmpLinks addObject:link];
    }
    links = [tmpLinks copy];
    [tmpLinks release];
    [links writeToFile:pathToStoredFile atomically:NO];
}
0 голосов
/ 11 января 2011

Да, я бы пошел с UIWebView.iOS должна иметь возможность автоматически обрабатывать определенные обработчики URL-адресов, и ваше приложение может зарегистрироваться, чтобы обработать , если необходимо.

iOS уже знает, как обрабатывать определенные типы файлов.Например, если Safari (или UIWebView) обнаруживает http://somesite.com/afile.pdf, он знает, какие приложения могут обрабатывать тип файла.Другим примером является номер телефона: skype://8005555555.iOS знает, как открыть Skype и передать ему номер.iOS также знает, что iBooks может обрабатывать файлы PDf.

Зарегистрируйте свое приложение для соответствующих обработчиков и типов файлов.Затем пользователи могут нажать и удерживать ссылку, чтобы увидеть меню доступных приложений для обработки ссылки.Если это ссылка, которая используется только одним приложением, пользователю даже не нужно удерживать ее, достаточно нажатия.

Для создания ссылки, указывающей на локальный файл, можно ииспользуйте функцию C NSDocumentsDirectory() и добавьте ее к обработчику URL.(Пример: http://NSDocumentsDirectory()/filename.pdf)

...