简体   繁体   English

在 Android 上模拟 GCM 推送通知

[英]Simulate GCM push notifications on Android

I'm trying to simulate GCM push notifications on my Android app using the ADB:我正在尝试使用 ADB 在我的 Android 应用程序上模拟 GCM 推送通知:

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

And I'm getting, as far as I know, positive result:据我所知,我得到了积极的结果:

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

But unfortunately, my application doesn't get the notification on my GCMListener.但不幸的是,我的应用程序没有在我的 GCMListener 上收到通知。

Relevant manifest:相关清单:

    <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 Listener: 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);
}

}

In order to test receiving push notifications, I use this .为了测试接收推送通知,我使用了这个.

You can send the request with curl or httpie您可以使用curlhttpie发送请求

http POST 'https://gcm-http.googleapis.com/gcm/send' 'Content-Type:application/json' 'Authorization:key=<your_API_key>' to='<your_device_token>'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM