티스토리 뷰

코드 파일

GCMBroadcastReceiver.java


GCMInfo.java


GCMIntentService.java


MainActivity.java


AndroidManifest.xml


gcm-server.jar


gcm.jar


json-simple-1.1.1.jar


activity_main.xml


구글 푸시 서비스(GCM)을 사용한 알림 WorkFlow

(1~4 과정)

우선 GCM에 Google Project Key와 현재 어플리케이션의 정보를 이용하여 GCM Registered ID를 받고 그 ID를 Web Server의 Database table에 Insert한다.

registerButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
try {
// 단말 등록하고 등록 ID 받기
registerDevice();
} catch(Exception ex) {
ex.printStackTrace();
}
}
});
/**
* 단말 등록
*/
private void registerDevice() {

RegisterThread registerObj = new RegisterThread();
registerObj.start();
}
class RegisterThread extends Thread {
public void run() {

try {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
String regId = gcm.register(GCMInfo.PROJECT_ID);
task_insert = new phpInsert();
task_insert.execute("http://en605.woobi.co.kr/incident_alarm/gcm_regid.php?id=" + regId);
println("푸시 서비스를 위해 단말을 등록했습니다.");
println("등록 ID : " + regId);


} catch(Exception ex) {
ex.printStackTrace();
}

}
}
private class phpInsert extends AsyncTask<String, Integer,String> {

/*
* phpInsert task_insert;
* task_insert = new phpInsert();
* id = idTxt.getText().toString();
* task_insert.execute("http://en605.woobi.co.kr/incident_alarm/gcmtest_insert.php?id=" + this.id);
* */

@Override
protected String doInBackground(String... urls) {
StringBuilder resultText = new StringBuilder();
try{
// 연결 url 설정
URL url = new URL(urls[0]);
// 커넥션 객체 생성
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// 연결되었으면.
if(conn != null){
conn.setConnectTimeout(10000);
conn.setUseCaches(false);
// 연결되었음 코드가 리턴되면.
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
for(;;){
// 웹상에 보여지는 텍스트를 라인단위로 읽어 저장.
String line = br.readLine();
if(line == null) break;
// 저장된 텍스트 라인을 jsonHtml에 붙여넣음
resultText.append(line);
}
br.close();
}
conn.disconnect();
}
} catch(Exception ex){
ex.printStackTrace();
}
return resultText.toString();

}

protected void onPostExecute(String str){
if(str.equals("1")){
Toast.makeText(getApplicationContext(),"DB Insert Complete.",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"DB Insert Failed.",Toast.LENGTH_LONG).show();
}

}
}


[en605@h6 incident_alarm]$ pwd

/home/1/en60566/www/incident_alarm

-rw-r--r-- 1 en605 user  497 2015-07-19 01:46 gcm_regid.php



<?php

        define("HOST","en605.woobi.co.kr");

        define("USER","en605");

        define("PASSWD","1230");

        define("DB_NAME","en605");


        $connect = mysql_connect(HOST, USER, PASSWD) or die("Fail to connect to SQL Server");


        mysql_select_db(DB_NAME, $connect);


        /* _GET[fIELD1] is the first parameter that you have get from Adnroid Applcation */

        $sql = "INSERT INTO gcmtest(id) VALUES('$_GET[id]')";


        session_start();


        $result = mysql_query( $sql, $connect);

        mysql_close($connect);

        echo "$result";

?>


















댓글
댓글쓰기 폼
공지사항
Total
93,266
Today
0
Yesterday
12
«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함