ios - 更新到 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()
}
解决方案
我已经按照这些步骤操作,设备不再缓慢部署。也许可以帮助你。
- 取消手机与 xcode 的配对。Xcode 将崩溃,但继续执行这些步骤。
在未插入手机的情况下启动 xcode
- 插上你的手机
在 xcode 中的设备下,取消配对您的手机。
停止 xcode
在终端上运行这些
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport rm -rf ~/Library/Developer/Xcode/iOS\ Device\ Logs rm -rf ~/Library/Developer/Xcode/DerivedData
- 启动 xcode
- 插入电话
推荐阅读
- google-apps-script - 只有一个 TRUE 复选框
- spring - Spring Autowired 共享队列 NullPointerException
- reactjs - 动态添加新组件
- c# - 无法通过 Flurl 发布附件错误 411 长度要求
- python-3.x - for循环不在并行代码中异步执行
- mysql - 空值,但如果重复则保留该行(MySQL)
- r - 如何找到 betareg 包接受的最小浮点值?
- angular6 - 在 Angular X 项目中集成引导程序
- microdata - 这种结构化数据的使用与 JSON-LD 不兼容吗?
- javascript - 在 NetSuite 中提交时调用 Web 服务