Hi,
Thanks for the continual development of this product and keeping it open
sourced. Recently I have been testing push delivery onto iOS devices, and run
into the well-known Birthday off by one problem in a different sense.
My understanding is that a contact entry is literally a vCard file in a column
of a database row, and the birthday property will not have a time associated in
storage (make sense is broad usage). When an iOS device (specifically an iPad
running 7.1.x) uses Exchange ActiveSync to synchronize the contacts, the
birthday will always be 1 day late on the device compared to the web-based
interface. I noticed that Exchange ActiveSync uses a full dateTime spec in
transit for the birthday field, which I suspect where the issues lie - when I
uses CardDAV instead, the birthday is correct so as a work around, I could add
an extra CardDAV account just for the contact sync while everything else uses
Exchange ActiveSync. The vCard spec does allows for a time specification on the
birthday field, but if I manually hack it into the database, nothing works
correctly (Web UI will show current day for the birthday, but double clicking
it will show the correct day in the Other tab)
The question I have regarding this problem is - what timestamp is being sent
back for the birthday field in an ActiveSync XML response, or would SOGo sent
back just the date string without a time which would not have met the spec for
the birthday property? I haven't been able to find any examples of a working
birthday field on iOS device when using ActiveSync and I suspect it would need
some reverse engineering on how iOS uses the time portion of the field in a
response.
The ActiveSync spec I'm referring to is this one:
http://msdn.microsoft.com/en-us/library/dd299451%28v=EXCHG.80%29.aspx
Another side note to this - because not all contacts have the year specified in
the birthday field, and I can't use a year of , I put in 1900 which seems
to be floor. While this works, I have discovered that iOS device uses the year
1604 to signify the lack of year instead, and if I hacked that year directly
into a contact entry using SQL commands, the iOS device will show the birthday
without year
Chris
--
users@sogo.nu
https://inverse.ca/sogo/lists