iOS14 beta 2下本地文档加载bug的解决

775 阅读1分钟

前言

在iOS中,目前有四种方式来预览文档,分别是:

1、UIWebView(苹果即将废弃)或者WKWebView

2、QLPreviewController

3、UIDocumentInteractionController

4、CGContexDrawPDFPage

项目目前使用的是第一种方式,且使用的是WKWebView来预览文档,本人在iOS14正式版发布前,花了不少精力去提前测试项目,发现了一个诡异的问题,无论是QQ、UC浏览器、QQ浏览器都无法显示PDF、word等文档,并且内容都展示为空,只有少数文档是可以正常展示。

加载文档相关Swift代码

let url = NSURL.fileURL(withPath: self.filePath ?? "")
self.webView.load(URLRequest.init(url: url));

其中,self.filePath是文档本地路径,经过检查,发现文档是有存在的,但是页面一直展示空白,同时对照可正常加载的文档,发现路径中的文档名字包含中文字符串,则无法正常显示。

解决

通过对文档的名字进行MD5处理后,得到一个不包含中文字符串,将文档拷贝到指定路径后,WKWebView再加载文档就正常显示了。

附MD5代码:

- (NSString *)md5String {
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5(self.bytes, (CC_LONG)self.length, result);
    return [NSString stringWithFormat:
            @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3],
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]
            ];
}