应用程序关闭时如何在 EKEventStore 中检测?

Posted

技术标签:

【中文标题】应用程序关闭时如何在 EKEventStore 中检测?【英文标题】:How to detect in EKEventStore when the app is closed? 【发布时间】:2014-01-31 08:53:11 【问题描述】:

在我的应用程序中,当用户运行应用程序时,我第一次获取事件的 EKEventStore 并将它们本地保存在 CoreData 中。 对于这一点,我只想在事件存储发生任何变化时从 EventStore 获取事件。

我使用了 EKEventStoreChangedNotification,当我的应用程序在后台时,当我在日历中添加事件时,它工作正常。但是当应用关闭时它不起作用。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    self.eventStore = [[EKEventStore alloc]init];
    [self.eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
        if (granted) 

            [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(storeChanged:)
                                                         name:EKEventStoreChangedNotification
                                                       object:self.eventStore];
        
    ];
return YES;


-(void)storeChanged:(NSNotification *)notif 

    // Update core data

【问题讨论】:

【参考方案1】:

你有没有试过在里面放一个观察者

- (void)applicationDidEnterBackground:(UIApplication *)application



您的 AppDelegate?

【讨论】:

我想这只会在我的应用程序在后台运行时才需要注意,但是当我的应用程序甚至没有运行(甚至在后台)时怎么办 当您的应用处于非活动状态时,没有机会对新事件做出反应。每次运行应用程序时都必须检查 EKEventStore。

以上是关于应用程序关闭时如何在 EKEventStore 中检测?的主要内容,如果未能解决你的问题,请参考以下文章

EKEventstore 和唯一的日历标识符

无法在 macOS 的 Swift 应用程序中请求日历事件访问(通过 EKEventStore)

EKEventStore 导致 SpringBoard 崩溃

在 EKEventStore 中检索具有特定标题的 EKEvent

iOS:EKEventStore源/ defaultCalendarForNewEvents / calendarsForEntityType在授权后均不返回任何内容

将事件保存到用户的日历