안녕하세요.
앞전에 몇번등록을 했는데, 답변을 잘 해주셔서 이제 마지막 단계인것 같습니다.
php 페이지에서 푸시를 보내는데, 실제 동작은 하지 않아 문의 드립니다.
아래의 노랑 부분은 어떠한 메소드가 호출되도 서버단엔 저장이 되게끔 구현이 되어있습니다.
php 소스도 잘정리된 블로그를 참조 하였구요, 결과 메세지가 나오는데..........
{"multicast_id":6087232423423780029729,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:134123442653371%846851f8cf9fd7ecd"},{"message_id":"0:13419823423453539%94722f8cf9fd7ecd"}]}
위에처럼 나옵니다...
success 값으로 1은 제대로 나오는데, 서비스가 호출이 되지 않은것 같아서요.....
message_id : 0: 5654654........................ 이게 메세지가 보내지지 않은건지 뭔지 찾아봐도 알 수가 없네요...
우선 php페이지 실행시 정상적으로 처리되는것 같은데, 서비스가 호출이 죄지 않은것 같아서요.....
답변 부탁 드리겠습니다.
감사합니다.
php 소스 **************************************************************
$headers = array(
'Content-Type:application/json',
'Authorization:key=AIzaSyD9G9bduxuqoR79iVRomfY_dif89PDJsdn
);
$arr = array();
$arr['data'] = array();
$arr['data']['msg'] = "gcm으로 보낼 메시지를 쓰면 된다.";
$arr['registration_ids'] = array();
$arr['registration_ids'][0] = "APA91bEu30GLgn2ri98BGbv-pPG_CzBS-YB5nH1oTvmZmi0d3zo4DXK_U1fTNShTNPw8_fdDSFefiopjef980sdlkjsdfl-mVTsN2kVVQjwuqCR5gowmfLPMovd4SnqLbQ-difmksdjkdfj";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/send');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($arr));
$response = curl_exec($ch);
echo $response;
curl_close($ch);
public class GCMIntentService extends GCMBaseIntentService{
public GCMIntentService() {
super(StringLib.STRING_GCM_KEY);
}
@Override
protected void onRegistered(Context context, String registrationId) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
GCMDataManagerJson gcmDataMAnager = new GCMDataManagerJson();
gcmDataMAnager.setContactList(registrationId,tm.getLine1Number());
}
@Override
protected void onUnregistered(Context context, String str) {
GCMDataManagerJson gcmDataMAnager = new GCMDataManagerJson();
gcmDataMAnager.setContactList(str+" : ","onUnregistered");
}
@Override
protected void onMessage(Context context, Intent intent) {
GCMDataManagerJson gcmDataMAnager = new GCMDataManagerJson();
gcmDataMAnager.setContactList(intent.getStringExtra("message")+" : ","onMessage");
}
@Override
protected void onError(Context context, String errorId) {
GCMDataManagerJson gcmDataMAnager = new GCMDataManagerJson();
gcmDataMAnager.setContactList(errorId+" : ","onError");
}
@Override
protected boolean onRecoverableError(Context context, String errorId) {
GCMDataManagerJson gcmDataMAnager = new GCMDataManagerJson();
gcmDataMAnager.setContactList(errorId+" : ","onRecoverableError");
return super.onRecoverableError(context, errorId);
}
}




서버에서는 문제없이 메시지가 전송되셨네요. success:1 한명한테 메시지전송 성공했다는 거구요, 메시지 id가 두개인건 개발자님께서 메시지를 두개를 배열로 보내셨기 때문입니다.
서버단엔 문제가 없고, 클라이언트에서 받은 메시지를 처리해줄 수 있으면 되는데요.
GCMIntentService에서 메시지를 받으면 onMessage를 호출해옵니다. 거기서 메시지를 처리해줘야 하는데 바로 먼가 act를 넣기보다는 쓰레드를 사용하셔서 처리하시면 좋을 것 같습니다.
여기까지는 열심히 검색하시면 다 나오는 내용이에요;;
질문하신지 꽤 시간이 지나셨는데, 해결이 되셨는지 모르겠네요. 아직도 안되셨다면 알려주시면 좀 더 상세히 알려드릴께요. ^^;;