Hacking iChat for Generic SIP Support
The Setting
At this week’s OJUG meeting, I mentioned to Patrick Linskey that I would really like to see iChat as a client to generic SIP servers. He said that it may be possible given Cocoa’s design, so I’ve been looking into it. Here is a set of related links:
- Apple iChat Technology Brief,
- Blog entry on the subject, gives some protocol details
- Another entry discussing the protocols
I also took a look around to see what iChat is doing under the covers. First, when iChat is running, it uses 2 pieces:
/Applications/iChat.app/Contents/MacOS/iChat/System/Library/PrivateFrameworks/InstantMessage.framework /iChatAgent.app/Contents/MacOS/iChatAgent
When you are doing audio or video communications, you will notice access another shared library:
/System/Library/PrivateFrameworks/VideoConference.framework
The above is where it gets interesting. I ran class-dump on it, output available here. Of particular interest is an interface called SIPManager. There is also a lot of RTP and SDP related things in there, but I’m now over my head in regards to grokking Objective-C.
Where Do We Go From Here?
I believe it is very important to have a general SIP client that has iChat’s audio quality and integration into the operating system. Can we hack it?