1

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

包裹名字:

<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 > 4.1 的设备上成功接收通知,但在 OS < 4.1 的设备上则不行。在将接收器类别配置修改为**<category android:name="com.norton.mobile" />**i 时,即使在 OS < 4.1 的设备上也能成功接收通知。我知道文档说“com.google.android.c2dm.intent.RECEIVE 的接收器,类别设置为 applicationPackage。” 但是,尽管类别与 applicationPackage 不匹配,但它如何适用于 OS > 4.1 的设备。有人知道这背后的原因吗?提前致谢。

4

2 回答 2

1

也许你写了一个错误的类别名称,它起作用了,因为在 OS 4.1 之上不需要类别名称。

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

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

于 2014-02-12T10:03:21.870 回答
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 -->
于 2013-09-13T04:57:23.193 回答