2010-01-16 4 views
21

서버와 양방향으로 통신해야하는 Android 앱을 개발 중입니다. 그 말은, 서버 또는 장치가 언제든지 메시지 사이에 임의의 시간 간격으로 메시지를 보낼 수 있다는 의미입니다. 장치에서 서버로 데이터를 보내는 것이 일반적이며 잘 이해할 수있는 작업이지만 서버에서 장치로가는 가장 좋은 방법은 무엇인지 확실하지 않습니다.서버에서 Android 기기로 데이터를 전송하는 가장 좋은 방법

디바이스를 주기적으로 폴링하는 것은 대기 시간과 배터리 소모로 인한 나쁜 아이디어 일 수 있다고 생각하지만이 옵션을 고려할 의향이 있습니다. 현재 내 계획은 이메일 - SMS 브릿지를 통해 서버에서 문자 메시지를 보내고, 내 앱이 이러한 메시지를 수신하고 처리하는 서비스를 실행하게하는 것입니다.

이 시나리오에 대한 모범 사례가 있으면 텍스트 메시지를 사용할 때 고려하지 못한 단점이 있습니다. 이 질문을 위해 사용자가 무제한 텍스트 데이터 요금제를 사용한다고 가정하여 텍스트 당 비용을 지불하는 것은 문제가되지 않습니다.

답변

18

여기가 XMPP입니다. :)

Android 맞춤형 버전은 Smack Java 라이브러리 또는 asmack을 참조하십시오.

그리고 수명이 긴 양방향 통신을 위해 asmack을 사용하는 Android 앱의 경우 BuddyDroid을 참조하십시오.

편집, 회신 아래에 의견을합니다 :
귀하의 경우이 방법의 장점은 당신이 SMS의 대기 시간 (또는 비 보장 배달)없이 즉시 고객에게 무제한 양을 밀어 수 있다는 것입니다. 또한 XMPP를 사용하면 연결 보안, 압축 및 자체 확장 기능을 계층 적으로 추가 할 수 있습니다.
— 또한 타겟팅 대상이 누구인지 또는이 방법이 적용되는지 여부는 모르겠다. 무제한 텍스트 요금제를 사용하는 사용자에게 의존 할 필요는 없지만 물론 데이터 요금제가 필요합니다.

관심있는 서버를 찾고있는 경우 (일부 오픈 소스 서버가있는 경우) Prosody 또는 Tigase을 참조하십시오.

그러나 질문을 다시 읽으면 낮은 액티비티를 암시하는 것처럼 보이므로 응용 프로그램이 무엇이든간에 XMPP 세션을 유지 관리 (로그인, 연결 손실 감지, 다시 연결) 할 가치가 없습니다.

마지막으로 .. 안드로이드 장치에서 들어오는 SMS 메시지를 가로채는 동안 이 사용자의 메시지 수신함에 나타나지 않도록 할 수 없습니다. 따라서 수신 SMS를 처리 할 수 ​​있지만 메시지를 무시하도록 시스템에 알릴 수는 없습니다. 당신이 다른 응용 프로그램으로 전달되기 전에, 당신은 다음과 같은 cancel 들어오는 SMS 방송에 당신을 허용하는 " ordered broadcast"을 받게됩니다 SMS-듣고 intent-filter을에 android:priority 속성을 정의하는 경우 :
나는 최근에이 사실이 아니다 발견 SMS받은 편지함. 이 기능은 Android 1.6 이상에서만 작동합니다.

+0

이것은 재미있을 것 같고, 나는 분명히 그것에 대해 살펴볼 것입니다. XMPP는 실제로 SMS 메시지를 사용하지 않는다는 것 외의 이유로 인해 SMS보다 선호됩니까? – newdayrising

+0

나는 물건의 전체 하중을 포함하도록 내 원래의 답변을 편집했습니다. –

+1

SMS 메시지를 가로채는 것에 대한 매우 유용한 정보를 보내 주셔서 감사합니다! – newdayrising

관련 문제