【问题标题】:Open Epub directly inside app Swift直接在应用 Swift 中打开 Epub
【发布时间】:2016-12-12 13:18:50
【问题描述】:
【问题讨论】:
标签:
ios
iphone
swift
epub
【解决方案1】:
今天 FolioReaderKit 不支持像 iBooks 这样的笔记,尽管它在我们的路线图中。你可以加入#16的讨论,屏幕已经设计好了,还有关于实现的讨论。
关于 iBooks,没有办法在您的应用程序中使用它。
【解决方案3】:
首先,有一个已弃用的库FolioReaderKit,它可以很好地展示不同的 *.epub 文件。但是它没有被维护,并且正在使用 UIWebView 这将阻止应用程序使用它上传到 AppStore。
其次,我发现的唯一实际开箱即用的 iOS SDK 为您提供完整的 UI 解决方案是 skyepub 和 Adobe,它们部分要求付款。
但是环顾一下鳕鱼、示例和教程,我学到了很多...
在逃避了很多之后,我得出了以下结论:
-
EPUB 基本上是一个包含在网站中的 zip 文件,通常包括一些带有一些图片、css 和字体的 index.html 文件。 What is an EPUB.
-
要在 iOS 上本地提供 EPUB,您必须在本地解析解压缩并提供其背后的主文件(我们再次讨论 html 文件的主要用例)。您可以使用不同的库,例如EPUBKit
-
您可能需要在解析本地文件时允许访问它们,这可能需要允许非 tls 请求...
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
<dict>
<key>NSAllowsArbitraryLoads</key> <true/>
<key>NSExceptionDomains</key> <dict>
<key>localhost</key> <dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key> <true/>
<key>NSExceptionMinimumTLSVersion</key> <string>TLSv1.2</string>
<key>NSExceptionRequiresForwardSecrecy</key> <true/>
<key>NSIncludesSubdomains</key> <true/>
<key>NSRequiresCertificateTransparency</key> <false/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key> <true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key <string>TLSv1.2</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <true/>
</dict>
</dict>
</dict>
</plist>
-
您可能需要添加自定义 css 和 js 代码(在您将用于加载 html 文件的 WKWebView 中进行评估)以适应您希望提供的 UI。
对我有很大帮助的一个很好的例子是 Style.css 和 Bridge.js 文件以及它们在FolioReaderKit中的用法
希望它能对 EPUB 和 iOS 有所启发