<%@page import="java.nio.CharBuffer"%> <%@page import="webchurch.push.model.PushId"%> <%@page import="java.util.ArrayList"%> <%@page import="com.google.android.gcm.server.*"%> <%@page import="webchurch.push.util.PushName"%> <%@page import="java.util.List"%> <%@ page import="java.net.URLEncoder" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<% try { String id = request.getParameter("id"); String ip = request.getParameter("ip"); //System.out.println("Android Called"); //System.out.println("Init Ids - start"); pushDTO.setApiKey(pushDAO.getApiKey(pushDTO.getCommunityId(), PushName.ANDROID)); out.println(pushDTO.getApiKey()); List regIds = pushDAO.getIds(pushDTO, PushName.ANDROID); out.println(regIds.size()); out.println(regIds); //System.out.println("Init Ids - end"); //System.out.println("Init Values - start"); final String MESSAGE_ID = String.valueOf(Math.random() % 1000 + 1); final boolean SHOW_ON_IDLE = false; final int LIVE_TIME = 1 * 60 * 60; //GCM 메시지 유효시간 final int RETRY = 4; final String GCM_URL = "https://fcm.googleapis.com/fcm/send"; //System.out.println("Init Values - end"); //System.out.println("Init Encoding - start"); out.println("
MSG : " + new String(pushDTO.getMsg().getBytes("iso-8859-1"), "euc-kr")); out.println("
"); //String tempMsg = new String(pushDTO.getMsg().getBytes("iso-8859-1"), "euc-kr"); String tempMsg = new String(pushDTO.getMsg().getBytes("iso-8859-1"), "euc-kr"); out.println(pushDTO.getMsg()); out.println("
tempMsg : " + tempMsg); //String tempTitle = new String(pushDTO.getTitle().getBytes("iso-8859-1"), "utf-8"); String tempTitle = "tt2"; out.println("
tempTitle : " + tempTitle); //pushDTO.setMsg(new String(pushDTO.getMsg().getBytes("ISO-8859-1"), "euc-kr")); //pushDTO.setTitle(new String(pushDTO.getTitle().getBytes("ISO-8859-1"), "euc-kr")); //System.out.println("Init Encoding - End"); //System.out.println("Init Sender - start"); //Sender sender = new Sender(pushDTO.getApiKey()); out.println("
"); out.println(pushDAO.getApiKey(pushDTO.getCommunityId(), PushName.ANDROID)); Sender sender = new FCMSender("AIzaSyCnHDriBjsyph2lXi91GrydoPuUI0XQlK4"); //System.out.println("Init Sender - end"); Message message = new Message.Builder().collapseKey(MESSAGE_ID) .delayWhileIdle(SHOW_ON_IDLE).timeToLive(LIVE_TIME) .addData("msg", URLEncoder.encode(tempMsg,"EUC-KR")) .addData("link", pushDTO.getLink()) .addData("title", URLEncoder.encode(tempTitle,"EUC-KR")).build(); //System.out.println("Init Message"); for(String str : regIds){ out.println(str); } MulticastResult result = sender.send(message, regIds, RETRY); //System.out.println("Send Message"); if (null != result) { System.out.println("Is Not Null"); List resultList = result.getResults(); List ids = new ArrayList(); List changeIds = new ArrayList(); int i = 0; for (Result rs : resultList) { if(rs.getMessageId() != null){ //동일한 기기가 여러개의 아이디를 가지고 있음 if(rs.getCanonicalRegistrationId() != null){ out.println("

"); out.println("rs : " + rs.getCanonicalRegistrationId()); out.println("

"); out.println("regIds : " + regIds.get(i)); out.println("

"); out.println(new PushId(regIds.get(i), rs.getCanonicalRegistrationId())); out.println("

"); changeIds.add(new PushId(regIds.get(i), rs.getCanonicalRegistrationId())); } } else { //해당 기기가 삭제됨 if (rs.getErrorCodeName().equals(Constants.ERROR_NOT_REGISTERED)) { ids.add(regIds.get(i)); } } i +=1; } // 삭제 id 목록 if(ids.size() > 0){ out.println("
Delete Ids :
"); List riRs = pushDAO.removeIds(ids); for(String str : riRs){ out.println(str + "
"); } } // 변경 id 목록 if(changeIds.size() > 0){ out.println("
Change Ids :
"); List ciRs = pushDAO.updateIds(changeIds); for(PushId pi : ciRs){ out.println(pi + "
"); } } } //tempTitle pushDTO.setMsg(tempMsg); pushDTO.setTitle(tempTitle); pushDAO.insertLog(pushDTO, id, ip); } catch (Exception e) { out.println(e); out.println(e.getMessage()); System.out.println(e.getMessage()); e.printStackTrace(); } %>