模拟Android上的GCM推送通知

5

我正在尝试使用ADB在我的Android应用程序上模拟GCM推送通知:

adb shell am broadcast -c com.MYAPPNAME  -a com.google.android.c2dm.intent.RECEIVE -e data "SomeData"

据我所知,我得到了积极的结果:

Broadcasting: Intent { act=com.google.android.c2dm.intent.RECEIVE cat=[com.MYAPPNAME] (has extras) }
Broadcast completed: result=-1

很遗憾,我的应用程序在GCMListener上没有收到通知。
相关清单:
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission
    android:name="com.sears.devicelab.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.sears.devicelab.permission.C2D_MESSAGE" />

.... some more xml ....

     <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true" >

        <!-- android:permission="com.google.android.c2dm.permission.SEND" > -->
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.MYAPP" />
            <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        </intent-filter>
    </receiver>

    <service
        android:name=".common.gcm.AppGcmListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>
    <service
        android:name=".common.gcm.GcmInstanceIDListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID" />
        </intent-filter>
    </service>
    <service
        android:name=".common.gcm.GcmRegistrationIntentService"
        android:exported="false" >
    </service>

GCM 监听器:

public class AppGcmListenerService extends GcmListenerService {

private static final String TAG = AppGcmListenerService.class.toString();

public AppGcmListenerService() {
}

@Override
public void onMessageReceived(String from, Bundle data) {
    Log.i(TAG, "Push notification has been received: " +  data);
}

}
1个回答

5
为了测试推送通知的接收,我使用这个
你可以使用curlhttpie发送请求。
http POST 'https://gcm-http.googleapis.com/gcm/send' 'Content-Type:application/json' 'Authorization:key=<your_API_key>' to='<your_device_token>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接