%@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();
}
%>