Wednesday, October 27, 2010

아이폰용 acrobits softphone 푸시 서비스 원리

아이폰 소프트폰 acrobits softphone에 대해서는 일전에 소개를 한 적이 있었다. 이 앱은 동종의 앱중에서 가장 신뢰도가 높은 앱이다. 아이폰에서는 멀티태스킹을 지원하지 않기 때문에 인터넷 전화와 같은 커뮤니케이션 앱들은 주로 전화를 거는 목적으로 주로 사용된다.

그 이유는 아이폰의 멀티태스킹 특성 때문이다.
아이폰은 제 3자가 만든 응용프로그램에 대해서 백그라운드 작업을 제공하지 않는다. 제한적인 백그라운드 작업은 제공하지만 일반적으로 이야기 하는 멑티테스킹이 아니다.
이런 점이 아이폰용 인터넷 전화를 만드는 개인이나 기업에게 도전이 되고 있다.

애플은 푸시서비스라는 것을 통해서 멀티태스킹의 약점을 극복하고 있다. 극복 정도가 아니라 응용에 따라서는 복잡한 네트워크 프로토콜 설계를 매우 간결하게 디자인할 수도 있게 해준다.

그럼 Acrobits softphone은 어떻게 푸시서비스를 적용하고 있을까?
일단 푸시서비스 구현 방식을 이야기하기 전에 멀티태스킹이 안되는 아이폰에서 어떻게 전화수신을 가능하게 했을까에 대해서 짚고 넘어가보자.

인터넷전화는 일반적으로 전화기서버에 등록(register)를 해야만한다. 여기서 등록이라는 의미는 우리가 어떤 서비스 가입을 할 때 와 같은 1회성 가입이 아니라 전원을 켜거나, 내 네트워크 환경이 변하거나 하는 등의 환경 변화시 그 사실을 서버에 알린다는 의미로 해석해야 한다.
그래야만 전화가 왔을 때 서버가 전화 단말로 연결을 시켜줄 수가 있다.

Acrobits softphone의 경우 사용자에게 세 가지의 옵션을 주고 있다.
첫번째는 아이폰을 계속해서 전면에 실행시킬 때만 전화수신을 가능케하는 모드이고, 두 번째는 아이폰이 백그라운드로 가더라도 주기적으로 서버에 등록을 할 수 있도록 iOS의 제한된 백그라운드 기능을 이용하도록한 모드
이다. 이 두 가지 방법들은 모두 추가적인 아이폰의 배터리를 소모하게 만든다.

그래서 마지막 방식이 푸시를 이용한 방식인데 이 방식에서는 추가적인 전원을 소비하지 않는다. 왜냐하면 프로그램이 실행중이지 않는 경우에도 전화를 받을 수 있기 때문이다.
그런데 어떻게 해서 푸시가 가능한지 정말 궁금했다. 왜냐하면 이 회사가 제어할 수 없는 위치에 전화기 서버가 있기 때문이다.

그 것이 가능한 이유는 바로 우리의 개인 정보를 이용하기 때분이다. 즉 소프트폰에 저장되어 있는 sip정보를 acrobits 회사에 넘겨준다. Acrobits 서비스는 우리를 대신해서 우리의 전화서버에 접속하여 비서 노릇을 해준다. 전화가 오면 Acrobits 서버가 아이폰에 푸시를 날리고 앱이 뜨면서 전화를 당겨온다.
이제야 클리어 하게 이해가 된다.

그런데 이 편리함의 댓가는?

우리의 정보에 대해 Acrobits 서비스가 절대적으로 액세스가 가능하다는 점이다. 현재로서는 그들을 믿는 수 밖에 없다.

No comments: