adb shell을 이용하여 테스트 하기.
여러분들께 도움이 될까 해서 퍼왔습니다.
Step 1: AndroidManifest.xml에서 GCM Broadcast Receiver를 찾는다. (예를 들어, net.npike.android.gcm.GCMBroadcastReceiver, 패키지 이름은 net.npike.android)
<receiver
android:name="net.npike.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="net.npike.android"/>
</intent-filter>
</receiver>
Step 2: 테스트 동안에는 다음을 제거해 준다:
android:permission="com.google.android.c2dm.permission.SEND"
Step 3: 명령창을 열어 ADB를 열고
Step 4: 쉘로 들어간다.
adb shell
Step 5: 다음 내용을 입력하고(필요한 부분을 수정한 후):
am broadcast -a com.google.android.c2dm.intent.RECEIVE -n net.npike.android/net.npike.android.gcm.GCMBroadcastReceiver --es "data.alert" "foo"
모든 것이 순조로웠다면 다음과 같은 메시지가 나온다:
Broadcasting: Intent { act=com.google.android.c2dm.intent.RECEIVE cmp=net.npike.android/gcm.GCMBroadcastReceiver (has extras) }
Broadcast completed: result=-1
... 그리고 나면 GCM BroadcastReceiver가 notification을 올리던지 (아니면 GCM BroadcastReceiver가 해야할 다른 작업.)
Step 6: 테스트가 끝났으면 Step #2 에서 제거 했던 부분을 복구 한다.
출처: https://plus.google.com/108612553581259107752/posts/ERVnjUAjsbZ
해당 내용은 GCM 테스트 보다는 Broadcast 테스트에 가깝습니다.
실제 GCM 은 아래 내용으로 테스트 해야 합니다.
https://developer.android.com/google/gcm/http.html
https://code.google.com/p/gcm/source/checkout
간단히 로컬에서 GCM Server 에 메세지 전달하는 내용은
아래와 같이 코드 하셔도 됩니다.
regId 는 클라이언트 소스에서 발췌해야 되며..
console.developers.google.com 에 등록한
Certificate fingerprint (SHA1) 이 적용된 같은 앱에서
끄집어 와야 합니다.
gcm-server.jar , json-simple-1.1.1.jar 필요
String API_KEY = "AIzaSyAbY40LuCIhvxxxxxxxxxxxxxx";
String regId = "APA91bFm4j4sokoTKDv3cxbbHsFnNSipL3mtE-FjF7yPHFecWrHkFp3YJ8fzZCR8SRroKGAg_99V1UJ-Vt_23UoolWhSeVGnpxXnOKw5iyMqzpM9R5YZRUxxxxxxxxxxxxxxxxxxxxxxx"
Sender sender = new Sender(API_KEY);
// 전송하고 싶은 메세지.. Client 에서 번들에서 꺼낼때 message 로 꺼내시면 됩니다.
Message msg = new Message.Builder().addData("message", "test....테스트").build();
// 5는 재시도 횟수
Result result = sender.send(msg, regId, 5);
if (result.getMessageId() != null) {
System.out.println("Success");
} else {
String error = result.getErrorCodeName();
System.out.println("Error : " + error);
}