首页 > 解决方案 > 更新到 iOS 14.1 后,我的应用程序仅在漫长的等待时间后启动(然后显示启动屏幕 - 然后在应用程序运行前暂停)

问题描述

我制作了一个可以访问日历的应用程序,一切正常 - 直到我在 iPhone 上将 iOS 从 13.6 升级到 14.1。我仍然在 iPad 上安装了 iOS 13.6,并且它按计划运行。在具有 14.1 的 iPhone 上,应用程序从启动屏幕开始,但在那里停留了很长时间 - 调试器中没有错误消息和输出 - 在感觉像是永恒之后,应用程序像往常一样启动并运行。我在更新期间错过了什么?任何人都知道什么解释了这个暂停?是的,我在 iPhone 上删除并重新安装了该应用程序。我想这是因为我按照 Apple 的描述更改了授权查询。依然没有。xCode 中什么也没有发生 - 没有消息,也没有调试输出。没有显示:CPU、内存、能源影响、磁盘或网络。

我将在这里再次编写我的旧授权查询 - 因为我怀疑那里的错误 - 那么应该调用正确的授权查询吗?有人可以为 iOS 14.1 正确更改我的代码吗?我还没有在 Internet 上找到任何示例 - 仅在 iOS 14 之前可用(uTube 等)。我感谢任何可以让我清楚权限更改会发生什么的人。对不起,如果我错过了一些基本的东西。非常感谢!

(我将自己定位到“https://medium.com/better-programming/handling-location-permissions-in-ios-14-2cdd411d3cca”。)

func checkCalendarAuthorizationStatusAndLoadCalendars() {

    logger(s: #function, f: #file)

    if locationManager == nil {
        setUpLocationManager()
    }
    /// here I need Help!
    let status = EKEventStore.authorizationStatus(for: EKEntityType.event) /// <---- old!

    switch (status) {
    case EKAuthorizationStatus.notDetermined:
        /// This happens on first-run
        requestAccessToCalendar()

    case EKAuthorizationStatus.authorized:
        /// Things are in line with being able to show the calendars in the table view
        /// Start and end date of the interval of 'weekOfYear's
        let temp = 60 * 60 * 24 * Int(365 / 2)
        let loadDuration = TimeInterval(temp)

        /// Creates a date value initialized relative to the current date and time by a given number of seconds.

        ....

        loadCalendars(loadCalendarFrom: &loadCalendarFrom, loadCalendarTo: &loadCalendarTo, eventStore: eventStore)

        refreshTableView()
    case EKAuthorizationStatus.restricted, EKAuthorizationStatus.denied:
        /// We need to help them give us permission
        needPermissionView.fadeIn()
    @unknown default:
        fatalError()
    }
}

电话在这里:

override
func viewWillAppear(_ animated: Bool) {

    logger(s: #function, f: #file)

    //-----------------------

    formatter!.dateStyle = .medium
    formatter!.timeStyle = .short

    let dateString = formatter!.string(from: Date())       // "2020-06-03T01:43:44.888Z"
    let date:Date? = formatter!.date(from: dateString)!

    var localTimeZoneAbbreviation = String(TimeZone.current.abbreviation()!)

    let refereceTimeZoneAbbreviation = "CET"
    let cetTimeZone = TimeZone(abbreviation: refereceTimeZoneAbbreviation)!

    if localTimeZoneAbbreviation == "MESZ" {
        localTimeZoneAbbreviation = "UTC+2"
    }
    if localTimeZoneAbbreviation == "MEZ" {
        localTimeZoneAbbreviation = "UTC+1"
    }
    checkCalendarAuthorizationStatusAndLoadCalendars()
}

标签: iosswift5

解决方案


我已经按照这些步骤操作,设备不再缓慢部署。也许可以帮助你。

  1. 取消手机与 xcode 的配对。Xcode 将崩溃,但继续执行这些步骤。

在未插入手机的情况下启动 xcode

  • 插上你的手机

在 xcode 中的设备下,取消配对您的手机。

  1. 停止 xcode

  2. 在终端上运行这些

rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport rm -rf ~/Library/Developer/Xcode/iOS\ Device\ Logs rm -rf ~/Library/Developer/Xcode/DerivedData

  1. 启动 xcode
  2. 插入电话

推荐阅读