我的iOS应用程序我正在寻找一种方法,让用户可以选择将事件添加到标准日历应用程序,或者添加到MS Outlook日历,如果已安装该应用程序。
到目前为止,我无法找到向Outlook添加事件的方法。是否有URL方案或其他方式将事件添加到Outlook日历?
答案 0 :(得分:0)
SWIFT 4版本。
几周前,我处于相同的情况。因此,事实证明,当您将Outlook或Google Mail应用添加到手机并同步日历时。一个带有Caps的新日历将出现在您的ios本机日历中。所以,这样说。您可以按名称和使用本机应用程序的相同方式访问日历。这就是我最终访问Outlook日历并向其中添加事件的方式。到目前为止,我不确定OUTLOOK iOS本机应用程序本身是否将与Outlook服务器端的日历同步。我尚未对此进行测试。验证后会更新。
如何访问日历并向其中添加事件,如下所示:
//first step
func isOutlooktAndCalendarPresent(){
for cal in eventStore.calendars(for: EKEntityType.event) as [EKCalendar]{
//External calendars appear in caps.
if cal.title == "OUTLOOK" {
self.outlookCalanderIsAvailable = true}
if cal.title == "GMAIL" {
self.calendarOptionIsAvailable = true}
//this will be the default calendar.
else if cal.title == "Calendar"{
self.calendarOptionIsAvailable = true}}
}
//second step
func presentOptionsForCalerdar(){...}
//third step
func addEventToCalendar(title: String,
description: String?,
startDate: Date,
endDate: Date,
branchLocation: String?,
calendar: String,
completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil){...}
//calendar step 4
//choose the calendars
func getCalendar(calType: String) -> EKCalendar{
var calUID:String = "?"
for cal in eventStore.calendars(for: EKEntityType.event) as [EKCalendar]{
if cal.title == calType {
calUID = cal.calendarIdentifier
}
}
let calendar = eventStore.calendar(withIdentifier: calUID)
if let cal = calendar{
return cal
}else{
if let cal = self.eventStore.defaultCalendarForNewEvents{
return cal
}
}
return EKCalendar()
}
//step 5
func gotoAppleCalendar(date: Date) {... make sure you dispatch this in DispatchQueue.main.async {...}}
嗯,这在很大程度上是对我有用的。希望它能帮助任何人。
答案 1 :(得分:0)
我正在调查,发现了这个网址:
ms-outlook://events/new?title=yourTitle
此链接适用于react-native,因此我想它也适用于本机iOS和Android。 我还没有弄清楚其他参数(日期,状态,描述),但是希望对您有帮助!