본문 바로가기

개발/안드로이드 개발

android send SMS

안드로이드 문자메시지 전송과 관련해서 어려움을 겪고있습니다.

문자메세지를 전송(Intent를 통해 메세지창에서 전송하도록 하는 것 말고 직접 전송하는것에서)하는 방법에는 여러가지(?) 방법이 있겠지만 가장 일반적인 방법은 api를 이용하는 방법이겠네요.

1. Android Api 이용 방법




그런데 젼 위에 contentValues를 이용해 DB에 넣는부분은 안되는것 같네요(갤스2 HD LTE) Uri경로가 틀린건지 검색하면 많이 나와요.

2. invoke를 이용해서 보내는 방법 


위 방법은 SMS 전송시 사용되는 pdu를 직접 만들어서 강제로 send를 하는 방법인것 같은데

젼 테스트를 해보지 못했네요.(갤스2 HD LTE에서는 위코드에서 NoSuchMethodException이 발생합니다. 한마디로 못쓴다는거죠.;;)


일단 찾아본건 위2개가 가장 일반적으로(?)사용되는 방법이고 제 경우엔 2명이상 동시에 메세지를 보내야한다 라는 부분에서 버그(?)가 발생하네요. sms를 보낼때 sleep을 두어 전송 딜레이를 두었는데 정말 안드로이드는 단말기빨(?) 때문에 미쳐버릴것같습니다.


참고로 찾아본 정보들은 링크랑 간단한 설명만 넣고 끝내겠습니다.

1. SMSC : SMS전송을 위한 게이트웨이정도라고 합니다. 단말기에서 SMS를 전송할때는 무조건 SMSC를 통해서 전송된다고 하네요. 안드로이드폰에서는 기본적으로 *#*#4636#*#*을 통화모드에서 누르면 SMSC를 확인할 수 있는데 갤럭시폰에서는 안되네요. 베가LTE EX에서 확인했습니다.

WIKI : http://en.wikipedia.org/wiki/Short_message_service_center

blog : http://khlim76.egloos.com/3902505


2. USSD : SMS와 비슷하면서도 전혀 별개의 서비스(?)라고 볼수 있습니다. SMS와 마찬가지로 문자를 전송하는데 SMSC를 거치지 않기때문에 SMS보다 7배정도 빠르다고 합니다. 그리고 현존하는 모든 단말기에서 사용할 수 있는데 USSD와 관련해서 검색해보면 보안과 관련된 사항들이 많이 나오네요. 해킹에 쓰일 수 있다는것이겠죠??

wiki : http://en.wikipedia.org/wiki/USSD_Gateway

blog : http://blog.naver.com/PostView.nhn?blogId=kelimoro&logNo=40001036042


3. SMPP : SMS관련 프로토콜인듯 합니다. android에 어떻게 해볼까 했는데 id, pw등이 파라미터로 필요하다고 하네요. 서버가 있어야 하는건지 정확히는 모르겠습니다.

wiki : http://en.wikipedia.org/wiki/SMPP

blog : http://blog.naver.com/PostView.nhn?blogId=kkson50&logNo=120027291244&redirect=Dlog&widgetTypeCall=true


몇가지가 더 있었던것 같은데 메세지전송을 시도하면서 중요하게봣던부분들은 위 세가지정도겠네요.

그리고 좀 애매한게 apiDemo에서는 sendTextMessage를 사용하도록 되어있는데

sendDataMessage(destinationAddress, scAddress, destinationPort, data, sentIntent, deliveryIntent)

sendMultipartTextMessage(destinationAddress, scAddress, parts, sentIntents, deliveryIntents)

2개의 메소드가 더있네요. 딱봐도 MMS전송과 관련된 부분인데

MMS전송으로 하려고 했었는데 이건 통신사별로(?) 혹은 단말기마다 너무 특성을 많이 타서 포기햇습니다.