안녕하세요,
제가 FCM 구현하면서 질문이 있는데요.
앱 설치 및 실행시 토큰 생성 후 디비 Insert, 그리고 값 불러와 메시지 보내기를 웹으로는 다 테스트해보니 잘 작동합니다.
그래서 이번엔 앱에서 입력한 문자열 값을, FCM서버에 보내는 php에 보내서 그 php에서 넘겨받은 값을 FCM서버에 보내 푸시가 올수 있게 테스트중이거든요.
아래는 입력한 곳(et_text)에서 버튼(btn_submit)을 눌렀을 때 푸시가 가도록 작성한 곳입니다.
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_img:
break;
case R.id.btn_submit:
String textStr = et_text.getText().toString();
Toast.makeText(this, textStr, Toast.LENGTH_LONG).show();
HttpURLConnection connection;
URL url = null;
try {
url = new URL("xxxx/FCMPushMessage.php");
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true); //서버에 입력 가능하게 세팅한다.
connection.setDoInput(true); //서버에서 출력 내용을 받아오게 세팅한다.
connection.setRequestMethod("POST"); // POST방식을 사용한다.
StringBuffer buffer = new StringBuffer();
buffer = buffer.append("Text").append("=").append(textStr);
OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
wr.write(buffer.toString());
wr.flush(); // 서버에 작성
wr.close(); // 객체를 닫음
// 서버에서 값을 받아오지 않더라도 작성해야함
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer();
String line = null;
connection.disconnect();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
위에가 네이티브 소스 중에 액티비티 연결된 곳이거든요.
입력한 값을 string으로 바꿔서 POST에 싣고, FCMPushMessage.php에 보냅니다.
그리고 php에서는
....
...
$Text = $_POST['Text'];
$imgsrc = "이미지경로"
$message = array("message" => $message, "imgsrc" => $imgsrc);
$message_result = send_notification($tokens, $message);
echo $message_result;
echo "<br>PushMessage OK";
이런식으로 값을 넘겨받아 send_notification을 실행하거든요. 이렇게 하면 푸시가 오질 않아서요.
그냥 저 php를 바로 주소창에치면 넘겨받은 메시지는 없기에 메시지는 보이지 않지만 푸시는 오거든요..
혹시 어디가 잘못된건가 해서 여쭤보려고합니다!