ACAccount.framework를 이용하여 시스템에 설정된 트위터 계정에 접근 시, 설정된 트위터 계정이 없을 때 처리 방법

iOS5 이상 버전에서는 Twitter.framework와 ACAccount.framework가 추가되어 손쉽게 트위터를 연동할 수 있다. (참고 : iOS5에 내장된 Twitter.framework 사용하기) ACAccount를 이용하여 시스템에 설정된 트위터 계정에 접근했을 때 설정된 트위터 계정이 없을 때 처리 방법을 어떻게 생각할 수 있을까? UIAlertView를 이용하여 현재 시스템에 설정된 계정이 없다고 사용자에게 알려 설정을 유도하고 가능하다면 설정으로 이동 External OAuth Library를 이용하여 WebView를 통해 연동 Twitter 개발자 사이트에서 등록한 Application의 권한을 요청(reverse_auth / xauth)하여 처리 OAuth 1.0a의 구조를 잘 알거나 External Library를 가지고 있는 경우에는 관점에 따라 2번이 가장 쉬운 방법이 될 수도 있다. (필자가 회사에서 이전에 수행했던 ‘아임리얼맛집‘은 2번의 방법으로 OAuthConsumer Library를 이용하여 연동하는 방법을 선택하였다.) 3번의 경우는 Twitter에 사용해야되는 이유를 영어로 적어 보내고 요청에 대한 답을 하염없이 기다려야 한다는 큰 단점이 있다. (영어에 자신 있다면 도전!하는 것도 추천.)   결론적으로 위에서 고려한 3가지 방안 중에 1번 방법이 가장 간단할 것이고 “가능하다면 설정으로 이동”이 관건이 되는 부분이다. reverse_auth를 고민하며 이리저리 코딩을 하다가 bulit-in twitter composer를 사용해보게 되었다. 그러다가…

Twitter와 Facebook이 iOS에 통합되면서 바라본 Server와 Client 공유 주체에 대한 생각

iOS5에서는 Twitter가 iOS 내부에 framework로 자리잡았고, iOS6에서는 Facebook이 자리를 잡았다. 이 서비스들의 계정을 담당하는 ACAccount framework가 확장이 가능한 형태였고 다른 서비스들이 여기에 자리잡지 않을까란 생각을 했었는데 역시나였다. 한국에서는 사용빈도가 거의 없는 중국 SNS인 웨이보도 이번 iOS6에 통합되었다. 앞으로 또 어떤 서비스가 ACAccountType으로 자리잡을지… 이 부분에서 궁금점이 하나 생긴다. 기존의 web-based 서비스에 Twitter와 Facebook의 연동은 일반적으로 서버에서 이루어졌었다. 따라서 클라이언트에서는 연동 페이지를 서버측에서 받아서 보여주는 행위만 하였고, 더불어 공유 시 공유를 할 것인가 말 것인가를 서버측에 전달했었다. 하지만 여기서의 단점은 서버측 네트워크 비용이다. 예상 외의 네트워크 비용이 들어간다는 것이다. 그리고 공유 시점이다. 서버 DB에 데이터가 입력이 성공했을 경우 서버측에서는 다시 이를 공유하게 되는데 순차적으로 처리되어야 하기 때문에 사용자는 이 처리가 끝날 때까지 기다려야 했다. 문제는 공유 시점에서 오류가 났을 경우에 클라이언트에서는 오류 메시지를 보내게 되고 사용자는 retry를 했을 때 서버에서는 이를 처리하기 위한 로직이 필요한 상황이 된다. 중복 자료라고 등록을 안하거나 공유만 따로 수행하거나 기타 등등… 만약 이를 클라이언트에서 한다면? 일단…