3

特にiOSGmailOutlookAndroidおよびWindows Phone. グーグルで調べたところ、2009年に提案された標準、別名RFC5546が見つかりました。私はこのドキュメントを読み、非常に興味深く、問題を解決できる可能性があるポイントを見つけました。VEVENT カレンダー コンポーネントのメソッドのセクションでは、メソッド REQUEST と PUBLISH の違いについて説明します。しかし、私にははっきりしない点がいくつかあります。

  1. パブリッシュは何をすべきですか?新しいカレンダーを追加する必要がありますか? (Outlook や iOS のように) 新しいカレンダーを作成する必要がありますか? または (Gmail や Lightning のように) 既存のユーザーカレンダーにイベントを追加する必要がありますか? 編集: 電子メールに添付されたファイルとしてカレンダーに注意してください。
  2. PUBLISH に複数のイベントを含めることはできますか? ドキュメントから、論理的にはそうですが、Gmail はリストの最初のイベントのみを追加します。Lightning はイベントを 1 つだけ追加し、804a0004 エラーを返します。
  3. REQUEST はどのように機能しますか? ドキュメントには次のように記載されてVEVENT | 1+ | All components MUST have the same UID.います。つまり、カレンダーには複数の VEVENT が含まれる可能性がありますが、それらは同じ UID を持つ必要があります。次に、クライアントはこれらのイベントをどのように区別できますか? 実際、私が試したクライアントは、同じ UID で生成されたイベントを区別できませんでしたが、SEQUENCE が最も高いものだけを追加しました。論理的には、招待状ごとに複数のイベントを送信したくありませんが、RFC ではそれが許可されています (私のケース スタディでは送信したいと考えています)。
  4. REQUEST ではステートメントを忘れてVEVENT | 1+ | All components MUST have the same UID.、ICS ファイル内の各イベントに一意の UID を提供します。Gmail と iOS はファイルに含まれるすべてのイベントを追加しますが、Lightning と Outlook は最初のイベントのみを追加します。この道を追求する方法はありますか、それとも許可されるべきではないので、別の方法を見つける必要がありますか?
  5. 基本的に、私が言及したプラットフォームのユーザーのカレンダーに、単一の ICS ファイルを使用してより多くのイベントを追加するにはどうすればよいでしょうか?

PUBLISH 用のサンプル 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:organizer@somedomain
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:organizer@somedomain
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR

リクエストのサンプル:

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:organizer@somedomain
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:attendee@email
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:organizer@somedomain
ATTENDEE;RSVP=TRUE;CN=attendee cn:mailto:attendee@email
SEQUENCE:1
STATUS:CONFIRMED
END:VEVENT
END:VCALENDAR
4

1 に答える 1

1

1) について、イベントをクライアントに伝える方法が明確ではありません: iMIP (電子メール) 経由ですか、それとも HTTP URL 経由ですか? いずれにせよ、あなたの質問に対する正しい答えはありません。iTIP は iCalendar データの転送に関するものです。

2) はい、PUBLISH ストリームに複数のイベントを含めることができます

3) について:

iCalendar には、定期的な会議の例外という概念があります。これらの例外は、同じ UID を持つ VEVENT と、例外と見なされる特定のインスタンスを示す RECURRENCE-ID によって表されます。

結果として、REQUEST は 1 つのイベント (1 つの UID のみ) を送信するためにのみ使用できますが、このイベント自体は VEVENT のセットとして表現される場合があります。各例外 (例: 12 月 12 日金曜日の 09:00 に行われる場合を除く)。

たとえば、https://www.rfc-editor.org/rfc/rfc5546#section-4.4.8の最後のイベントを参照してください。

于 2013-05-16T16:10:37.523 に答える