GCM在Android OS上推送RECEIVE类别名称< 4.1

时间:2013-09-13 04:16:42

标签: android google-cloud-messaging

我已为我的应用程序启用了推送,我的清单如下所示:

包名:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.norton.mobile"
android:versionCode="1"
android:versionName="1.0" >

我的收件人如下:

<receiver
        android:name="com.pravaa.mobile.GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <!-- Receives the actual messages. -->
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.stanley.mobile" />
        </intent-filter>
    </receiver>

通过上述配置,我可以在任何具有OS&gt;的设备上成功接收通知。 4.1,但不在具有OS&lt;的设备上4.1。在将接收器类别配置修改为**<category android:name="com.norton.mobile" />**时,即使在具有OS&lt; 1的设备上,我也能够成功地接收通知。 4.1。我确实理解文档说“com.google.android.c2dm.intent.RECEIVE的接收器,类别设置为applicationPackage。”但它如何适用于具有OS的设备&gt; 4.1虽然类别与applicationPackage不匹配。 有人知道这背后的原因吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

也许您写了一个错误的类别名称,并且它的工作原因是OS 4.1上面不需要类别名称。

” 请注意,类别标记中的android:name必须替换为应用程序的包名称(并且针对minSdkVersion 16及更高版本的应用程序不需要类别标记。)

http://developer.android.com/google/gcm/helper.html#android-app

答案 1 :(得分:0)

使用

确认您的配置
<!-- GCM PERMISSIONS START -->
 <permission
        android:name="com.norton.mobile.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.norton.mobile.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <permission
        android:name="com.norton.mobile.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.norton.mobile.permission.C2D_MESSAGE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- GCM PERMISSIONS END -->

<!-- GCM RECEIVER And SERVICE START -->

        <receiver
            android:name="com.google.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" />
                <action android:name="com.google.android.c2dm.intent.GCM_RECEIVED_ACTION" />

                <category android:name="com.norton.mobile" />
            </intent-filter>
        </receiver>

        <service
            android:name="com.norton.mobile.GCMIntentService"
            android:enabled="true" />

        <!-- GCM RECEIVER And SERVICE END -->