Как зарегистрировать приложение, чтобы открыть файл 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>
Пожалуйста, скажите мне, где я не прав в этом, как я могу открыть файл PDF в моем приложении.
3 ответа
Я предполагаю, что вы пытаетесь открыть вложение из Почты, основываясь на вашем списке. Поскольку у вас нет типа 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-адрес файла в вашей песочнице, с которым вы можете работать.
Вы не можете делать то, что пытаетесь сделать, если не выполните следующее:
- Зарегистрировать пользовательский 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.
Дайте мне знать, если вам нужны разъяснения.
Старый пост - но я попал сюда и искал способ передать 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-файл и делать с ним все, что захочу, в своем приложении.
Вставьте код ниже в 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>