iPhoneのカレンダー同期その1(アラート同期)

iPhoneのカレンダー同期その1(アラート同期)カレンダーアプリを開発してるので、まずは、そのあたりのネタを。

iPhoneのカレンダー同期について、何回かにわけて投稿します。第一回目は、アラート同期についてです。

 

iPhoneは、GoogleCalendar(Exchange(ActiveSync)、もしくはCalDAV経由)や、iCloudカレンダー等、外部のカレンダーと同期しますが、アラートの方法は外部のカレンダーによって様々な種類があります。カレンダー同期を行なった際に、これらのアラート情報がどのように同期されるか検証しました。(主としてGoogle Calendarを対象に検証)

確認ポイントとしては、

  • 複数アラートの扱い
  • E-MailやSMSのアラートはどうなる?
  • Google CalendarはExchange(ActiveSync)とGMail(CalDAV)の複数同期メソッドを持っているが、選択メソッドによって違いはでるか?
このあたりを中心に見て行きます。(基本的に、iOS5.0で確認、一部問題があった箇所についてはiOS5.1で追加確認してます。)

 

サポートするアラートアクションと複数アラートの指定可否

カレンダーアプリ種別



Google Calendarの「Pop-Up」= iCloudやカレンダーAppの「通知」のようです。

 

プロトコル/フレームワーク種別



アクションについては、呼び名が異なるのでわかりにくいですが、少なくともiOS(EventKit)では、Alarm(通知)一種類です。また、アラートとの指定可能数もそれぞれ異なります。

 

iOS(EventKit)からの同期処理

まずは、iOS(EventKit)からAlarmを指定した場合の挙動を見てみます。



Exchange(ActiveSync)経由の場合、アラートは1つしか同期されず(複数指定しても1つしか反映されない)、しかもiOS5.0環境では新規予定に複数アラートを指定するとフリーズします。(iOS5.1で修正されたようです。)

また、ここで見る限り、iOSの通知=GoogleCalendarのPop-Up です。(想像通りですが。)

 

外部カレンダーからiOSへの同期処理

次は、逆方向、外部カレンダーから、iOSへの同期処理のケースです。



以上から、以下が読み取れます。
  • Exchangeの場合、通知は1件しか同期されない
  • Exchangeの場合、Google CalendarのE-MailやSMSはiOSの通知に反映されない。
  • CalDAVの場合、Google CalendarのE-Mailは、通常のiOSの「通知」として反映される。
  • CalDAVの場合、Google CalendarのSMSは、iOSの通知に反映されない。
 

上記の通り、アラート内容は、その内容と同期プロトコル種別によって変換してiOSされてしまいますが、では、この変換されたものをiOS側で修正/更新したらどうなるか?

処理前状態を用意し、iOS(EventKit)から各種同期方式で、予定の更新処理を行なった際に、どのような振る舞いとなるか検証しました。

 

iOS(EventKit)からGoogleCalendar (CalDAV経由) への同期処理の場合



通知を追加することで、iOS側で「通知」と表示されていたE-Mailや、iOS側に表示されていないSMSが上書きされるのでは?との予想に反し、もとのアクション情報(E-MailやSMS)は維持されます(水色部分)。ただし、元E-Mailであったエントリ(iOS側で「通知」となっているエントリ)そのものを修正(時間変更)した場合には、アクションがPop-Upに変換されてしまいました(ピンク部分)。

 

iOS(EventKit)からGoogleCalendar (Exchange経由) への同期処理の場合



Exchange経由の場合は、通知を1件追加すると、Google Calendar側には通知が1件しか予定が反映されず、かつ既存の通知を上書きしてしまう結果となりました。(ピンク個所)

 

まとめると、、、、

Google Calendar 同期(Exchange経由)の場合は、
  • 通知は1件しか同期されない
  • E-Mail,SMSは同期されない
  • iOS側で通知を追加修正するとE-Mail,SMSの通知が消える。(元々ある複数のエントリが消える)
Google Calendar 同期(CalDAV経由)の場合は、
  • 複数通知の同期可能
  • ただし、SMSは同期されない
  • E-MailはiOSでは通常の「通知」として同期される。
  • (元E-Mailの)iOS側の通知を修正すると、E-MailがPop-Upになってしまう。
 

ということで、Exchange経由のアラート同期はボロボロ、CalDAVの方が若干マシといったところでしょうか。

 

ちなみに、近々リリース予定の.Sched3では、上記を踏まえ以下の仕様としています。(いずれ見直すかもしれません。)
  • Exchangeの場合は、通知指定は1件のみ
  • Exchangeの場合は、通知の修正は不可
  • CalDAVの場合は、既存の通知の修正は不可(追加/削除は可)
 

※検証結果が異なる等の情報があれば、お知らせください。

 

続きはこちら

「iPhoneのカレンダー同期その2(繰り返し予定)」

「iPhoneのカレンダー同期その3(ExchangeとCalDAV比較)」

 


One comment