DIY iSync Phone Plugin
By: Benjamin Martin - Revised: 2014-01-23 richard
Note:
This webpage follows my slides verbatim and is primarily intended to make the content searchable.
Motivation
A sinister chain of events
- Girlfriend gets a new phone that supports Bluetooth Sync
- Unfortunately it doesn't support iSync on Mac OS X
- But that does not deter me and I hack, google, and duct tape my way to a solution
- Boss hears story ... thinks story is cool ... asks me to present at Mac Managers ... I foolishly agree
- I deperately try to learn everything I can about iSync plugins
Warning
Before you listen to a word I say
- I am not an expert at iSync plugins
- I'm an absolute newbie with limited albeit positive experience
- This presentation is an overview of my research and experience of working with ONE particular phone
Goal
What I hope this presentation does for you
- Gives you a brief introduction to device sync technologies
- Encourage a healthy admiration for standards (I hope you have one already)
- Gets you started in the direction to build your own iSync plugin
- Hopefully you get lucky like I did
Contents
- Background
- What does an iSync plugin consist of?
- "iSync Plug-in Maker.app"
- Modifying existing plug-ins
- Links & References
Initial Homework
- Does iSync already support your phone?
- If it doesn't ...
- Or if you are really adventurous ... fire up the developer tools and do some phone plugin cookin' from scratch!
What does your phone need?
To work in "iSync Plug-in Maker.app"
- Bluetooth and/or USB
- Supports OBEX (OBject EXchange communications protocol)
- Supports SyncML DM (SYNChronization Markup Language Device Management)
- Supports vCard 2.1 (file format for contacts)
- Supports vCal (file format for calender)
OBEX
OBject EXchange protocol
- Pretty common (most Sharp, Motorola, Samsung, Sony Ericsson and Nokia models support it)
- OBEX support on your phone is defined by it's higher-layer "profiles"
- Specifically you want it to support the "Synchronization Profile"
- Carriers often restrict which profiles are available and sometimes their implementation
- i.e. restricting ring-tone, picture transfer, etc (Verizon is accused of this a lot)
SyncML
SYNChronization Markup Language
- Discovering whether your phone supports this can be VERY hard
- For example my phone did not actually directly support SyncML but supported MotoSync (of which SyncML is a subset)
- Look for things like OMA DM (Open Mobile Alliance Device Management .. SyncML should be supported for standards compliancy if they support OMA DM)
*.phoneplugin
What's it made out of?
- It is a packaged collection of plists
- If you use a pre-packaged plug-in MetaClasses.plist is the IMPORTANT plist
- If you build your own you will also have a SyncEngine.plist and a PhoneConduit.plist
- Pre-made ones inherit these (pretty sure)
- Examples
iSync Plug-in Maker.app Overview
- XCode 3.0
- /Developer/Applications/Utilities/iSync Plug-in Maker.app
- Workflow for creating a plug-in
Editing
Testing
Recommendations
For working with iSync Plug-in Maker
- Do as much research as you can before hand about your phone
- If you're totally shooting in the dark turn off every extended option and start with the oldest version of SyncML
- This worked for me when I started ... I may have just gotten luck ;)-
Modifying Existing Plug-ins
- This is probably a little a little easier than making one from scratch
- Get a current plug-in
Modifying Existing Plug-ins
- It's all in the MetaClassses.plist
- You need the GMI+GMM
- Which you can get from iSync Plug-in Maker.app
- You can still run the unit tests in iSync Plug-in Maker.app!!!
- Example
Links & References
- iSync Plug-in Maker User Guide
- Pre-made plugins and info
- Motorola specific info
- Wikipedia
- Open Mobile Alliance