Мобильный push получен для 2 разных вкусов

У меня есть приложение для Android с двумя разными вкусами:

        first {
            applicationId 'com.test.first'
            resValue 'string', 'app_name', 'First'
            resValue 'string', 'host', 'app.first.com'
            resValue 'string', 'app_id', '3'
            resValue 'string', 'auth_client_id', 'xxx'
            versionCode 1
            versionName '1.0'
        }
        second {
            signingConfig signingConfigs.second
            applicationId 'com.test.second'
            resValue 'string', 'app_name', 'Second'
            resValue 'string', 'host', 'app.second.com'
            resValue 'string', 'app_id', '2'
            resValue 'string', 'auth_client_id', 'xxx'
            versionCode 1
            versionName '1.0'
        }

И мой AndroidManifest.xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test">
    <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" />
    <application>
         <receiver
            android:name="com.test.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="${applicationId}" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

Я правильно получаю push-уведомления для обоих вариантов. Проблема в том, что если на моем телефоне установлены оба вкуса, я получаю 2 одинаковых нажатия для обоих вкусов.

Похоже, что приложение не распознает, к какому аромату относится push. Может у кого была такая же проблема?


person John K.    schedule 06.12.2017    source источник
comment
Пробовали ли вы использовать android:name="${applicationId}.GcmBroadcastReceiver" для имени приемника (предположим, что у вас есть 2 разные реализации)?   -  person MatPag    schedule 06.12.2017
comment
Затем я получаю сообщение об ошибке «Неразрешенный класс». У меня есть 1 пакет с именем com.test и весь код для обоих вариантов.   -  person John K.    schedule 06.12.2017
comment
Возможно, ваша проблема вызвана использованием одного и того же файла google-services.json, вы должны зарегистрировать свой второй вариант, загрузить файл json и указать другую папку для своего приложения, где хранятся разные файлы google-services.json.   -  person MatPag    schedule 06.12.2017
comment
У меня есть 2 файла google-services.json. Оба расположены в разных папках для каждого аромата. И оба разные.   -  person John K.    schedule 06.12.2017


Ответы (1)


Я предполагаю, что ваша проблема, как ..

Ваше имя пакета проекта fcm/gcm - "com.test", а затем ваше приложение для Android имеет два варианта, а именно

<сильный>1. сначала с идентификатором приложения 'com.test.first'

<сильный>2. второй с идентификатором приложения 'com.test.second'

Итак, если вы есть, и любой толчок будет получен в обоих вариантах, потому что вы оба flavors contain com.test, так что вы можете управлять или обрабатывать вручную... например

отправьте идентификатор вашего приложения или любой токен идентификации вкуса с помощью push-уведомления, после чего вам придется управлять этим после получения push-уведомления.

например

отправить толчок для первого вкуса (в вашем первом приложении)

if(data.first_flavor_token)
{
   //Create and show your push here
}

отправить толчок для второго вкуса (во втором приложении)

if(data.second_flavor_token)
{
   //Create and show your push here
}
person Raja    schedule 06.12.2017
comment
Есть ли другой способ? Потому что это не кажется мне очень твердым. Или, если я хочу иметь 2 разных приложения (использующих разные вкусы), это не очень хороший подход? - person John K.; 06.12.2017
comment
Я работаю с 17 вкусами, теперь я обращаюсь только с этим...., я не знаю, возможно ли какое-либо другое решение.. - person Raja; 07.12.2017