您的位置:首页 > 移动开发 > Android开发

Testing Your Android GCM Broadcast Receiver

2015-08-11 00:00 357 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: