如何使用 ngCordova fileopener2 在 iOS 上使用默认应用程序打开 PDF?
How do I open PDF using a default application on iOS using ngCordova fileopener2?
背景
我正在构建一个 Ionic/Cordova 应用程序。我的主要目标平台是 IOS,但应用程序最终可能是跨平台的。我想使用已安装的 PDF 查看器启动下载并在设备上打开 PDF。我不希望在打开文件时提示用户 select 使用哪个应用程序。
环境
- Visual Studio 2015 更新 2
- 科尔多瓦 6.1.1
- TACO 更新 8.1
- 节点 6.0.0
- iPad 迷你 2 运行 iOS 9.2 (13C75)
- iPad 空气 2 运行 9.2.1 (13D15)
- Adobe Acrobat Reader
问题描述
当我尝试在 iPad(iPad Mini 或 Air 2)上打开 PDF 时,会出现一个小对话框,其中包含应用程序图标形式的选项列表。选项包括 'Message'、'Mail'、'Notes' 等以及 'Copy to Adobe Acrobat'。选择 'Copy to Adobe Acrobat' 选项将在 Adobe Acrobat 中启动我的 PDF。
我希望内容随适当的应用程序一起启动,而不必 select 从列表中选择一个。我总是希望我的 PDF 在 Adobe 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 插件在安装了 Adobe Reader 的 iPad 上打开 PDF,而无需每次都先让用户 select application/action PDF 是 selected?
据我所知,在 iOS 中不可能使用文件打开器插件将其默认为特定应用程序,并且我亲自尝试过。在您的情况下,最好使用 inappbrowser 插件,因为 iOS webview 内置支持 PDF 查看。
背景
我正在构建一个 Ionic/Cordova 应用程序。我的主要目标平台是 IOS,但应用程序最终可能是跨平台的。我想使用已安装的 PDF 查看器启动下载并在设备上打开 PDF。我不希望在打开文件时提示用户 select 使用哪个应用程序。
环境
- Visual Studio 2015 更新 2
- 科尔多瓦 6.1.1
- TACO 更新 8.1
- 节点 6.0.0
- iPad 迷你 2 运行 iOS 9.2 (13C75)
- iPad 空气 2 运行 9.2.1 (13D15)
- Adobe Acrobat Reader
问题描述
当我尝试在 iPad(iPad Mini 或 Air 2)上打开 PDF 时,会出现一个小对话框,其中包含应用程序图标形式的选项列表。选项包括 'Message'、'Mail'、'Notes' 等以及 'Copy to Adobe Acrobat'。选择 'Copy to Adobe Acrobat' 选项将在 Adobe Acrobat 中启动我的 PDF。
我希望内容随适当的应用程序一起启动,而不必 select 从列表中选择一个。我总是希望我的 PDF 在 Adobe 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 插件在安装了 Adobe Reader 的 iPad 上打开 PDF,而无需每次都先让用户 select application/action PDF 是 selected?
据我所知,在 iOS 中不可能使用文件打开器插件将其默认为特定应用程序,并且我亲自尝试过。在您的情况下,最好使用 inappbrowser 插件,因为 iOS webview 内置支持 PDF 查看。