【问题标题】:GcmBroadcastReceiver not fired on Android 4.0.3GcmBroadcastReceiver 未在 Android 4.0.3 上触发
【发布时间】:2013-07-24 02:05:12
【问题描述】:

按照official tutorial,我在我的应用中实现了 GCM。 但是我在 Android 4.0.3 下的用户报告我通知不起作用。我发现我的GcmBroadcastReceiver extends BroadcastReceiver 中的onReceive 没有被解雇。 这是我的清单。

    <!-- GCM -->
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <permission
        android:name="com.myapp.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.myapp.gcm.permission.C2D_MESSAGE" />

    <application
        ... >

        <!-- GCM -->
        <receiver
            android:name="com.myapp.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />

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

我做错了什么?

【问题讨论】:

    标签: android notifications push-notification google-cloud-messaging


    【解决方案1】:

    您的应用程序的主包名称是 com.nyapp.gcm 还是 com.myapp?

    在清单的权限部分使用 com.myapp.gcm,而在接收方的意图过滤器类别中使用 com.myapp。

    在这两个地方你应该使用同一个包,这是你应用的主包。

    【讨论】:

    • 哎呀,是的,你是对的,谢谢。它是“com.myapp”。我会要求我的用户在更新后重试。我会告诉你的。
    • 就是这样!谢谢老兄
    【解决方案2】:

    您的过滤器中缺少“com.google.android.c2dm.intent.REGISTRATION”操作,否则您的应用将无法接收注册 ID。将以下内容添加到您的意图过滤器:

    action android:name="com.google.android.c2dm.intent.REGISTRATION"

    【讨论】:

    • 官方文档没有提到(查看我提供的链接)。无论如何,一切都在 4.0.3 以上运行,所以我认为这可能不是问题。
    【解决方案3】:
    <!-- GCM -->
        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
    
                <!-- Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <!-- Receives the registration id. -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
    
                <category android:name="YOUR_APP_PACKAGE_NAME" />
            </intent-filter>
        </receiver>
    

    您的清单文件权限缺失检查清单文件中的广播接收器注册

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-22
      • 2019-05-09
      • 2010-12-22
      • 2012-01-01
      • 2021-07-24
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多