Testing Your Android GCM Broadcast Receiver

2015/08/11 15:43
阅读数 141

Testing Your Android GCM Broadcast Receiver without GCM Messages

So depending on your environment it's kind of a pain-in-the-butt to test Google Cloud Messaging on an actual device.

Wouldn't it be nice if you could just test the code locally that would receive those magical GCM messages?  *You can*.

adb shell is a magical place - a place where you can construct intents and fire them off into the system.

Step 1:  Open your AndroidManifest.xml, locate your GCM Broadcast Receiver (let's say ours is net.npike.android.gcm.GCMBroadcastReceiver and our package name is 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:  Temporarily remove the following attribute from its declaration:

android:permission="com.google.android.c2dm.permission.SEND"

Step 3:  Open a terminal / command prompt where you can access ADB.

Step 4:  Enter the shell.

adb shell

Step 5:  Paste the following (replacing the appropriate values) and hit enter:

am broadcast -a com.google.android.c2dm.intent.RECEIVE  --es "data.alert" "foo"

If you did everything correctly you should get some output like:

Broadcasting: Intent { act=com.google.android.c2dm.intent.RECEIVE cmp=net.npike.android/gcm.GCMBroadcastReceiver (has extras) }
Broadcast completed: result=-1

... and your GCM BroadcastReceiver should fire up and build a notification (or whatever you have your GCM BroadcastReceiver doing.)

Step 6: Finish your testing and undo Step #2.

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部