爱星物联app混合开发遇到过一个问题,在使用wkwebview时,把app本地视频作为H5 页面的背景自动播放,刚开始没问题,时间长了,出现一个很严重的问题,本地视频无法播放了。想了很多办法,把app删除重装,清除app的缓存,各种操作都无法恢复,最后无奈重启手机才恢复。不知道各位有没有遇到过这样的问题,后面发现切换系统语言也能恢复。没办法了,测试在无法播放本地视频的情况下,把远程视频作为H5 页面的背景自动播放,完全没问题,不受影响。所以,我的解决方案就是在app本地开一个http文件服务,把app本地视频挂在本地服务上,wkwebview可通过http地址访问。方案源码如下: - // 用到的第三方库:Criollo
- // 启动服务
- static NSString *const kWWWMount = @"/self";
- static UInt16 localServerPort = 35662;
- CRServer *localServer = [CRHTTPServer new];
- [localServer mount:kWWWMount directoryAtPath:[NSBundle.mainBundle pathForResource:@"www" ofType:nil] options:0];
- [localServer startListening:NULL portNumber:localServerPort];
- [NSNotificationCenter.defaultCenter addObserver:localServer selector:@selector(stopListening) name:UIApplicationWillTerminateNotification object:nil];
- // 获取挂载的根目录url
- + (NSString *)localServerWWWUrl
- {
- if (0 == localServerPort) {
- return nil;
- }
- return [NSString stringWithFormat:@"http://localhost:%d%@/", localServerPort, kWWWMount];
- }
复制代码经过长时间测试,此方案可以避免上面的出现的问题,各位若是有更好的解决方案,还请不吝赐教。 |