2-3. 메시지 전송 종료 정보 발송
HTTPS Parameters
메시지 기본 셋팅 및 해당 푸시 메시지를 받을 대상자 셋팅이 모두 끝나 메시지 전송을 종료하고 싶다면, 해당 메시지 IDX에 종료 파라미터를 실어 API Server에 전달합니다.
API Server로 전달해야 할 파라미터들은 아래 표를 참조해 주세요.
[표 2.6] 다수 발송 메시지, 메시지 전송 종료 HTTPS, Parameters
appkey
필수
-
Application key
appsecret
필수
-
Application Secret
customerkey
필수
-
Customer key
msgidx
필수
-
메시지를 셋팅하고 돌려받은 메시지 idx 값
isfinish
필수
-
종료 플래그: 값을 Y로 셋팅 함
Response JSON
API서버에서 전달받은 파라미터 처리 후 result가 200, processCode가 20003 이라면, 해당 메시지에 대해 원격 발송 절차가 완료된 것입니다.
{"result" : "200", "msgIdx" : "A1DS33DDSQ2321", "processCode" : "20003", "message" : "메시지 등록이 완료 되었습니다."}
JSON 형태로 제공되는 결과 값 및 각 데이터의 코드값에 대한 설명은 [표 2.3] 발송 JSON 결과의 result code 유형과 [표 2.4] JSON 결과의 processCode code 유형을 참조해 주시기 바랍니다.
또한, 이렇게 원격 발송 처리 완료된 사항은 핑거푸시 사이트의 푸시 발송이력 > 타겟팅 푸시 에서 발송 상태 및 현황을 확인 하실 수 있습니다.
샘플 소스 설명
다수의 대상자에게 메시지 보내기 세 번째 단계인 메시지 셋팅 완료 경우 기본 메시지 전달 후 수신 받은 메시지 IDX(msgidx)와 메시지 셋팅 종료 플래그인 isfinish 파라미터(값 ‘Y’)를 파라미터에 담아 API서버로 보내면 해당 내용에 대해 처리 후 결과 값을 반환합니다.
JAVA Version
Github에 올려져 있는 샘플 소스는 아래 설명된 내용 중 중복된 부분들을 method화 하여 처리하므로 약간의 차이가 있을 수 있으나, 기본 발송 방식의 설명이므로 해당 중복되는 부분을 풀어서 설명하도록 하겠습니다.
다수 발송의 첫 단계인 기본 메시지 발송의 부분은 앞서 설명한, 일괄 발송 및 단일 건 발송과 마찬가지로 필수값 및 메시지 부가 정보를 전송하는 것과 동일합니다.
1) 파라미터를 담을 List 객체를 선언해 전달할 값들을 셋팅 합니다.
List <BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
2) 필수값들을 셋팅 합니다.
List <BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
params.add (new BasicNameValuePair("appkey", 애플리케이션 키)); // (필수)
params.add (new BasicNameValuePair("appsecret", 애플리케이션 시크릿)); // (필수)
params.add (new BasicNameValuePair("customerkey", 발급받은 커스터머키)); // (필수)
params.add (new BasicNameValuePair("isfinish", "Y")); // 푸시 메시지 종료(필수)
3) 기존 HttpClient의 DefaultHttpClient를 이용한 원격 접속 방식이 deprecated 된 이유로 HttpsURLConnection을 이용하여 접속합니다. 물론 deprecated 되었다고 해서 DefaultHttpClient 방식이 동작하지 않는 것은 아닙니다. 해당 방식 역시 github에 올려져 있는 샘플 소스에 구현되어 있습니다.
예제: FingerpushDaoImpl.sendHttpsExe(String callUrl, List <BasicNameValuePair> params))
전달하는 파라미터는 UTF-8로 인코딩 하여 전달해야 합니다.
예제: 샘플의 FingerpushDaoImpl.sendHttpsUrlConExe(String callUrl, List <BasicNameValuePair> params)
URL url = new URL(callUrl);
trustAllHosts();
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
httpsURLConnection.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
HttpURLConnection connection = httpsURLConnection;
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");
OutputStream post = connection.getOutputStream();
entity.writeTo(post);
post.flush();
connection.connect();
4) 받은 결과는 JSON 타입의 String 이므로 결과에 맞게 변환하여 사용하시는 UI에 적용하시면 됩니다.
JSON 형태로 제공되는 결과 값 및 각 데이터의 코드 값에 대한 설명은 [표 2.2] 발송 JSON 결과와 [표 2.3] 발송 JSON 결과의 result code 유형을 참조해 주시기 바랍니다.
StringBuilder responseStringBuilder = new StringBuilder();
logger.debug("contentType : "+connection.getContentType());
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK){
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
for (;;){
String stringLine = bufferedReader.readLine();
if (stringLine == null ) break;
responseStringBuilder.append(stringLine + '\n');
}
bufferedReader.close();
}
connection.disconnect();
jsonString = responseStringBuilder.toString();
5) 해당 jsonString을 파싱하여 result 값이 200, processCode 값이 20003 인 경우 발송 관련 처리는 모두 완료된 것입니다.
※ JAVA Version 다수 건 발송 샘플
소스 주소
class
com.fingerpush.push.FingerpushDao
com.fingerpush.push.FingerpushDaoImpl
com.fingerpush.push.PushVO
jsp
JSP/sendTargetMore.jsp
PHP Version
Github에 올려져 있는 샘플 소스는 아래 설명된 내용 중 중복된 부분들을 method화 하여 처리하므로 약간의 차이가 있을 수 있으나, 기본 발송 방식의 설명이므로 해당 중복되는 부분을 풀어서 설명하도록 하겠습니다.
다수 발송의 첫 단계인 기본 메시지 발송의 부분은 앞서 설명한, 일괄 발송 및 단일 건 발송과 마찬가지로 필수값 및 메시지 부가 정보를 전송하는 것과 동일합니다.
1) 기본 앱 정보를 세팅합니다.
// 공통 필수
$key = array(
'appkey' => '[발급받은 appkey]',
'appsecret' => '[발급받은 appsecret]',
'customerkey' => '[발급받은 customerkey]',
);
2) 필수값을 세팅합니다. 이때 메시지 기본 정보 발송에서 통신으로 받은 결과값 중 msgidx를 포함시킵니다. [표 2.2] 발송 JSON 결과 참조. 또한 전송 종료임을 알리는 isfinish도 포함시킵니다.
$option = array(
"msgidx" => $msgidx, // (1) 번 메시지 등록시 반환된 msgIdx 값 (필수)
"isfinish" => "Y", // 푸시 메시지 종료 (필수)
);
3) 앱 기본정보와 옵션값을 URL 인코드 한 쿼리 문자열로 생성합니다.
$data = array_merge($key, $option);
$param = http_build_query($data);
4) PHP cURL 라이브러리를 이용하여 핑거푸시 API와 통신합니다.
PHP cURL 라이브러리: https://www.php.net/manual/en/book.curl.php
다수에게 메시지 발송 API URL: https://api-v2.fingerpush.com/rest/sts/v4/setSTSPushs.jsp
cURL을 아래와 같이 HTTPS통신으로 세팅합니다.
$url = ' https://api-v2.fingerpush.com/rest/sts/v4/setSTSPushs.jsp'; // 핑거푸시 다수에게 메시지 발송 API URL
$ch = curl_init (); // cURL 선언
curl_setopt ( $ch, CURLOPT_URL, $url ); // URL 세팅
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false ); // 인증서 체크
curl_setopt ( $ch, CURLOPT_SSLVERSION, 1 ); // SSL 버전 -> 1만 된다.
curl_setopt ( $ch, CURLOPT_HEADER, 0 ); // 헤더 출력 여부
curl_setopt ( $ch, CURLOPT_POST, 1 ); // POST, GET 접속 여부
curl_setopt ( $ch, CURLOPT_TIMEOUT, 30 ); // Time Out 세팅
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 결과값 리턴 여부
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $param ); // parameter
$res = curl_exec ( $ch ); // cURL 실행하고 결과 저장
/* cURL 에러검출 */
$cErrno = curl_errno($ch);
if ($cErrno == 0) $response = $res;
else $response = exit;
curl_close ( $ch ); // cURL을 닫고 자원 반환
5) 전달 받은 JSON 문자열 결과값을 PHP 변수로 변환합니다.
// 1. json 처리시
echo $response;
// 2. object 처리시
$result = json_decode ( $response, true ); // 결과값 JSON 디코드
print_r($result); // 결과 값 출력
6) 해당 결과로 받은 내용을 JSON형식으로 받아 파싱한 결과가 result: 200, processCode: 20003인 경우 발송 관련 처리는 모두 완료된 것입니다.
Last updated