本发明属于移动应用开发领域,特别涉及一种基于移动终端的跨平台的文档阅读器及其实现方法。
背景技术:
目前,智能移动终端得到了普及,移动应用软件随之得到了快速的发展,各个应用市场中上架的适合手机、平板等终端的应用也越来越多,而很多应用都有查看各种文档的需求。
现在市场上有很多android版本和IOS版本的PDF、TXT、Office等类型的文档阅读器,但这些阅读器普遍存在不能跨平台使用和同时兼容不同格式文档的问题。另一方面,随着HTML5技术的成熟,越来越多的移动端开发者开始使用HTML5+Android/IOS的混合开发方式来实现跨平台技术,基于这种开发方式,本发明不仅解决了文档阅读器跨平台的问题,还解决了多文档格式兼容问题。
技术实现要素:
【要解决的技术问题】
本发明的目的是提供一种基于移动终端的跨平台的文档阅读器及其实现方法,以解决目前的阅读器不能跨平台使用和同时兼容不同格式文档的问题。
【技术方案】
本发明是通过以下技术方案实现的。
本发明首先涉及一种基于移动终端的跨平台的文档阅读器的实现方法,包括以下步骤:
A、开发文档阅读器的原生模块,最终用户通过打开文档模块传入要打开文档的路径,所述文档阅读器的原生模块包括Android原生阅读器和iOS原生阅读器,所述Android原生阅读器为用Android原生代码开发的能够兼容不同类型文档的Android阅读器,所述iOS原生阅读器是用iOS原生代码开发的能够兼容不同类型文档的iOS阅读器;
B、通过设备识别模块获得当前设备类型;
C、如果当前设备的类型为Android类型,则调用javascriptInterface函数接口,javascriptInterface函数接口调用Android原生阅读器打开文档;
D、如果当前设备的类型为iOS类型,则构建打开文档阅读器的URL并调用URL发生器,URL拦截器拦截到URL后,解析出需要调用的iOS方法名及文档路径,URL拦截器调用iOS原生阅读器,打开文档。
作为一种优选的实施方式,所述设备识别模块通过HTML DOM userAgent属性判断浏览器类型并确定该浏览器所在的设备是否为iOS类型,若不是iOS类型,则该设备为Android类型。
作为另一种优选的实施方式,所述URL发生器用于动态创建一个iframe并为该iframe设置src属性,所述URL拦截器通过拦截src属性值得到文档路径。
作为另一种优选的实施方式,所述步骤A还包括:在Eclipse环境和Xcode环境下进行文档阅读器的原生模块开发。
作为另一种优选的实施方式,所述文档的类型为PDF、TXT或Office。
本发明还涉及一种基于移动终端的跨平台的文档阅读器,包括Android原生阅读器、iOS原生阅读器、设备识别模块、URL发生器、URL拦截器、打开文档模块、javascriptInterface函数接口、iOS类型打开模块和Android类型打开模块,
所述Android原生阅读器是用Android原生代码开发的能够兼容不同类型文档的Android阅读器;
所述iOS原生阅读器是用iOS原生代码开发的能够兼容不同类型文档的iOS阅读器;
所述打开文档模块用于传入要打开文档的路径;
所述设备识别模块用于获得当前设备类型;
所述Android类型打开模块被配置成:如果当前设备的类型为Android类型,则调用javascriptInterface函数接口,javascriptInterface函数接口调用Android原生阅读器打开文档;
所述iOS类型打开模块被配置成:如果当前设备的类型为iOS类型,则构建打开文档阅读器的URL并调用URL发生器,URL拦截器拦截到URL后,解析出需要调用的iOS方法名及文档路径,URL拦截器调用iOS原生阅读器,打开文档。
作为一种优选的实施方式,所述设备识别模块具体被配置成:通过HTML DOM userAgent属性判断浏览器类型并确定该浏览器所在的设备是否为iOS类型,若不是iOS类型,则该设备为Android类型。
作为另一种优选的实施方式,所述URL发生器用于动态创建一个iframe并为该iframe设置src属性,所述URL拦截器通过拦截src属性值得到文档路径。
作为另一种优选的实施方式,所述文档的类型为PDF、TXT或Office。
【有益效果】
本发明提出的技术方案具有以下有益效果:
本发明实现了跨平台且兼容不同类型文档的阅读器,能够根据文档传入的路径,判断文档类型,并选择合适的方式打开文档,供用户阅读,提升了用户体验。
附图说明
图1为本发明的实施例一提供的基于移动终端的跨平台的文档阅读器的原理框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的具体实施方式进行清楚、完整的描述。
实施例一
图1为本发明实施例一提供的基于移动终端的跨平台的文档阅读器的原理框图。如图1所示,该阅读器包括Android原生阅读器、iOS原生阅读器、设备识别模块、URL发生器、URL拦截器、打开文档模块、javascriptInterface函数接口、iOS类型打开模块和Android类型打开模块。
Android原生阅读器是用Android原生代码开发的能够兼容不同类型文档的Android阅读器。iOS原生阅读器是用iOS原生代码开发的能够兼容不同类型文档的iOS阅读器。其中,文档的类型为PDF、TXT或Office。
打开文档模块用于传入要打开文档的路径。
设备识别模块用于获得当前设备类型。具体地,设备识别模块被配置成:通过HTML DOM userAgent属性判断浏览器类型并确定该浏览器所在的设备是否为iOS类型,若不是iOS类型,则该设备为Android类型。
Android类型打开模块被配置成:如果当前设备的类型为Android类型,则调用javascriptInterface函数接口,javascriptInterface函数接口调用Android原生阅读器打开文档。
URL发生器用于动态创建一个iframe并为该iframe设置src属性,URL拦截器通过拦截src属性值得到文档路径。
iOS类型打开模块被配置成:如果当前设备的类型为iOS类型,则构建打开文档阅读器的URL并调用URL发生器,URL拦截器拦截到URL后,解析出需要调用的iOS方法名及文档路径,URL拦截器调用iOS原生阅读器,打开文档。
实施例一中的阅读器的实现方法可以参考下述具体方法实施例。
实施例二
实施例二为一种基于移动终端的跨平台的文档阅读器的实现方法,该方法包括以下步骤:
(1)、开发文档阅读器的原生模块,可以在Eclipse环境和Xcode环境下进行文档阅读器的原生模块开发,最终用户通过打开文档模块传入要打开文档的路径,所述文档阅读器的原生模块包括Android原生阅读器和iOS原生阅读器,所述Android原生阅读器为用Android原生代码开发的能够兼容不同类型文档的Android阅读器,所述iOS原生阅读器是用iOS原生代码开发的能够兼容不同类型文档的iOS阅读器。文档的类型为PDF、TXT或Office。
具体地,iOS端实现能打开不同类型文档的原生阅读器,iOS是通过依赖QuickLook框架实现的多格式文档预览,通过把传入的文档路径解析成相应的url路径,由QuickLook框架识别文档路径及格式打开文档,具题实现是通过QLPreviewControllerDelegate代理方法,示例代码如下:
(id<QLPreviewItem>)previewController:(QLPreviewController
*)controller previewItemAtIndex:(NSInteger)index{
NSURL*url=[NSURL fileURLWithPath:path];
Return url;
}
其中path为传入的文档路径,若传入文档为txt格式文档一般是又编码格式的,ios系统9.0以下的版本是不能自动识别编码之后的txt中文文档,直接预览文档会出现乱码情况,如果需要兼容所有系统版本,那么这里需要进行文档编码格式转换,本发明实施例具体解决txt文档编码的方法如下:
首先判断txt文档的是否编码,若没有编码,直接通过QuickLook框架进行路径解析,预览次文档;若是编码过的txt文档,进行编码方式转换,再通过QuickLook框架进行路径解析。编码过的txt文档编码格式一般为UNICODE编码或者ANSI编码(-2147482591,-2147482062),本发明实施例通过将原始文档转换成NSUTF16StringEncoding编码格式进行txt文档阅读。
(2)、通过设备识别模块获得当前设备类型。具体地,该步骤中,设备识别模块通过HTML DOM userAgent属性判断浏览器类型并确定该浏览器所在的设备是否为iOS类型,若不是iOS类型,则该设备为Android类型。
(3)、如果当前设备的类型为Android类型,则调用javascriptInterface函数接口,javascriptInterface函数接口调用Android原生阅读器打开文档。
(4)、如果当前设备的类型为iOS类型,则构建打开文档阅读器的URL并调用URL发生器,URL拦截器拦截到URL后,解析出需要调用的iOS方法名及文档路径,URL拦截器调用iOS原生阅读器,打开文档。该步骤中,URL发生器用于动态创建一个iframe并为该iframe设置src属性,URL拦截器通过拦截src属性值得到文档路径。
从以上实施例可以看出,本发明实施例实现了跨平台且兼容不同类型文档的阅读器,能够根据文档传入的路径,判断文档类型,并选择合适的方式打开文档,供用户阅读,提升了用户体验。
需要说明,上述描述的实施例是本发明的一部分实施例,而不是全部实施例,也不是对本发明的限制。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。