2014-12-11 1 views
1

사용자가 DDay.iCal을 사용하여 온라인 캘린더의 일정을 해당 장치의 캘린더에 추가 할 수있게하려고합니다. 이것은 iOS 및 데스크톱 플랫폼에서 잘 작동하는 것으로 보이지만 안드로이드 기기와 관련되어 있습니다. 나는이 메시지로 실행iCal Events를 제공하는 올바른 방법은 무엇입니까?

Android Error Message

일어나는 것을 유지하는 것이이 이벤트를 제공하는 더 나은 방법이 있나요?

public ActionResult ICS(int id) 
{ 
     // Get event from Database 
     var heEvent = HEEvent.GetEventDetails(id); 

     // Create iCal object 
     var iCal = new iCalendar(); 
     iCal.Method = "PUBLISH"; 

     // Create iCal Event 
     var icalEvent = iCal.Create<DDay.iCal.Event>(); 
     icalEvent.Summary = heEvent.Name; 
     icalEvent.Start = new iCalDateTime(heEvent.TimeBegin.Year, heEvent.TimeBegin.Month, heEvent.TimeBegin.Day, heEvent.TimeBegin.Hour, heEvent.TimeBegin.Minute, 00); 

     TimeSpan calculatedEventDuration = heEvent.DateEnd.Subtract(heEvent.TimeBegin); 
     if (calculatedEventDuration.Hours > 1) { icalEvent.Duration = calculatedEventDuration; } 
     else { icalEvent.Duration = TimeSpan.FromHours(1); } // default to 1 hour if event time is less 

     icalEvent.Location = heEvent.Location; 

     // Create a serialization context and serializer factory. 
     // These will be used to build the serializer for our object. 
     ISerializationContext ctx = new SerializationContext(); 
     ISerializerFactory factory = new DDay.iCal.Serialization.iCalendar.SerializerFactory(); 
     // Get a serializer for our object 
     IStringSerializer serializer = factory.Build(iCal.GetType(), ctx) as IStringSerializer; 

     string output = serializer.SerializeToString(iCal); 
     var contentType = "text/calendar"; 
     var bytes = Encoding.UTF8.GetBytes(output); 

     return File(bytes, contentType, String.Format(@"{0}.ics", heEvent.Name.Replace(" ", "_"))); 
} 

답변

-2

오류가 있습니다. 말씀 드릴 필요가 없습니다. Ical과 관련이 없습니다. 전적으로 당신, 휴대 전화 및 기술 예산 사이에 있습니다. (SD 카드를 구입하십시오!)

Icalendars와 관련하여 피드라고 부르는 경우가 많지만 Icalendar에 가입 한 고객은 정기적으로 캘린더 URL을 폴링하여 매번 전체 캘린더를 요청합니다. 불필요한 처리를 피하기 위해, 동일한 달력을 수천 번 재생하지 않고 변경 내용을 전파 할 수 있도록 일정을 유지하는 것이 좋습니다. 이를 위해 필자는 파일 시스템과 HTTP 캐싱 헤더의 사용을 제안합니다. 캘린더가 수정되면 웹에 연결된 디렉토리에 정적 파일로 작성하십시오. 아마 당신은 이미 이것을하고 있습니다. 그런 다음 웹 서버에 현명한 캐싱 헤더를 설정하고 멀리 이동하십시오.