Как зарегистрировать приложение, чтобы открыть файл pdf в моем приложении в ipad

Я хочу открыть pdf файл в своем приложении с страницы pdf, но у меня нет возможности открыть PDF файл в моем приложении.

этот файл info.plist

 <key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
    <key>CFBundleTypeName</key>
    <string>PDF</string>
    <key>CFBundleTypeRole</key>
            <string>Viewer</string>     
    <key>CFBundleTypeIconFiles</key>
    <string>Icon.png</string>
    <key>LSItemContentTypes</key>
    <string>com.neosofttech.pdf</string>
    <key>LSHandlerRank</key>
    <string>Owner</string>
</dict>
</array>
<key>UTExportedTypeDeclarations</key>
   <array>
   <dict>
    <key>UTTypeConformsTo</key>
        <array>

<string>public.pdf</string>       
         </array>
    <key>UTTypeDescription</key>
    <string>PDFReader File</string>
    <key>UTTypeIdentifier</key>
    <string>com.neosofttech.pdf</string>
    <key>UTTypeTagSpecification</key>
    <dict>
        <key>public.filename-extension</key>
        <string>pdf</string>

    </dict>
</dict>

pls скажите мне, где я ошибаюсь в этом, как я могу открыть pdf файл в своем приложении.

Ответы

Ответ 1

Я предполагаю, что вы пытаетесь открыть вложение из Mail на основе вашего plist. Поскольку у вас нет типа файла PDF, вы не можете объявить его как экспортированный тип. Вам нужно только объявить его как поддерживаемый тип документа.

Например:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>PDF</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.adobe.pdf</string>
        </array>
    </dict>
</array>

Вы можете найти список всех типов контента, поставляемых системой здесь или в UTCoreTypes.h.

Когда кто-то открывает файл PDF и выбирает ваше приложение, этот файл будет скопирован в подкаталог Inbox вашей папки Documents в песочнице вашего приложения. Затем ваше приложение будет открыто и в вашем делетете приложения application:didFinishLaunchingWithOptions: ваш словарь launchOptions будет содержать ключ UIApplicationLaunchOptionsURLKey, определяющий URL-адрес файла в вашей песочнице, с которой вы можете работать.

Ответ 2

Вы не можете делать то, что вы пытаетесь сделать, если не выполните следующее:

  • Зарегистрировать собственный URL-адрес с системой
  • Вызовите этот настраиваемый URL из гиперссылки внутри PDF
  • Создайте PDF-код с помощью ссылок, доступных по ссылке

Итак, это означает, что вы зарегистрируете пользовательский обработчик URL в своем info.plist. Например, предположим, что вы создаете настраиваемый обработчик URL с формой coolapp://. Теперь, внутри вашего документа, из которого вы создаете PDF, при создании гиперссылки используйте его собственный URL-адрес, например coolapp://filedetails? Pdfurl = mywebsite.com/path/to/pdffile.pdf & pageno = 5. Затем вам нужно проанализировать это в - application: handleOpenURL:. Загрузите файл, указанный в поле pdfurl, а затем перейдите на страницу, указанную в pageno.

Имейте в виду, что это предполагает, что вы сами создаете PDF файл. Если вы не контролируете процесс создания PDF-контента, вы не можете делать то, что хотите. Невозможно открыть приложение из произвольного PDF файла. Это нужно сделать с помощью настраиваемого URL.

Сообщите мне, если вам нужно уточнение.

Ответ 3

Вставьте код ниже в info.plist

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>"*"</string>
        </array>
        <key>CFBundleTypeName</key>
        <string>Unknown</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.data</string>
        </array>
    </dict>
</array>

Ответ 4

Старый пост - но я попал сюда и искал способ передать PDF в свое приложение.

Плист, изображенный Эшли Кларк, помогает мне зарегистрировать мое приложение как приложение, которое может принимать файл PDF в качестве параметра. +1 для него на этом :-)

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>PDF</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.adobe.pdf</string>
        </array>
    </dict>
</array>

Однако, чтобы полностью реализовать это, я использовал следующий метод в своем файле AppDelegate.m:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

    NSLog(@"sourceApplication: %@", sourceApplication);
    NSLog(@"url: %@", url);

Вышесказанное запускается, когда приложение открывается, когда я запускал Safari и у меня был PDF, которым я хотел поделиться оттуда.

Выше я могу определить, какое приложение передало моему приложению PDF файл и URL к нему.

При запуске выдает следующее:

sourceApplication: com.apple.mobilesafari

url: file:///Users/me/Library/Developer/CoreSimulator/Devices/C395439F-7A0D-434F-8D78-D4615DB643E1/data/Containers/Data/Application/E3B181BC-6075-4F2C-923D-2ECC642DA555/Documents/Inbox/pdf-5.pdf

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