2011-12-20 3 views
6

iOS 앱을 개발 중입니다. 앱에는 다양한 '영역'이 있으며 사용자는 '사물'을 게시 할 수 있습니다. 같은 지역을 시청하는 다른 사용자는 게시 된 것을 휴대 전화로 보내야합니다 (단, 앱이 실행중인 경우에만 해당).XMPP를 사용하여 iOS 앱 실행에 실시간 정보 전송

나는 RESTful API를 사용하여 Django 백엔드에서 작업을 시작했습니다. Amazon Web Services,에 백엔드를 호스팅하고 무언가가 '영역'에 추가 될 때마다 Amazon Simple Queue Service을 사용하여 업데이트 시간과 '영역'을 대기열에 배치 할 계획입니다. 큐에있는 항목을 처리하는 Python 앱을 만들어 데이터베이스를 쿼리하여 어떤 사용자가 새로운 '사물'을 다운로드 할 수 있는지 확인합니다. 현재이 부분은 Apple Push Notification을 전화로 보내고 앱에 JSON 형식으로 새 데이터를 가져 오는 간단한 RESTful 요청을 실행할 수 있습니다.

그러나 XMPP은 (iOS 측에서 XMPPFramework을 사용하는) 더 나은 솔루션이라고 생각하며 향후 Android를 지원할 수 있습니다.


나는이 목적을 위해 XMPP를 사용하는 방법에 대한 연구를 많이 해봤지만 문서는 사용자가 XMPP 계정을 설정해야한다는 것을, 공공 XMPP 네트워크를 사용하여이 될 것이라고 제안하고있다 비 대화 정보를 보내는 방법이 불분명 함.

이 프로젝트에서는 서버에서 사용자 장치로 정보를 보내기 위해 XMPP 만 사용해야합니다. 필요한 사용자가이 사설 네트워크에서 XMPP 계정을 등록 할 수 있습니다 경우에 따라서는, 개인 XMPP 네트워크이어야한다 (그러나 장면 뒤에, 그들은 응용 프로그램에 전원을 공급 어떤 기술을 알고 있어야합니다.)


XMPP를 사용하여 모바일 앱에 정보를 보낼 수 있습니까? 인터넷에서 많은 답변/자습서는 기본적으로 XMPP 서버와 클라이언트를 사용하여 제안합니다. XMPP 서버가 아닌 다른 것으로 결정된 데이터를 사설 네트워크에 연결하는 방법에 대한 언급이 없습니다.

사전에 당신의 도움을 주셔서 감사합니다 :)

답변

15

예, 가능합니다. 그 이상으로 XMPP를 통해 원하는 모든 것을 보내고받을 수 있습니다.

일반적으로 XMPP는 jabber 채팅 계정에 사용됩니다. 이것은 몇 가지 것을 의미합니다.

  1. 각 사용자는 서버에서 사용자로 설정해야합니다. 이것은 서버가 메시지를 푸시 할 클라이언트를 알 수 있도록하기위한 것입니다. 무작위 사용자/패스를 설정하고 앱에 직접 연결하는 것은 그리 어렵지 않습니다.

  2. 채팅 정보를 보내는 것은 발신자와 수신자가 있다는 것을 의미합니다. 귀하의 경우에는 보낸 사람을 무시할 수 있지만 메시지가 올 수있는 곳이 여러 개인 경우 유용 할 수 있습니다.

  3. 메시지에는 원하는 정보가 포함될 수 있습니다. 나는 완전히 기억할 수 없다. (XMPP를 사용한 이후로는 오랜 시간이 걸렸다.)하지만 실제 메시지 자체 (또는 json 또는 무엇이든) 내에서 XML을 전송하거나 메시지에 여분의 XML을 첨부하고 그냥 떠날 수 있다고 생각한다. 메시지 자체는 비어 있습니다 (또는 공칭 값).

시작하려면 XMPP 서버가 필요합니다.이것을 웹 서버에 설치할 수 있습니다 (아마 AWS에 설치할 수 있다고 생각되지만 확실하지 않습니다). 이것은 내가 항상 사용하는 서버 인 Openfire입니다. 설정하고 사용하기가 매우 쉽습니다 (모든 것을 설정하는 데 사용할 수있는 멋진 웹 인터페이스가 있습니다). 이렇게하면 메시지를 보내고 모든 것을 "비공개"로 만들 수 있습니다. 즉, 잠재적으로 공용 재버 네트워크에 연결할 수는 있지만 서버 액세스를 제한 할 수도 있습니다.

다음으로 웹 기반 API가 필요합니다. 좋은 PHP 프레임 워크 인 xmpphp은 API 설정에 도움이 될 것입니다. 이 API를 사용하면 Python 스크립트 (예 : post req to curl)에서 iphone으로 전송할 xmpp 서버로 메시지를 보낼 수 있습니다. 메시지를 다시 보내지 않으려면 모든 설정이 필요합니다. PHP를 사용하여 XMPP 메시지를 듣는 것은 물고기의 다른 주전자입니다!

명심해야 할 것은 서버에 로그인하여 "듣기"여부를 알 수 있도록 앱에서 상태를 전송해야한다는 것입니다. 다시 말하지만,이 모든 것을 합리적으로 잘 문서화되어 있다면 인터넷에서 찾을 수 있습니다 (나는 정확하게 기억할 수없는 정확한 설명과 밖). 따라서 파이썬/PHP 스크립트에서 메시지를 보내려는 사용자가 현재 "로그온"하고 "듣고"있는지 테스트 할 수 있습니다. 그렇지 않은 경우 푸시 알림을 구현하고 푸시 알림을 보내야합니다. 만약 당신이 이것에 대해 확신이 없다면 urban airship이라는 환상적인 서비스가 있습니다. 한 달에 1,000,000 회의 푸시 알림을 무료로 전송합니다 (이후의 알림은 상당히 합리적입니다). 그렇지 않으면 서비스를 스스로 설정하는 상처의 세계에 대비하십시오! (들었습니다!)

대부분의 질문에 답변되기를 바랍니다. 그것의 꽤 전문적인 주제 (많은 사람들이 XMPP에 대해 알지 못할 것입니다 - 당신이 그것에 대해 알 필요가있을 때만 알 수있는 것들 중 하나). XMPP는 매우 강력하지만 HTTP 요청과 모든 종류의 요청을 반복하는 것보다 훨씬 나은 솔루션입니다. 인터넷에서 정보를 찾을 수 있다면 꽤 많은 정보가 있지만 정보를 해석하는 방법에 대해서는 약간 영리해야합니다. 아직 주류에서 iPhone으로 옮겨 가지 않은 정보 중 하나입니다. 내 의견으로는).

편집 ... 한 번 더

드롭 아웃주의 일 - 인터넷 드롭 아웃 등. 그것은 명백하게 들리지만 항상 나를 물 듭니다! 때때로 인터넷이 끊어지고 XMPP 연결을 다시 연결해야한다는 것을 잊어 버리십시오. 사람들이 백그라운드에서 앱을 넣은 다음 나중에 다시 돌아 오는 경우 Esp. :) 필요할 때 다시 연결하는 것을 잊지 마십시오.

+0

정말 고마워요, 그래서 내가 읽었던 가장 훌륭하고 유용한 대답이었습니다. XMPP 및 모바일 앱 사용에 대해 내가 이해하지 못했거나 알지 못했던 모든 것을 매우 명확하게 설명했습니다. D –

+0

글쎄, 감사합니다. 감사합니다. :) 그동안 (나는 당신이 정말로 매일 XMPP를 사용하지 않는다는 것을 알았다! 롤)하지만 더 이상 나를 도울 수 있다면, 트위터 (@ 트라이 슨)에서 나를 찾을 수있다. –

+0

@ ThomasClayson-XEP -0234를 사용하여 XMPP를 통해 이미지 및 비디오를 보낼 수 있습니까? – iEinstein