Intereting Posts
Как реализовать учетную запись на Android без адаптера синхронизации Maven говорит, что нет плагинов: как их установить? Конструкция андроида позволяет прокручивать, когда открыта мягкая клавиатура, но не сдвигает ее вверх Как установить метод onClick с linearLayout? Как справиться с развертыванием мобильных приложений на платформе с белой маркировкой? Android – Как запустить намерение с помощью JavaScript Сделать пустой вид займет оставшееся пространство после RecyclerView? Добавьте указанное пользователем место в поле ввода, нажав кнопку, чтобы остановить геокомплект Что такое Android DecorView? Ограничить edittext одной строкой Как хранить базу данных Android SQLite на SD-карте Запуск нескольких экземпляров приложений Android, таких как параллельное пространство Как создать анимацию кликов для элементов в RecycleView Как запустить пользовательское правило в Android.mk перед компиляцией? Индикатор обновления SweepRefreshLayout Android не отображается

Android GCM с продуктами

У меня есть GCM проект андроида градиента. Его работа хорошо, когда я добавляю 2 аромата, push-уведомление перестало работать. Мой манифест компиляции (он взят из файла app\build\intermediates\manifests\ex\debug ) ниже:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.flavor.app" <uses-permission android:name="com.flavor.app.permission.C2D_MESSAGE" /> <permission android:name="com.flavor.app.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <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" /> <category android:name="com.flavor.app" /> </intent-filter> </receiver> <service android:name="com.ex.app.GCMIntentService" /> <service android:name="com.ex.app.AppLocationService" class=".AppLocationService" > <intent-filter> <action android:name=".AppLocationService" android:value=".AppLocationService" /> </intent-filter> </service> 

Что мне делать, чтобы исправить эту проблему? Пожалуйста помоги.

UPD1. Я использую gradle v.0.12 +. Я думаю, что мой последний файл манифеста выглядит хорошо, GCMRegistrar.checkManifest (this); – без ошибок, но GCMRegistrar.isRegistered (this) всегда false. знак равно

UPD2. Мой первый проект аромата с оригинальным названием пакета (как проект в основной ветке) работает хорошо, но второй аромат с измененным пакетом не работает (registrationId для push все еще пуст), но в файле манифеста все разрешения верны.

Solutions Collecting From Web of "Android GCM с продуктами"

Simpy использует псевдоним ${applicationId} подобный этому

 <permission android:name= "${applicationId}.permission.C2D_MESSAGE" android:protectionLevel= "signature" /> <uses-permission android:name= "${applicationId}.permission.C2D_MESSAGE" /> <uses-permission android:name= "com.google.android.c2dm.permission.RECEIVE" /> 

И для соответствующего приемника используйте это

  <receiver android:name = "com.mixpanel.android.mpmetrics.GCMReceiver" 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"/> <category android:name = "${applicationId}"/> </intent-filter> </receiver> 

Я нашел решение в этом сообщении, когда GCM не регистрировался при изменении имени пакета с помощью Gradle . Я просто переоцениваю BroadcastReceiver, если кто-нибудь может объяснить, почему он помогает, пожалуйста, скажите мне.

Добавьте следующий код в apps build.gradle, который скопирует выбранный файл flovour json в папку приложения.

 gradle.taskGraph.beforeTask { Task task -> if(task.name ==~ /process.*GoogleServices/) { android.applicationVariants.all { variant -> if(task.name ==~ /(?i)process${variant.name}GoogleServices/){ copy { from "/src/${variant.flavorName}" into '.' include 'google-services.json' } } } } }