DIY iSync Phone Plugin

By: Benjamin Martin - Revised: 2014-01-23 richard

Download iTunes U Audio, Video, or Slides
View Streamed Video

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


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