iOS更新后如何保留旧版启动画面和应用图标?

227

我有一个应用程序,最近更换了启动图像和应用程序图标,并从项目中的所有位置删除了旧资源。当我通过Xcode构建升级应用程序的旧版本到新版本时,一切正常。然而,如果我已经安装了旧版本的应用程序,然后从TestFlight升级它,每次我杀掉应用程序然后重新启动它时,旧的启动图像会在显示新的启动图像之前短暂出现。同样地,当我关闭应用程序时,旧的应用程序图标会在短暂闪烁后切换回我的新的应用程序图标。

我使用iExplorer打开应用程序,并注意到在/Library/Caches/Shapshots目录中保存了旧的启动屏幕图像(我不知道它是如何或为什么会出现在那里)。当我通过iExplorer手动删除它时,它就不再出现了。然而,当我尝试使用NSFileManager方法删除它时,我收到错误提示,说我无法删除此目录中的文件。

有人遇到过这种情况并有什么建议吗?


3
相同的问题,使用新的启动屏幕时,新的启动屏幕从未显示,而是使用了先前版本的缓存图像。 - Christophe Fondacci
27个回答

0

我猜这取决于具体情况。如果在调试或测试时出现此问题,可以尝试删除启动屏幕上的图像,或卸载应用程序后重新启动。

但如果即使在归档后仍然存在,那么重置和清理也无法解决。


0
在我的情况下,我还没有从“应用程序设置 -> 通用 -> 应用程序图标和启动图像 -> 应用程序图标源”中选择应用程序图标源

enter image description here


0

我曾经遇到过同样的问题,但只是在启动屏幕故事板中使用的图像。将图像从资源目录移动并更改其名称为应用程序包(例如,旧的图像集在资源目录中称为launch_logo,而应用程序包中的图像称为launchscreen_logo.png)解决了我们的问题。


0

首先

清理并构建项目

方法1:
重命名在LaunchScreen.storyboard中加载的启动图像。

例如,我加载了"splash"但将其更改为"splashNew"

方法2:

在不同的设备或模拟器上运行您的应用程序

例如,如果您在模拟器iphone 11上运行应用程序,请将其运行到iphone 12上


0

尝试打开模拟器,进入硬件 -> 擦除所有内容和设置。


0

尝试在AppDelegate中

    if #available(iOS 13.0, *) {
        do {
            try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
        } catch {
            print("Failed to delete launch screen cache: \(error)")
        }
    } else {
        print("ios is min")
    }

0
受Guilherme Rambo博客文章的启发,我创建了一个cordova插件,用于在iOS 13+上以编程方式清除启动屏幕缓存:
cordova.plugins.launchScreenCache.deleteLaunchScreenCache().finally((result) => {
    // returns true in the success case, false if iOS <13
    // rejects in an error case
});

更多信息可以在GitHub存储库上找到


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接