如何在iOS中从设备删除应用时删除“我的应用日历”的所有事件

时间:2015-02-04 12:53:31

标签: ios objective-c calendar

我有一个名为MyCalendar的日历。

我已将一些事件存储到该日历中..

我知道如何从日历中删除所有事件......如下所示

NSDate *startDate = [NSDate date];
NSDate* endDate =  [NSDate dateWithTimeIntervalSinceNow:[[NSDate distantFuture] timeIntervalSinceReferenceDate]];
NSArray *calendarArray = [NSArray arrayWithObject:self.defaultCalendar];

NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate
                                                                              endDate:endDate
                                                                            calendars:calendarArray];

NSArray *events = [self.eventStore eventsMatchingPredicate:predicate];

for (EKEvent *event in events) {
   NSError* err = nil;
   [self.eventStore removeEvent:event span:EKSpanFutureEvents commit:YES error:&err];

}

但是当用户从设备中删除我的应用时。如何删除与Calendar MyCalendar相关的所有事件。

由于不必要,设备日历中仍然存在已删除应用的某些事件。

如果用户不想使用我的应用程序,最好保留与我的应用程序相关的事件。

任何想法&建议表示赞赏。可能吗?

先谢谢..

3 个答案:

答案 0 :(得分:6)

当用户要从iPhone删除应用程序时,我们没有任何控制来执行某些操作,这非常简单。也许您可以在应用程序中提供Delete All Events选项,以通知用户正确的按摩。我认为用户在删除之前至少有一次使用过您的应用程序。所以我认为如果他/她对这个应用程序的运作方式有正确的认识,那么他们可以从应用程序中删除应用程序事件然后删除应用程序。

实际上我们没有任何选择,为什么我会建议你这个。使用此选项的用户数量对他们有用。

实际上天气苹果处理这样的功能与否取决于它们。因为某些时间事件不仅与应用程序有关,例如从Facebook添加birthday事件不仅与Facebook有关。即使Facebook应用程序被删除,用户也需要该提醒。所以我认为苹果需要从处理这种情况中找出某种解决方案。

希望这对你有所帮助。

答案 1 :(得分:1)

我也不认为这是可能的。而且我还认为这些年来可能有无数雷达要求它。

我认为问题在于您存储事件的方式。如果它们只与您的应用相关,那么您应该将它们存储在应用中,并且只能在应用中访问它们,并在删除应用时删除。

如果您将它们存储到设备日历中,那么我会将您的应用视为日历活动的管理员。不是您的应用事件,而是USER事件。他可以使用您的应用来管理它们或其他应用。如果它们在用户日历中,它们也可能保存在云端,并且他也可以从mac管理它们。

如果他们允许你想要的功能,什么会阻止你破坏性并删除用户日历中的所有事件,作为复仇,因为它删除你的应用程序?

答案 2 :(得分:1)

iOS应用程序在即将卸载时不会收到任何回调,因此无法执行您想要的操作。

请参阅此问题Detect iOS application about to delete?