0

У меня есть приложение, которое получает push-уведомление, которое мой сервер отправляет и выполняет дальнейшую обработку. Push-уведомление и все отлично работают на нескольких телефонах. Тем не менее, есть один телефон от местного производителя - Micromax A27 - для которого не принимается звонок onReceive моего приемника приложения. Я пробовал все, но это не выход. Кто-нибудь знает, как это исправить?Google push-уведомление не доходит до приложения

Ниже мой манифест код для регистрации получателя:

<receiver 
     android:name="gcm.GcmBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter android:priority="999"> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.wheels.driver" /> 
     </intent-filter> 
    </receiver> 

Пожалуйста, обратите внимание, что приведенный выше код работает на всех телефонах, которые я испытал до сих пор, за исключением конкретной модели - Micromax A27.

Полный Manifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.wheels.driver" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="10" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.SEND_SMS" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_LOGS" /> 
    <uses-permission android:name="android.permission.GET_TASKS" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <receiver 
      android:name="gcm.GcmBroadcastReceiver" 
      android:permission="com.google.android.c2dm.permission.SEND" > 
      <intent-filter android:priority="999"> 
       <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
       <category android:name="com.wheels.driver" /> 
      </intent-filter> 
     </receiver> 
     <service android:name="gcm.GcmIntentService" /> 

     <activity 
      android:name="com.wheels.driver.SplashScreen" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateHidden" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <activity 
      android:name="com.wheels.driver.Home" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateHidden" > 
     </activity> 

     <activity 
      android:name="com.wheels.driver.Login" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateHidden" > 
     </activity> 
      <activity 
      android:name="com.wheels.driver.RequestDetails" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateHidden" > 
     </activity> 

      <activity 
      android:name="com.wheels.driver.TripStarted" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
      android:windowSoftInputMode="stateHidden" > 
     </activity> 


    </application> 

</manifest> 
+0

Что такое Android-версия телефона, которая не работает? Каковы версии телефонов Android, которые работают? – Eran

+0

Андроид-версия телефона, на которой он не работает, составляет 2.3.5, а остальные версии ive, протестированные на нем, были 4.0.1, 4.2.2 и 4.3. –

+0

Ну, тогда проблема, скорее всего, в вашем манифесте. Я заметил, что более новые версии Android менее строги относительно правильного способа определения разрешений GCM и объявления получателя BroadCast в манифесте. В той части, которую вы включили, вы используете 'com.wheels.driver' для категории фильтра приемника. Это должен быть основной пакет вашего приложения, и разрешения GCM также должны использовать это имя пакета. Если вы не можете найти проблему самостоятельно, вы можете включить полный манифест, и я попытаюсь его найти. – Eran

ответ

1

Вы отсутствуют следующие разрешения:

<permission android:name="com.wheels.driver.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="com.wheels.driver.permission.C2D_MESSAGE" /> 

По некоторым причинам эта ошибка мешает GCM работать только на старых устройствах Android (даже если official GCM code samples состояние, это необходимо).

+0

получил это Спасибо, я наткнулся на эту ссылку и в то же время :) http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html Спасибо за тонну за вашу помощь !!! –

+0

Добро пожаловать! – Eran

Смежные вопросы