如何使用 ngCordova fileopener2 在 iOS 上使用默认应用程序打开 PDF?

How do I open PDF using a default application on iOS using ngCordova fileopener2?

背景

我正在构建一个 Ionic/Cordova 应用程序。我的主要目标平台是 IOS,但应用程序最终可能是跨平台的。我想使用已安装的 PDF 查看器启动下载并在设备上打开 PDF。我不希望在打开文件时提示用户 select 使用哪个应用程序。

环境

问题描述

当我尝试在 iPad(iPad Mini 或 Air 2)上打开 PDF 时,会出现一个小对话框,其中包含应用程序图标形式的选项列表。选项包括 'Message'、'Mail'、'Notes' 等以及 'Copy to Adobe Acrobat'。选择 'Copy to Adobe Acrobat' 选项将在 Adob​​e Acrobat 中启动我的 PDF。

我希望内容随适当的应用程序一起启动,而不必 select 从列表中选择一个。我总是希望我的 PDF 在 Adob​​e Acrobat 中启动而不提示用户 select 操作。

当在 Android 上执行相同的代码时,PDF 将按预期使用默认的 PDF 查看器打开。

相关代码示例

这是正在执行的代码,用于下载文件并将其存储在设备上以及打开文件的调用。对于pdf,mime设置为'application/pdf'

$cordovaFileTransfer.download(category.assetPath, targetPath, {}, true)
                .then(function (result) {
                    result.file(function (file) {
                        var localFile = file.localURL;
                        resolveLocalFileSystemURL(localFile, function (entry) {
                            var nativePath = entry.toNativeURL();
                            if (ionic.Platform.isAndroid()) {
                                nativePath = decodeURIComponent(entry.toURL());
                            }

                            // Open in another app, will fail if app doesn't exist that can open the mime type
                            $cordovaFileOpener2.open(nativePath, mime).then(function () {
                                // Success!
                            }, function (err) {
                                // Error!
                            });
                        }, function (error) {
                            //handle error here
                        });
                    }, function (error) {
                        // handle error here 
                    });
                }, function (err) {
                    // Error
                }, function (progress) {
                    $timeout(function () {
                        category.downloadProgress = progress.loaded / progress.total;
                    });
                });
        }

问题

是否可以使用默认应用程序在 iOS 平板电脑上打开我的 Ionic/Cordova 移动应用程序的内容,而无需每次都提示用户打开该应用程序?

如何让 FileOpener2 插件在安装了 Adob​​e Reader 的 iPad 上打开 PDF,而无需每次都先让用户 select application/action PDF 是 selected?

据我所知,在 iOS 中不可能使用文件打开器插件将其默认为特定应用程序,并且我亲自尝试过。在您的情况下,最好使用 inappbrowser 插件,因为 iOS webview 内置支持 PDF 查看。