用户在使用Widget集成时,使用plus.runtime.install API进行5+应用升级时会发现,方法回调升级成功,但是应用重启后加载的依然是老版本的应用。这是因为会用Widget方式集成时调用 PDRCoreAppManager 类 openAppAtLocation方法创建PDRCoreApp对象时需要传入WebApp的保存路径作为参数
一般情况下WebApp的资源是放在原生工程的Pandora/apps目录下,在生成ipa安装包后这个目录下的文件是不能修改。 5+SDK在wgt/wgtu升级后会将资源释放到应用沙盒的~Library目录下,路径为~Library/Pandora/apps/[WebApp的ID]/www目录下,所以需要在调用PDRCoreAppManager 类 openAppAtLocation方法时传入的参数进行调整。
我们知道了问题的原因,下面我们来解决问题。
我们可以通过判断 ~Library/Pandora/apps/[WebApp的ID]/www目录下是否有应用的mainfest.json文件存在的方式判断应用是否升级,如果该文件存在则设置该路径为应用启动路径,否则使用ipa下的Pandora/apps目录下的资源为启动路径
ipa在升级时~Library/Pandora/apps/[WebApp的ID]/www 目录下的内容不会被系统删除,
为了保证升级后不会使用到以前遗留的WebApp资源,建议在WebApp启动时写文件保存当前ipa的版本号,每次启动时判断保存的版本号与当前ipa的版本号是否一致,如果不一致则需要删除~Library/Pandora/apps/[WebApp的ID]/www 目录下的全部内容,这样可以保证使用正确的WebApp资源