【问题标题】:iOS launch screen does not updateiOS 启动屏幕不更新
【发布时间】:2016-05-13 13:22:55
【问题描述】:

我已更新企业应用程序的启动屏幕,但安装在现有应用程序的 iPad 上时不会更新。我已经尝试在安装新版本之前完全删除该应用程序,但它仍然以旧的启动屏幕图像启动。

我尝试在从未安装过此应用的另一台 iPad 上安装新应用,并且新的启动屏幕按预期显示。两台 iPad 运行相同的 iOS v9。该应用是使用 xCode 7.2 构建的

总的来说,我尝试了以下场景:

  1. 在 iPad A 上更新现有应用程序(版本 1) - 使用新应用程序(版本 2) iPad A,从版本 1 加载带有启动屏幕的新应用 v2

  2. 在 iPad B 上安装了新应用(第 2 版),但从未安装过此应用。 iPad B,使用正确的启动屏幕加载新应用 v2 然后我在 iPad B 上安装了旧的应用程序版本 1 iPad B,现在从版本 2 加载带有启动屏幕的旧应用 v1

iPad 似乎以某种方式缓存了第一次安装时的启动屏幕,无论它是哪个版本。删除应用程序并重新安装似乎没有帮助,并且它看起来与代码无关,因为 iPad B 上加载了正确的启动屏幕图像

【问题讨论】:

  • 确保您的图像已正确删除...当您删除图像时,可能会询问一个对话框并单击移动到垃圾箱而不是删除参考......然后也删除到垃圾箱,然后添加您的新图像到您的项目中,一旦添加新图像,首先删除旧版本的应用程序。
  • 我不确定图像与它有什么关系。这是应用程序的启动屏幕,其中内置了图像

标签: ios ipad


【解决方案1】:

解决方案 再次感谢我在上面引用的线程,我找到了解决此问题的方法 - 将新图像命名为与以前的图像不同,以防新图像与旧图像同名并将其从 * .xcassets 文件夹到项目目录并在你的 UIImageView 中引用它。就是这样。

【讨论】:

  • 它对我不起作用。 Xcode 13.1。 iOS 12.5.5。 iPhone 6+ 真机
【解决方案2】:

在 xcode 中,在 Assets.xcassets 下,我单击 LaunchImage,然后取消选中 Universal,选中 iPhone,取消选中 iPhone,然后再次选中 Universal。然后运行构建,它清除了旧图像。

【讨论】:

    【解决方案3】:

    请参阅Rambo's post 了解该问题。至少在 iOS 13 上,您可以自己清除此缓存:

    import UIKit
    
    public extension UIApplication {
    
        func clearLaunchScreenCache() {
            do {
                try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
            } catch {
                print("Failed to delete launch screen cache: \(error)")
            }
        }
    
    }
    

    【讨论】:

      【解决方案4】:

      只需从模拟 iPhone 主屏幕中删除应用即可。

      在 iPhone 11 Max 版本上,用 2 指单击并从 iPhone 的外边缘向上拖动,这会将您带到主屏幕并退出您的模拟应用程序。

      然后用 2 指单击并按住您的应用,删除应用并关闭模拟器。

      打开 Xcode 并单击播放按钮运行您的模拟,启动屏幕应该会更新。

      附:删除 Xcode 缓存和派生数据不会有什么坏处。

      【讨论】:

        【解决方案5】:

        Steve 的答案在 iOS 13.2.3 中仍然有效,但我想添加更多内容来支持这一点,否则会超出评论的限制。

        对于初学者,我确实删除了应用程序,重新启动设备等,但由于此问题发生在用户通过应用程序商店更新时,这些修复根本不可行。

        然后,我决定在应用程序中采取更激烈的行动来尝试解决这个问题。这些操作是通过 TestFlight 构建执行的。

        在我的特定情况下,问题源于版本字符串错误地表示了已安装的版本。

        然后,第 1 步是简单地删除有问题的 UILabel。重新运行应用仍然会导致标签出现在应用中。

        然后第 2 步是创建一个全新的 LaunchScreen 故事板并将其设置为如下所示:

        启动应用程序仍会显示旧的启动屏幕。

        这让我相信项目结构中的某些东西是缓存的来源,开发人员对 LaunchScreen 的任何合理更改都无法解决这个问题。

        更新

        该应用已发布到 Appstore,并且使用官方商店版本,该应用会显示正确的启动屏幕。

        【讨论】:

        • 我遇到了和你描述的一样的问题。你能解决这个问题吗?
        • @simon 我更新了我的答案,但简短的版本是我的官方应用商店版本行为正确,而我的 TestFlight 版本没有。
        【解决方案6】:

        我尝试了多种解决方案,重启你的 iPhone 是唯一的方法。

        【讨论】:

          【解决方案7】:

          模拟器和 iPhone 缓存启动图像。 这可以帮助你 1>清除你的developer/xcode文件夹下的派生数据 2>同时按下home键和lock键重置设备 3>将您的代码推送到设备,它将起作用,如果这不起作用,则创建 ipa 文件并在重置设备后使用 iTunes 安装,它将显示新的启动图像

          【讨论】:

            【解决方案8】:

            我刚遇到这个问题,我发现从设备或模拟器上删除应用程序,然后重新启动设备或模拟器似乎可以解决问题。

            我发现刚刚重启设备不起作用。

            【讨论】:

            • 此问题会延续到 App Store 的生产版本/更新中。如果您的版本一有蓝色启动屏幕,那么您从版本二设置了一个红色启动屏幕,任何从版本一升级到二的用户都会在未知的时间内看到蓝屏。开发人员似乎对此无能为力。我们无法告诉用户删除应用程序等;在某些情况下会发生数据丢失。对我来说闻起来像一个 iOS 错误。直到 iOS 11.4 才出现。
            • 我们在 iPad AppStore 应用程序 iOS 12.1 上看到了这一点
            • 13.2 仍然存在
            • 这是可行的,但是如果您在项目中进行任何更改,启动屏幕就会损坏(在我的情况下,从 info.plist 中错误地渲染图像)。为了解决需要再次删除应用程序并重新启动手机。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-03-18
            • 2014-09-19
            • 2011-02-16
            • 2015-02-20
            • 2017-03-24
            • 1970-01-01
            相关资源
            最近更新 更多