ios - 关于 requestAccessToEntityType,什么时候调用 applicationDidBecomeActive?

标签 ios calendar eventkit ekeventstore

我刚刚遇到了一个我想分享的问题。在我的 iOS 日历使用中,我在应用程序委托(delegate)中使用 applicationDidBecomeActive 来检查用户日历设置是否已更改。具体来说,在获得 applicationDidBecomeActive 回调后,我执行以下操作:

// self.eventStore is of type EKEventStore *
EKCalendar *cal = [self.eventStore calendarWithIdentifier: calendarIdentifier];
if (!cal) {
    // Assume we no longer have access to the users calendar; e.g., they have change their privacy settings.
}

但是,我遇到了一个问题。 (多么令人惊讶!:))。我发现当我们最初执行 requestAccessToEntityType 时,也会调用 applicationDidBecomeActive。也就是说,在 Apple 向用户显示他们的“警报”以询问用户是否希望我们的应用程序访问他们的日历之后,我们的应用程序会收到一个 applicationDidBecomeActive 回调。既然我已经弄明白了,我唯一剩下的问题是:

当调用 requestAccessToEntityType 时,我们是否总是在调用 requestAccessToEntityType 的完成处理程序之前获取 applicationDidBecomeActive?

我假设这是真的。如果在调用应用程序委托(delegate) applicationDidBecomeActive 方法之前调用我的方法(在应用程序委托(delegate)之外),这对我来说似乎很不寻常。

最佳答案

我的假设是不正确的。 requestAccessToEntityType: 回调可以在应用委托(delegate) applicationDidBecomeActive: 方法被调用之前执行。我刚刚在我的代码中观察到了这一点。我不是 100% 确定这是否总是执行顺序。

在进一步考虑之后,我现在开始编写代码,这样我就不会依赖于调用的顺序,也不会依赖于 requestAccessToEntityType: 时是否调用了 applicationDidBecomeActive:: 被调用。这种行为(applicationDidBecomeActive:requestAccessToEntityType: 被调用时被调用)似乎不是由 Apple 指定的,并且可能会改变。

关于ios - 关于 requestAccessToEntityType,什么时候调用 applicationDidBecomeActive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749596/

相关文章:

iOS purgeIdleCellConnections

ios - 在 Swift 中将输入字段字符串转换为 Int

java - Android:如何计算几天前的日期?

ios - APS registerForRemoteNotifications 控制默认警报样式

iphone - 重复使用表格单元格问题

ios - 拒绝许可后的 Facebook 登录

swift - 我正在使用导入的日历,但不确定如何使用其功能之一(链接到下面的读我文件)

PHP-Calendar/schedule 数据库结构

ios - 适当情况下创建新的EKCalendar iOS

iphone - 在 xcode iOS 中将事件添加到日历