2013-05-15 11 views
3

5546 설명. 인터넷 검색, 2009 년 제안 된 표준, 즉 RFC5546을 발견했습니다. 나는이 문서를 읽고 매우 재미 있고 잠재적으로 내 문제를 해결할 수있는 한 점을 발견했다. 섹션 Methods for VEVENT Calendar Components은 REQUEST와 PUBLISH 방법의 차이를 설명합니다. 하지만, 내게 정말로 명확하지 않은 몇 가지 요점이 있습니다.iCalendar는 생성 : RFC 나는 특히 <code>iOS</code>, <code>Gmail</code>, <code>Outlook</code>, <code>Android</code> 및 <code>Windows Phone</code> 여러 클라이언트와 호환 할 수있는 ICS 파일의 생성과 관련된 몇 가지 문제에 직면하고있다

  1. 게시는 어떻게해야합니까? 새 캘린더를 추가해야합니까? Outlook이나 iOS에서와 같이 새 캘린더를 만들거나 Gmail이나 Lightning과 같은 기존 사용자 캘린더에 일정을 추가해야합니까? 편집 : 전자 메일에 첨부 된 파일로 일정을 기록하십시오.
  2. 게시 할 때 둘 이상의 이벤트가 포함될 수 있습니까? 문서에서 논리적으로 그렇습니다.하지만 Gmail은 목록의 첫 번째 이벤트 만 추가합니다. Lightning은 하나의 이벤트 만 추가 한 다음 804a0004 오류를 제공합니다.
  3. 어떻게 요청해야합니까? 문서 상태 : VEVENT | 1+ | All components MUST have the same UID. 이는 일정이 VEVENT를 초과 할 수 있지만 동일한 UID를 가져야 함을 의미합니다. 그렇다면 고객이 어떻게 이러한 이벤트를 구별 할 수 있습니까? 사실 내가 시도한 클라이언트는 동일한 UID로 생성 된 이벤트를 구별 할 수 없지만 가장 높은 순열을 가진 이벤트 만 추가합니다. 논리적으로 말하면, 초대 당 하나 이상의 이벤트를 보내고 싶지는 않지만 RFC를 통해 내가 할 수있게되었습니다 (그리고 내가 원하는 경우).
  4. VEVENT | 1+ | All components MUST have the same UID. 문을 잊어서 ICS 파일의 각 이벤트에 고유 한 UID를 제공하면 Gmail 및 iOS는 파일에 포함 된 모든 이벤트를 추가하고 Lightning 및 Outlook은 첫 번째 이벤트 만 추가합니다. 이 길을 추구 할 길은 없습니까? 아니면 다른 길을 찾아야합니다.
  5. 기본적으로 언급 한 플랫폼의 사용자 일정에 단일 ICS 파일로 더 많은 이벤트를 추가하는 것을 어떻게 제안합니까? 게시에 대한

샘플 ICS : 요청에 대한

BEGIN:VCALENDAR 
PRODID:-//prodid//product//IT 
VERSION:2.0 
METHOD:PUBLISH 
CALSCALE:GREGORIAN 
BEGIN:VEVENT 
UID:uid1 
DTSTAMP:20130515T121437Z 
DTSTART:20130619T205000 
DTEND:20130619T215000 
DESCRIPTION:Desc 1 
SUMMARY:Sum 1 
LOCATION:location 
ORGANIZER:mailto:[email protected] 
SEQUENCE:1 
STATUS:CONFIRMED 
END:VEVENT 
BEGIN:VEVENT 
UID:uid2 
DTSTAMP:20130515T121437Z 
DTSTART:20130719T205000 
DTEND:20130719T215000 
DESCRIPTION:Desc 2 
SUMMARY:Sum 2 
LOCATION:location 
ORGANIZER:mailto:[email protected] 
SEQUENCE:1 
STATUS:CONFIRMED 
END:VEVENT 
END:VCALENDAR 

샘플 :

약 1) 클라이언트로 이벤트를 통신하는 방법이 명확하지 않다
BEGIN:VCALENDAR 
PRODID:-//prodid//product//IT 
VERSION:2.0 
METHOD:REQUEST 
CALSCALE:GREGORIAN 
BEGIN:VEVENT 
UID:uid1 
DTSTAMP:20130515T121437Z 
DTSTART:20130619T205000 
DTEND:20130619T215000 
DESCRIPTION:Desc 1 
SUMMARY:Sum 1 
LOCATION:location 
ORGANIZER:mailto:[email protected] 
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:[email protected] 
SEQUENCE:1 
STATUS:CONFIRMED 
END:VEVENT 
BEGIN:VEVENT 
UID:uid2 
DTSTAMP:20130515T121437Z 
DTSTART:20130719T205000 
DTEND:20130719T215000 
DESCRIPTION:Desc 2 
SUMMARY:Sum 2 
LOCATION:location 
ORGANIZER:mailto:[email protected] 
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:[email protected] 
SEQUENCE:1 
STATUS:CONFIRMED 
END:VEVENT 
END:VCALENDAR 

답변

1

: 그것은 (IMIP를 통해입니다 이메일) 또는 HTTP URL을 통해? 어쨌든 귀하의 질문에 대한 정답은 없습니다. iTIP는 iCalendar 데이터를 전송하는 것에 관한 것입니다. 게시 스트림 2) 그래, 당신이 가질 수있는 여러 이벤트

약 3)에 대해

:

iCalendar는 되풀이 모임에 대한 예외의 개념을 가지고있다. 이러한 예외는 동일한 UID 및 예외로 간주되는 특정 인스턴스를 나타내는 RECURRENCE-ID가있는 VEVENT로 표시됩니다.

결과적으로 REQUEST는 단일 이벤트 (하나의 UID 만)를 전송하는 데에만 사용될 수 있지만이 이벤트 자체는 VEVENT 세트로 표현 될 수 있습니다. 하나는 마스터 (예 : 10:00) 그리고 각 예외에 대해 하나씩 (예 : 12/12 금요일을 제외하고 09:00에 개최).

어쨌든 내가 첨부 여부를 본문에 포함하는 것은 중요하지 않다, 메일을 통해 일정을 보내고, 예를 들어 http://tools.ietf.org/html/rfc5546#section-4.4.8 나는 점 1에 대한 질문을 업데이트

+0

)의 마지막 이벤트를 참조하십시오. 포인트 2에 대해), 이는 Google 캘린더 또는 라이트닝과 같은 클라이언트가 일종의 버그 또는 불완전하다는 것을 의미합니까? 그렇다면 분명히 여러 클라이언트에서 작동하는 단일 파일을 보내는 방법이 없습니다. 맞습니까? – ThanksForAllTheFish

+0

맞습니다. 제대로 작동하지 않습니다. 나는 그들이 REQUEST와 같은 방식으로 PUBLISH를 취급한다고 의심하고, 따라서 4)에서 하나의 이벤트 (VEVENT 예외가있는 경우 optionnally) 만 허용한다. gmail이해야 할 일과 정반대로 행동하는 것처럼 보인다. – arnaudq

+0

나는 4 세에 대해 틀 렸습니다. 마침내 좀 더 과학적인 접근 방식을 취했으며 이벤트, 클라이언트, UID 및 메소드의 수 조합에 대한 동작을 설명하는 문서를 준비 중입니다. Google 캘린더는 첫 번째 일정 만 추가합니다. – ThanksForAllTheFish