마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FCM푸시 기능 관련 질문입니다.

0 추천

기존에 ORDOID-C2기기를 안드로이드 서버로 사용하여 이벤트발생시 푸시메시지를 핸드폰 어플로 전송하는 기능을 사용하고 있었습니다.

한동안 사용을 안하다가 다시사용하려고 하니까 푸시메시지가 작동을 안합니다.

FCM전송관련 변경해야할 사항이 있는지 검색해보고 따라해봐도 잘되지를 않아서 질문을 드립니다.

고수님들의 조언 부탁드립니다.

소스는 아래와 같습니다.

package com.example.doorlockserver;

import com.google.firebase.crashlytics.buildtools.reloc.org.apache.http.HttpEntity;
import com.google.firebase.crashlytics.buildtools.reloc.org.apache.http.client.entity.UrlEncodedFormEntity;

import org.apache.http.HttpResponse;
//import org.apache.http.client.HttpClient;
//import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONObject;

import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.List;

/**
 * Created by Chung on 2016-12-16.
 */

public class HttpJsonPostThread extends Thread {

    private final String address;
    private final JSONObject jsonobj;

    public HttpJsonPostThread(String address, JSONObject jsonobj) {
        this.address = address;
        this.jsonobj = jsonobj;
    }

    @Override
    public void run() {
        try {
            MainActivity.report("error", "Json request: " + jsonobj.toString());
            HttpClient httpclient = new DefaultHttpClient();
            org.apache.http.client.methods.HttpPost httpPost = new HttpPost(address);
            StringEntity se = new StringEntity(jsonobj.toString());
            httpPost.setEntity(se);
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            httpPost.setHeader("Authorization", "key=AAAA7_Kq29U:APA91bE9B2_bC8KU7TP1YlK7ZCv3gSsoXQLIySKuAJC5Bu4kD1X3k8FQKpj6IZiNbkFEoraCdlEvzB7ZNVbaCj6DQBALFvYWPBP-VazXp3I6IwvLnpVcKyRx3MsupmFtVJtNayGUxMRA");
            HttpResponse httpResponse = (HttpResponse) httpclient.execute(httpPost);
            InputStream inputStream = httpResponse.getEntity().getContent();
            StringBuilder sb = new StringBuilder();
            int b;
            while ((b = inputStream.read()) >= 0) sb.append((char) b);
            inputStream.close();
            MainActivity.report("error", "Json response: " + sb.toString());

        } catch (Exception e) {
            StringWriter w = new StringWriter();
            e.printStackTrace(new PrintWriter(w));
            MainActivity.report("error", w.toString());
        }
    }

    public static boolean pushTextMessage(String title, String message, String token) {
        try {
            JSONObject jsonobj = new JSONObject();
            jsonobj.put("data", new JSONObject());
            jsonobj.getJSONObject("data").put("title", title);
            jsonobj.getJSONObject("data").put("text", message);
            jsonobj.put("to", token);
            Thread thread = new HttpJsonPostThread("https://fcm.googleapis.com/fcm/send", jsonobj);
            thread.start();
            return true;

        } catch (Exception e) {
            StringWriter w = new StringWriter();
            e.printStackTrace(new PrintWriter(w));
            MainActivity.report("error", w.toString());
        }

        return false;
    }

    public static void pushTextMessage(String title, String message, List<String> tokens) {
        int nsuccess = 0;
        for (String token : tokens) if (token.length() > 0) if (pushTextMessage(title, message, token)) nsuccess++;
    }
}

 

가르르 (120 포인트) 님이 2023년 1월 13일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...