VoIP on the iPhone Thanks to CounterPath
by Craik Pyke on 26/08/10 at 5:00 am
Craik Pyke is telecommunications architect and software developer specializing in mobile applications and a Senior Editor for iPhoneCTO.
Quite some time ago, I wrote a somewhat negative assessment of various SIP (VoIP) clients for the iPhone. At the time, there was no multi-tasking and Apple’s notification system was just gaining adoption with developers. Since then, SIP clients have evolved substantially, growing in capability and availability. Moreover, Apple has created a multi-tasking class with iOS4 specifically for VoIP applications so they may continue some level of operation when the user switches to another application and has allowed VoIP over 3G.
With these advances in mind, and with the launch of CounterPath’s Bria
for iPhone, I decided to revisit the potential for VoIP applications on the iPhone as it pertained to enterprises (so – SIP particularly). Specifically, I wanted to look at the capabilities Apple has introduced in support of VoIP, and whether or not they address my previous concerns of how VoIP is integrated into the overall iPhone experience. To facilitate my investigation, I decided to try Counterpath’s Bria SIP client.
For those not familiar, CounterPath produces some of the most popular SIP clients for OS X, Windows, and Linux – namely X-Lite, EyeBeam, and Bria. Given that I’ve been using X-Lite on a variety of platforms for many years, I was looking forward to trying Bria on the iPhone – convinced it would deliver the best SIP soft-client experience on the iPhone thus far.
Unfortunately, a few items stood in my way of really validating the capabilities of iOS4. Most notably is that despite Bria having been updated a few times since iOS4 went gold, they still don’t support the multi-tasking capability. I find this quite unusual given the rush of other developers of VoIP clients rushing to make their clients interoperable with multi-tasking in iOS4. Further, given one of the six specifically addressed classes of multi-tasking in iOS is VoIP applications, I’d have thought this would have been a top priority area for the CounterPath development team. Where this becomes particularly glaring is in the case I complained about in my last article. If I’m using Bria, and I receive a call on the “circuit” side (i.e. a traditional cell call), the Bria call is completely knocked down.
Beyond the iOS4 incompatibility complaint, I give credit to CounterPath at continuing their trend of producing very usable, aesthetically pleasing VoIP clients. I can’t complain at all about the form or functionality of Bria. It operates as a full featured SIP client, interoperating fine with my Amazon-hosted Asterisk system. As is consistent with Counterpath’s design, they provide enough control over settings and configuration that many of the “fiddly” bits of configuring SIP/VoIP can be addressed. I did manage to drive the client into a crash loop by setting the NAT Traversal settings to User specified, and disabling DNS SRV and ICE while leaving the remaining options enabled (namely telling it to detect it’s own Global IP address and to use STUN).
And while on the topic of NAT Traversal, I was a bit surprised to find that irrespective of which of the 6 VoIP clients I current have at my fingertips or how I configured my Asterisk server, I was unable to get two-way speech path when using VoIP over 3G with Rogers. I won’t belabor the topic here, but I’d be interested in comments from folks below whether they’ve been able to address proper speech path with VoIP clients on the iPhone when using a a server that is also behind a NAT (such as being hosted on Amazon EC2).
Anyway – back to the topic at hand. Bria is a capable client offering the necessary features to be a useful VoIP client. It offers support for the simple call functions (Hold, Transfer, Adhoc conferencing, and Voicemail specifically) as well as some nice added capability such as in-app purchase of G.729. It’s taken it’s place as my secondary VoIP client on the iPhone, behind iSIP as my primary client. If Bria supported multi-tasking it may actually become my primary client, but until then it’s simply not functional enough.
UPDATE: Shortly after I pushed this article up to the site, CounterPath released an update to the application. It was a pleasantly surprising update from the following perspective:
- Support for iOS4 multi-tasking has been added
- The NAT traversal setting have been somewhat simplified
These updates have certainly improved the usability of the client overall. The multi-tasking works fairly well, but it’s not perfect. For example, when on a VoIP call, if a call is received from the cellular network, the VoIP call is immediately placed on hold. This doesn’t give the user the chance to tell the other person to hang on for a moment, or even really give the option to ignore the incoming cellular call. I’m sure this is largely a factor of the iOS APIs for VoIP applications – but that doesn’t make it any less intrusive. Additionally, if the user is on a cellular call, Bria will pop up a notification that there’s an incoming call, but if the user attempts to switch applications to Bria to handle the call, the VoIP call is immediately “rejected” (the caller gets a busy signal).
So – going back to my previous conclusions. With the addition of multi-task support for Bria, I can say at this point it’s become my primary VoIP application on my iPhone. Sadly I can also say that VoIP on my iPhone is nothing more than a testbed application at this point, and not something I can honestly make significant use of due to the limitations of iOS integration. As I’ve said before – VoIP on the iPhone is not ready for “primetime” until Apple allows direct integration with the native dialer for VoIP applications.
