다수의 대상자에게 메시지 보내기 두 번째 단계인 대상자 발송의 경우 기본 메시지 전달 후 수신 받은 메시지 IDX(msgidx)와 수신 대상 목록인 식별자(identity) 대상 목록 및 필수 값인 appkey/appsecret/customerkey를 파라미터에 담아 API서버로 보내면 해당 내용에 대해 처리 후 결과 값을 반환합니다.
결과 값에 대해 메시지 전송을 완료할 수도, 대상자를 더 보낼 수도 있습니다.
JAVA Version
Github에 올려져 있는 샘플소스는 아래 설명된 내용 중 중복된 부분들을 method화 하여 처리하므로 약간의 차이가 있을 수 있으나, 기본 발송 방식의 설명이므로 해당 중복되는 부분을 풀어서 설명하도록 하겠습니다.
다수 발송의 첫 단계인 기본 메시지 발송의 부분은 앞서 설명한, 일괄 발송 및 단일 건 발송과 마찬가지로 필수값 및 메시지 부가 정보를 전송하는 것과 동일합니다.
1)파라미터를 담을 List 객체를 선언해 전달할 값들을 셋팅 합니다.
List <BasicNameValuePair> params =newArrayList<BasicNameValuePair>();
3) 푸시를 받을 대상자들을 셋팅 합니다.
한 번에 보내는 대상자는 500건 이하로 해야 합니다.
params.add (newBasicNameValuePair("identity", 수신받을 대상자의 식별자1)); // (필수)params.add (newBasicNameValuePair("message", 수신받을 대상자에게 보낼 메시지1)); // (필수)params.add (newBasicNameValuePair("prv_attachefname", 수신받을 대상자에게 보낼 이미지1)); //(선택)params.add (newBasicNameValuePair("prv_linkurl", 수신받을 대상자에게 보낼 웹링크1)); // (선택)params.add (newBasicNameValuePair("prv_title", 수신받을 대상자에게 보낼 제목1)); // (선택)params.add (newBasicNameValuePair("identity", 수신받을 대상자의 식별자2)); // (필수)params.add (newBasicNameValuePair("message", 수신받을 대상자에게 보낼 메시지2)); // (필수)params.add (newBasicNameValuePair("message", 수신받을 대상자에게 보낼 메시지2)); // (필수)params.add (newBasicNameValuePair("prv_attachefname", 수신받을 대상자에게 보낼 이미지2)); //(선택)params.add (newBasicNameValuePair("prv_linkurl", 수신받을 대상자에게 보낼 웹링크2)); // (선택)params.add (newBasicNameValuePair("prv_title", 수신받을 대상자에게 보낼 제목2)); // (선택)… 중략 …params.add (newBasicNameValuePair("identity", 수신받을 대상자의 식별자n)); // (필수)params.add (newBasicNameValuePair("message", 수신받을 대상자에게 보낼 메시지n)); // (필수)Params.add (newBasicNameValuePair("prv_attachefname", 수신받을 대상자에게 보낼 이미지n)); //(선택)params.add (newBasicNameValuePair("prv_linkurl", 수신받을 대상자에게 보낼 웹링크n)); // (선택)params.add (newBasicNameValuePair("prv_title", 수신받을 대상자에게 보낼 제목n)); // (선택)
4) 기존 HttpClient의 DefaultHttpClient를 이용한 원격 접속 방식이 deprecated 된 이유로 HttpsURLConnection을 이용하여 접속합니다. 물론 deprecated 되었다고 해서 DefaultHttpClient 방식이 동작하지 않는 것은 아닙니다. 해당 방식 역시 github에 올려져 있는 샘플 소스에 구현되어 있습니다.
예제: FingerpushDaoImpl.sendHttpsExe(String callUrl, List <BasicNameValuePair> params))
전달하는 파라미터는 UTF-8로 인코딩 하여 전달해야 합니다.
예제: 샘플의 FingerpushDaoImpl.sendHttpsUrlConExe(String callUrl, List <BasicNameValuePair> params)
6) 해당 결과로 받은 내용을 JSON 형식으로 받아 파싱한 결과에 따라 다음 프로세스(대상자 발송)를 준비합니다. 샘플 파일에서는 JSON 형식의 String 문자열을 JSON Object로 바꾸어 파싱하기 위해 sourceforge에서 배포하는 JSON-lib (http://sourceforge.net/projects/json-lib/files/)를 사용합니다.
결과값 result : 200, processcode : 20002 에 따라 대상자를 더 보낼 수도 메시지 전송을 마칠 수도 있습니다.
jsonString =sendMessage(strAppkey, strAppSecret, strCustomerKey, strMsg, callUrl);JSONObject jsonObj =JSONObject.fromObject(jsonString);String result = (String)jsonObj.get("result"); // 결과 코드String msgIdx = (String)jsonObj.get("msgIdx"); // 메시지 등록 후 반환되는 메시지 번호String processCode = (String)jsonObj.get("processCode"); // 메시지 발송 단계, 20001 메시지 등록 시작, 20002 대상자 설정, 20003 메시지 설정 완료
String message = (String)jsonObj.get("message"); // 반환된 결과 메시지
PHP Version
Github에 올려져 있는 샘플소스는 아래 설명된 내용 중 중복된 부분들을 method화 하여 처리하므로 약간의 차이가 있을 수 있으나, 기본 발송 방식의 설명이므로 해당 중복되는 부분을 풀어서 설명하도록 하겠습니다.
다수 발송의 첫 단계인 기본 메시지 발송의 부분은 앞서 설명한, 일괄 발송 및 단일 건 발송과 마찬가지로 필수값 및 메시지 부가 정보를 전송하는 것과 동일합니다.
1) 기본 앱 정보를 세팅합니다.
// 공통 필수 $key =array('appkey'=>'[발급받은 appkey]','appsecret'=>'[발급받은 appsecret]','customerkey'=>'[발급받은 customerkey]',);
2)푸시를 받을 대상자와 받을 메시지들을 세팅합니다.
만일 발송 대상이 남아 있다면, 해당 결과 수신 후 남은 대상자에 따라 몇 회에 걸쳐 수신 대상자 목록을 발송합니다. (한 번에 최대 500건 단위)
이때 '메시지 기본 정보 발송'에서 통신으로 받은 결과값 중 msgidx를 포함 시킵니다.
// 회원 목록 identity$members = ["member1","member2"];$users =array(http_build_query($key),"msgidx=". $msgidx // (1) 번 메시지 등록시 반환된 msgIdx 값 (필수));for ($i =0; $i <count($members) ; ++$i) { $option =array("identity"=> $members[$i],// identity (필수)"message"=> $members[$i] ."님 안녕하세요.",// 메시지 (필수)"prv_attachefname"=>"","prv_linkurl"=>"","prv_title"=>"" ); $users[] =http_build_query($option);}if( !count($users) ) {echojson_encode(array("result"=>"4040","message"=>"전송 대상 정보가 없습니다." ));exit();}