标签: ekevent

如何使用swift在设备日历中添加事件

我有兴趣知道如何在设备中添加日历事件,但使用swift.我知道在Objective-C中有一些例子,但目前没什么好快的.非常感谢.

ekevent ekeventstore swift

41
推荐指数
4
解决办法
3万
查看次数

修改EventKit中的EKParticipants(与会者),如Sunrise

我的目标是添加一些被邀请者EKEvent.我已经研究过像这样的其他问题,比如这个问题,但是所有人都说EKParticipantEKEvent编程方式添加s 基本上是不可能的.我确实看到该attendees属性是只读的,但我看到其他服务,如Sunrise在他们的移动应用程序中使用它.

我相信他们正在使用一些至少部分与EventKit集成的系统,因为他们正在从用户的iCal应用程序中提取日历.例如,从添加的Exchange帐户发送的邀请也由Exchange服务明确发送,而不是Sunrise自己的邀请(将事件直接发布到Exchange或将其发布到iCal).

任何解决方法此限制都非常有用 - 可能是Exchange上可以调用添加/删除被邀请者的端点?EventKit内部的解决方法?只要它不是私有的Apple API,我就会非常乐意尝试它.

谢谢!

exchange-server objective-c ios eventkit ekevent

20
推荐指数
2
解决办法
3580
查看次数

EKEventStore获取事件返回空列表

我希望在我的应用中获取特定日历中的所有活动.我在我的应用程序中创建了日历和测试事件(需要iOS 5.0或更高版本才能创建自定义日历).如果我在我的设备上运行该应用程序,然后检查系统日历应用程序,那么我的日历和我创建的事件将正确显示.

现在我希望我的应用程序从这个自定义日历中读取所有这些事件.我的事件是在startDate和endDate设置为NOW(NSDate分配时没有给出timeInterval)的情况下创建的.

NSDate *startDate = [NSDate dateWithTimeIntervalSinceNow:- 60 * 60 * 24 * (365 * 4 + 1)];
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 * 365 * 25];
NSArray *calendarList = [NSArray arrayWithObjects:tmpCal, nil];
NSPredicate *datePredicate = [store predicateForEventsWithStartDate:startDate endDate:endDate calendars:calendarList];
NSArray *eventList = [store eventsMatchingPredicate:datePredicate];
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在指定结果事件所必须的时间间隔.您也可以看到,结束日期是从现在开始的25年,而开始日期是4年(闰年加一天).如果我以这种方式查询EKEventstore,我将获得之前添加的事件.如果我想将开始日期放回过去一天(或多天或几年),那么棘手的部分就会开始.然后,突然间,没有返回任何事件.

NSDate *startDate = [NSDate dateWithTimeIntervalSinceNow:- 60 * 60 * 24 * (365 * 4 + 2)];
Run Code Online (Sandbox Code Playgroud)

NSPredicate中NSTimeInterval的负值是否有限制?我没有发现任何记录的限制.我花了大约2个小时才发现为什么我没有参加任何活动(最初我想要的是过去5年和未来5年).这种好奇行为的原因是什么?任何的想法?

/编辑于04/11/2012在2012年3月31日和2012年4月20日创建一些具有开始日期的事件之后,似乎是按照从现在开始的间隔确定的日期提取事件受到间隔长度4的限制年份.在上面的给定代码中调整我的开始日期(通过设置前一天的开始日期),我能够在2012年3月31日之前获得事件,但不能更晚.删除此调整导致从03/31/2012和04/01/2012获取事件(但不是2012年4月20日的事件).经过第二次调整(20天后设置开始日期),我甚至得到了未来的事件.
我无法说明为什么会有这样的限制.可能存在一些内部计算会导致使用值存储溢出.只是一个猜测.

然后我前往Apple的例子.乍一看,我不想在Apple的EKEvent编程指南中使用给定的代码.它看起来并不像我的那么小和可爱,但在遇到这么多麻烦之后我就试了一下.

CFGregorianDate gregorianStartDate, gregorianEndDate;
CFTimeZoneRef timeZone …
Run Code Online (Sandbox Code Playgroud)

ios ekevent ekeventkit

13
推荐指数
1
解决办法
2421
查看次数

将事件添加到日历非常慢

我只是想在设备的日历中添加一个事件.

我正在使用:

 __weak ProgramViewController *weakSelf = self;

 EKEventStore *store = [[EKEventStore alloc] init];

    [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
     {
         if (error)
              NSLog(@"EKEventStore error = %@", error);

         if (granted)
         {
             NSLog(@"EKEvent *event ");

             EKEvent *event = [EKEvent eventWithEventStore:store];
             event.title = weakSelf.program.title;
             event.location = weakSelf.program.locationPublic;
             event.startDate = weakSelf.program.startTime;
             event.endDate = weakSelf.program.endTime;
             [event setCalendar:[store defaultCalendarForNewEvents]];
             NSError *err = nil;
             [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];

             if (err)
             {
                 UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Calendar Error" message:err.localizedDescription delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
                 [alertView show];
             }
             else …
Run Code Online (Sandbox Code Playgroud)

objective-c ios ekevent ekeventkit

10
推荐指数
1
解决办法
1597
查看次数

在IOS中创建事件时,日历事件正在多次添加

我在活动开始前5分钟创建了一个带有闹钟的日历活动.

我的活动看起来像这样

EKEvent <0x7fd8ae554ba0>
{
     EKEvent <0x7fd8ae554ba0>
{    title =        E-Cold
1mg; 
     location =     ; 
     calendar =     EKCalendar <0x7fd8ae717420> {title = Medicines; type = Local; allowsModify = YES; color = #1badf8;}; 
     alarms =       (
    "EKAlarm <0x7fd8ae71bd30> {triggerInterval = -300.000000}"
); 
     URL =          (null); 
     lastModified = 2015-03-18 09:01:41 +0000; 
     startTimeZone =    Asia/Kolkata (GMT+5:30) offset 19800; 
     startTimeZone =    Asia/Kolkata (GMT+5:30) offset 19800 
}; 
     location =     ; 
     structuredLocation =   (null); 
     startDate =    2015-03-18 02:30:00 +0000; 
     endDate =      2015-04-01 02:30:00 +0000; 
     allDay =       0; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios ekevent

10
推荐指数
1
解决办法
1367
查看次数

如何获得ekevent EKparticipant电子邮件?

如何获得ekevent EKparticipant电子邮件?

EKParticipant类没有这样的属性.

是否可以呈现本机ios参与者控制器以显示参与者列表?

ekevent

9
推荐指数
3
解决办法
2817
查看次数

iOS EventKit EKCalendar唯一(全局)标识符

是否有可用于识别跨设备的日历的属性?

根据Apple文档,无法使用"calendarIdentifier"属性:

与日历完全同步将丢失此标识符.您应该有一个计划,通过缓存其他属性来处理标识符不再可读的日历.

我正在寻找类似于EKEvent.calendarItemExternalIdentifier的东西,它在设备上是相同且唯一的,但是对于日历.

calendar objective-c ios eventkit ekevent

9
推荐指数
0
解决办法
371
查看次数

EKEvent的eventIdentifier和calendarItemExternalIdentifier之间的区别

阅读Apple的文档,我仍然对EKCalenderItem的calendarItemExternalIdentifierEKEvent的eventIdentifier之间的差异感到困惑,我们应该使用哪一个来识别不同设备上的日历事件.特别:

EKCalendarItem calendarItemExternalIdentifier 日历服务器提供的日历项的外部标识符.(只读)

EKEvent eventIdentifier:事件的唯一标识符.(只读)

EKCalendarItem calendarItemExternalIdentifier是在iOS6中添加的,我原本认为这将是我需要保存的标识符,以便稍后调用,EKEventStore eventWithIdenfier:因为它声称:

此标识符允许您跨多个设备访问相同的事件或提醒.

但是在我自己的测试中,似乎当我创建并保存一个新的EKEvent时,我从EKEvent对象获得的eventIdenifier是唯一且有用的,而我得到的calendarItemExternalIdentifier似乎不适用于 EKEventStore eventWithIdenfier:

如果有人有确凿的答案,我很想知道.

objective-c ios eventkit ekevent ekeventstore

9
推荐指数
1
解决办法
2697
查看次数

有没有办法通过UIActivityViewController发送日历事件?

标题基本概括了所有内容.以下是我最好的猜测,但事件根本没有出现.

NSArray *items = @[string, URL, (EKEvent *)[self createCalendarEvent]];
UIActivityViewController* activity = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:activities];
[self presentViewController:activity animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的方法?或者我是否必须创建一个ics文件并发送?

objective-c ekevent uiactivityviewcontroller

9
推荐指数
1
解决办法
352
查看次数

将事件保存到用户的日历

如何将事件添加到用户的日历中,然后允许用户选择日历等.我有此代码可用,但这会将事件添加到用户的默认日历.如何允许用户更改日历,自定义警报等?我见过其他应用程序打开日历应用程序并预​​先填写字段.

//add to calendar
                let eventStore : EKEventStore = EKEventStore()
                eventStore.requestAccessToEntityType(EKEntityType.Event, completion: { (granted, error) in
                    if granted && error == nil {
                        let event:EKEvent = EKEvent(eventStore: eventStore)

                        event.title = "My event: " + self.event.name
                        event.startDate = self.event.startTime
                        event.endDate = self.event.endTime
                        event.notes = self.event.description
                        event.calendar = eventStore.defaultCalendarForNewEvents

                        do {
                            try eventStore.saveEvent(event, span: .ThisEvent, commit: true)
                            self.dismissViewControllerAnimated(true, completion: {})
                        } catch {
                            self.dismissViewControllerAnimated(true, completion: {})
                        }
                    } else {
                        self.dismissViewControllerAnimated(true, completion: {})
                    }
                })
Run Code Online (Sandbox Code Playgroud)

ios ekevent ekeventstore swift swift2

9
推荐指数
1
解决办法
2849
查看次数