Как зарегистрировать приложение, чтобы открыть файл 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 файл и делать с ним все, что захочу, в своем приложении.