[sync] Synthesis iPhone SyncML Client
Stefan Knöß
stefan at knoess.se
Mon Aug 25 22:12:05 UTC 2008
Hi there,
as the iPhone 3G was released I started to experiment with Horde 3.2.1,
Turba 2.2.1, a LDAP address server and the brand new Synthesis iPhone
SyncML client (1.0.1). Everything ran astonishingly smooth, more or less
out of the box (some tuning of the fields to have a good match for LDAP,
Turba and SyncML was necessary though). Synchronizing and editing of the
address book stored in a ldap backend was working perfectly fine.
But the amazing setup suddenly broke down after the latest update of the
Synthesis iPhone Client (1.0.4). After some discussion with Lukas Zeller
from Synthesis the picture got clear. The client 1.0.4 switched to
preferred vCard v3.0 that the horde SyncML server announces to support.
But the datastore section of the server_*.wbxml looks like this:
<DataStore>
<SourceRef>contacts</SourceRef>
<Rx-Pref>
* <CTType>text/**x-**vcard</CTType>*
<VerCT>3.0</VerCT>
</Rx-Pref>
<Rx>
<CTType>text/x-vcard</CTType>
<VerCT>2.1</VerCT>
</Rx>
<Tx-Pref>
* <CTType>text/**x-**vcard</CTType>*
<VerCT>3.0</VerCT>
</Tx-Pref>
<Tx>
<CTType>text/x-vcard</CTType>
<VerCT>2.1</VerCT>
</Tx>
<SyncCap>
<SyncType>1</SyncType>
<SyncType>2</SyncType>
<SyncType>3</SyncType>
<SyncType>4</SyncType>
<SyncType>5</SyncType>
<SyncType>6</SyncType>
</DataStore>
The <CTType>text/x-vcard</CTType> section for vCard version 3.0 seems to
be wrong. Could it be the type should read "text/vcard" and not
"text/x-vcard"? Please correct me if I am wrong.
The synthesis client simply rejects all entries from now. I located the
responsible line in horde3/lib/SyncML/XMLoutput.php and changed it from
$this->_writeDataStore('contacts', 'text/x-vcard', '3.0', $devinfoutput,
array('text/x-vcard' => '2.1'));
into
$this->_writeDataStore('contacts', 'text/vcard', '3.0', $devinfoutput,
array('text/x-vcard' => '2.1'));
Suddenly, everything seemed to be fine again. Thanks to vCard 3.0 as the
new communication protocol some more fields even were synchronised.
But then I detected a new problem. Most of the address fields are now
truncated and look like this in the data.txt protocol:
output converted for client (text/vcard):
BEGIN:VCARD
VERSION:3.0
NICKNAME:
EMAIL;TYPE=HOME:
EMAIL;TYPE=WORK:email at here.dot
URL;TYPE=HOME:
TEL;TYPE=HOME:+491234512345
TEL;TYPE=WORK:+491234512345
TEL;TYPE=WORK:+491234512345
TEL;TYPE=CELL:
TITLE:Teamleader
URL;TYPE=WORK:http://www.web.com/
BDAY:
TEL;TYPE=HOME:
X-SYNCJE-ANNIVERSARY:
NOTE:
TEL;TYPE=PAGER:
X-WV-ID:
N:Lastname;Surname;;;
FN:Surname Lastname
ORG:TRW Automotive GmbH;
ADR;TYPE=HOME:;;StrasseStrasseStrasse_StrasseStrasseStrasse;Schorndorf;Bade
n-Württemberg;73614;Deutschland
ADR;TYPE=WORK:;;IndustriestraÃ<9F>e
20;Alfdorf;Baden-Württemberg;73553;Deutschland
BODY:
END:VCARD
If the ADR;TYPE=HOME or ADR;TYPE=WORK field exceeds a certain length,
not entered linefeeds and spaces are inserted into the address
structure. As I mentioned before, everything was fine with vCard 2.1.
What am I doing wrong? Is there a way to force Horde to communicate in
2.1 as a workaround? I am not familar with PHP so I have no idea how to
debug that issue.
The problem of the iPhone and the software distribution by the AppStore
simply is the missing possibility of a downgrade. So I am stuck with a
"better SyncML client", not working with Horde anymore ... :-(
I appreciate every comment.
Best regards
Stefan
More information about the sync
mailing list