如何判断iOS用户是否在最初启用后禁用了iCloud Calendar

时间:2015-04-22 20:54:56

标签: ios calendar icloud

我们的问题: iOS用户启动我们的应用程序并通过iCloud启用日历集成(他们有设置> iCloud>日历已检查) 我们的应用为他们填充了新的iCloud日历。

稍后,如果用户通过“设置”应用禁用了iCloud日历,并返回到我们的应用,则我们的应用无法知道此功能已被禁用。任何查找日历的检查仍会显示iCloud日历(即使它已在“设置”中打开)

有关解决此问题的任何提示或建议吗?

1 个答案:

答案 0 :(得分:3)

经过多次搜索,终于找到了解决方案。它没有得到明确的回答,但在其他有些相关的问题上终于找到了一种方法来检测iCloud日历是否已关闭(即使iCloud已开启)

逻辑是,检查并存储本地日历源,然后检查iCloud日历。如果我们检测到iCloud,实际检查并查看iCloud中是否有日历(以检测iCloud Cals是否已关闭)以及iCloud Cals是否已关闭使用本地cal。

在我们推出GMail和Google Calendars之前工作得很好......另一天的另一场战斗。如果有人对此有所了解,非常感谢。似乎我们必须通过Google Cal API并在那里挂钩。

EKSource *localCalSource;

self.calendarSource = nil;
for (EKSource *source in eventStore.sources) 
{
    if (self.calendarSource == nil && source.sourceType == EKSourceTypeLocal) 
    {
        self.calendarSource = source;
        localCalSource = self.calendarSource;
        TLog([self isLocalLoggingOn], "Found local cal source!");
    }

    // if iCloud is enabled, grab that source and return it
    if (source.sourceType == EKSourceTypeCalDAV && [[source.title lowercaseString] isEqualToString:@"icloud"])
    {

    if([source calendarsForEntityType:EKEntityTypeEvent].count>0)
    {     
    //Check to see if Calendar is enabled on iCloud
        self.calendarSource = source;     
    }else{      
    //Calendar is Disabled use LOCAL
            self.calendarSource = localCalSource;   
    }
        break;
        TLog([self isLocalLoggingOn], @"Found %@", source.title);
    }
}