Cordova-plugin-firebase: Значок строки состояния Android - все белое

Созданный на 13 сент. 2016  ·  25Комментарии  ·  Источник: arnesson/cordova-plugin-firebase

Привет,
Я пытался найти способ изменить значок, который отображается в строке состояния Android при доставке push-уведомления. Вот пример того, что происходит:

screenshot_2016-09-13-08-53-22

Как видите, значок моего приложения не является прозрачным изображением. Если я изменю его на прозрачное изображение, значок push будет выглядеть нормально, но значок приложения теперь станет прозрачным, а это не то, что мне нужно. Я пробовал разные варианты имен файлов, но ничего не работает. При просмотре кода src/android/FirebasePluginMessagingService.java в строке 73 есть следующее:
.setSmallIcon(getApplicationInfo().icon)

Правильно ли я говорю, что вы не можете установить значок, отличный от значка вашего приложения?
Можно ли установить другой файл для значка строки состояния?
Или любые другие предложения о том, как обойти эту проблему?

Самый полезный комментарий

Спасибо @blckshrk !! У меня наконец-то получилось это сделать!

Я использую Ionic v2 и [email protected] :
Ионный: 2.2.2
кордова: 6.5.0
нпм: 4.6.1

  1. Установите плагин custom-config:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Загрузите https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js и https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js в новый каталог под названием «package-hooks» (или как вы хотите) в корне вашего проекта.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Создайте следующие каталоги и файлы в корне вашего проекта (не внутри платформ):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png – это ваш Android >= значок уведомления API 21. У меня размер 144x144px, выглядит отлично.

styles.xml содержит:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Отредактируйте config.xml. Важно : убедитесь, что вы добавили это пространство имен в тег виджета.
    <widget ... xmlns:android="http://schemas.android.com/apk/res/android">
        <platform name="android">
            <hook src="package-hooks/android_custom_resources.js" type="after_prepare"/>
            <hook src="package-hooks/android_custom_values.js" type="after_prepare"/>
            <config-file parent="./application" target="AndroidManifest.xml">
                <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon"/>
                <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/red"/>
            </config-file>
        </platform>
    <widget>

И это все!

Все 25 Комментарий

Я не проверял это, но вы сможете установить собственный значок, создав fcm_push_icon.png всех необходимых размеров. По умолчанию будет использоваться значок приложения, если fcm_push_icon.png не существует. Значки должны находиться в дереве папок android/res.

вы можете использовать это для создания всех разных размеров: http://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Привет, мы столкнулись с той же проблемой. Мы пытались разместить значки fcm_push_icon.png в дереве папок android/res, но значок уведомления по-прежнему белый.

@MikeBateman , ты нашел решение?

Здравствуйте, чтобы обойти проблему, вы можете изменить целевой SDK своего приложения, пожалуйста, проверьте это , но, конечно, это не правильное решение.

Я исследовал и получил это решение:

Перейдите к этому маршруту src/android/FirebasePluginMessagingService.java и найдите эту строку .setSmallIcon(getApplicationInfo().icon) (как упоминалось @MikeBateman ), теперь добавьте условие, которое будет проверять, работает ли приложение в android lollipop+, если это правда, уведомление следует использовать значок материального дизайна, если это не так, он будет использовать значок приложения по умолчанию, код:

...

  .setSmallIcon(getNotificationIcon())
...

//At the end of FirebasePluginMessagingService.java 
    private int getNotificationIcon() {
        boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
        System.out.println("SCLMTEST >lollipop?:"+useWhiteIcon);
        return useWhiteIcon ? R.drawable.myMaterialIcon: getApplicationInfo().icon;
    }

Я думаю, что лучше всего было бы просто поместить значок вашего материального дизайна в myappresources, и плагин сделает эту работу сам, теперь я не знаю, как это сделать, поэтому, если кто-нибудь может, это было бы здорово, надеюсь, это поможет! @дельфабер

исправлено в 33c52c7e8a1835d5f595e58eaef43e4f49b4b23a

плагин теперь будет использовать notification_icon в drawable, если он существует. в противном случае он будет использовать значок приложения по умолчанию

Привет,

Я не понимаю. Я пытаюсь поместить notification_icon.png в каждую папку с возможностью рисования (для каждого размера), но плагин по-прежнему использует папку по умолчанию (значок приложения). Я что-то пропустил?

Спасибо!

@blckshrk cc/ @robertarnesson

Я столкнулся с тем же, хотя после обновления файлов Android src и добавления всех файлов notification_icon.png я все еще видел белый квадрат. В итоге я последовал совету отсюда: http://stackoverflow.com/questions/37325051/notification-icon-with-the-new-firebase-cloud-messaging-system

Сначала мне пришлось обновить свой репозиторий Google, чтобы сделать последнюю версию Firebase SDK самой последней на моем компьютере. Это версия 9.8.0 для com.google.firebase:firebase-core на момент написания этого, и я заставляю ее работать. (раньше я был на 9.4.0)

Затем я добавил это в свой AndroidManifest.xml :

<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />

Если вы хотите использовать их опцию для изменения default_notification_color , вам нужно добавить следующее. Наша иконка — белая иконка с прозрачным фоном, поэтому мы добавили собственный цвет, за которым приятно смотреться на экране блокировки.

<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/orange" />

Вам также необходимо добавить файл res/values/colors.xml со следующим, который, конечно, вы выбираете сами, если вы устанавливаете фон:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="orange">#FF8614</color>
</resources>

Все это работает с Firebase 9.8.0

@blckshrk , как добавить значок(и) в проект? вам нужно использовать config.xml вашего проекта, чтобы добавить их в ресурсы. насколько я знаю, просто поместив их в папку, они не сделают их видимыми для кода.

В настоящее время я использую Ionic 2 для создания своего приложения и делаю следующее:
Я добавил файлы значков в папку res ionic, поэтому, если я запускаю команду ionic resources , создаются изображения для разных размеров экрана.

Это также добавляет пути к изображениям в файл config.xml .

Может кто-нибудь подробно ответить, что именно нужно сделать..

  • Типа куда файлы нужно добавить в какую папку именно для Андроида
  • нужно ли их добавлять в файл config.xml
  • какой размер изображения у файлов

У меня нет знаний о родном коде Android и структуре папок, поэтому отвечайте соответственно.

-Спасибо

На самом деле, как и @prantikv , я немного растерялся. Я использую Ionic 1 (но с тем же рабочим процессом). Я попытался поместить свой значок в res/drawable/ и использовать cordova-custom-config , чтобы добавить <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" /> в мой AndroidManifest.xml (непосредственно в узел manifest ), но ничего не работает, как ожидалось.

@gylippus Я не понимаю часть com.google.firebase:firebase-core . Как проверить версию?

Спасибо, парни!

@robertarnesson @gylippus У вас есть рабочий пример?

Мне удалось заставить его работать с cordova-custom-config

<config-file parent="./application" target="AndroidManifest.xml">
          <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

и platforms/android/res/drawable/notification_icon.png

Спасибо большое за вашу помощь !

Было бы здорово иметь хук для автоматического выполнения этой работы (перемещение файла и редактирование манифеста), если notification_icon.png находится в корневой папке (или resources ) (как для файлы конфигурации). Что об этом думал?

@blckshrk
Я попытался добавить следующий код, как вы упомянули

<config-file parent="./application" target="AndroidManifest.xml">
          <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

Но я получаю следующую ошибку в процессе сборки

:processDebugResources
E:\Development\IONIC 2\allcouriertracking\allcouriertracking5\platforms\android\res\xml\config.xml:57 : AAPT: Error parsing XML: unbound prefix


 FAILED

FAILURE: Build failed with an exception.


:processDebugResources
E:\Development\IONIC 2\allcouriertracking\allcouriertracking5\platforms\android\res\xml\config.xml:57 : AAPT: Error parsing XML: unbound prefix


 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'I:\DEVELOPMENT PROGRAMS\android-sdk-windows\build-tools\24.0.3\aapt.exe'' finished with non-zero exit value 1

Затем я вручную добавил следующее в AndroidManifest.xml:
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />

И это работало для Android 4.4, но не работало для Android 5.1.

Для какой версии вы собирали?
Также вы добавили файл notification_icon.png во все папки drawable или только в одну?

@prantikv Вы установили https://github.com/dpa99c/cordova-custom-config ?

На самом деле я использую этот хук https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js для автоматического перемещения файла notification_icon.png в каждую из доступных папок.

В основном у меня есть это внутри узла <platform name="android"> :

<hook src="hooks/after_prepare/android_custom_resources.js" type="after_prepare"/>
<config-file parent="./application" target="AndroidManifest.xml">
    <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
</config-file>

РЕДАКТИРОВАТЬ

Мне также удалось справиться с цветом, используя этот хук https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js и решение, предложенное @gylippus (спасибо!)

@blckshrk Да, я установил плагин. Не могли бы вы сообщить мне размер изображения, которое вы используете? Размеры изображения, а также размер в КБ.
И платформа, которую вы протестировали.

Есть новости по этому поводу? Прошло 20 дней, а решения нет? Это не может быть закрыто, если это все еще проблема?!

У меня была такая же проблема, и я мог решить ее со стороны сервера. Я вручную поместил значок в папки с возможностью рисования внутри папки платформы Android с именем уведомление_icon.png.
Через консоль Firebase я продолжаю видеть неправильный значок, но на собственный сервер я отправляю следующее в виде тела запроса:

$fields = array(
  "registration_ids" => "array of registration ids",
  "notification" => array(
    "body"=>"message to send as a body",
    "icon"=>"notification_icon",
    "color"=>"your color in hex"
  ),
  "priority"=>10
);

Надеюсь, это поможет

На самом деле, после некоторого ведения журнала и чтения мне кажется, что весь код уведомления Builder в FirebasePluginMessagingService.java/sendNotification является спорным, поскольку он никогда не запускается, когда есть полезная нагрузка уведомления. Помимо проблемы со значком, я также начал подозревать это, поскольку код уведомления Builder выполняет .setSound (defaultSoundUri), но он никогда не воспроизводится, когда уведомления поступают в трей.

Вот почему приведенное выше решение sergiojup работает, поскольку уведомление создается не кодом плагина, а самим FCM, который получает инструкции из полезной нагрузки уведомления.

Что касается почему... на Android onMessageReceived вызывается только тогда, когда:
*) есть ТОЛЬКО полезная нагрузка уведомления и приложение находится на переднем плане
*) есть полезная нагрузка уведомления И полезная нагрузка данных, и приложение находится на переднем плане
*) есть ТОЛЬКО полезная нагрузка данных, а приложение находится на переднем плане или в фоновом режиме

Итак, в этих случаях onMessageReceived НЕ вызывается:
*) есть ТОЛЬКО полезная нагрузка уведомления и приложение находится в фоновом режиме
*) есть полезная нагрузка уведомления И полезная нагрузка данных, а приложение находится в фоновом режиме

Глядя на код, единственный способ заставить плагин создать уведомление — это использовать только полезные данные, которые имеют свойства заголовка и текста, пока приложение находится в фоновом режиме.

Спасибо @blckshrk !! У меня наконец-то получилось это сделать!

Я использую Ionic v2 и [email protected] :
Ионный: 2.2.2
кордова: 6.5.0
нпм: 4.6.1

  1. Установите плагин custom-config:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Загрузите https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js и https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js в новый каталог под названием «package-hooks» (или как вы хотите) в корне вашего проекта.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Создайте следующие каталоги и файлы в корне вашего проекта (не внутри платформ):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png – это ваш Android >= значок уведомления API 21. У меня размер 144x144px, выглядит отлично.

styles.xml содержит:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Отредактируйте config.xml. Важно : убедитесь, что вы добавили это пространство имен в тег виджета.
    <widget ... xmlns:android="http://schemas.android.com/apk/res/android">
        <platform name="android">
            <hook src="package-hooks/android_custom_resources.js" type="after_prepare"/>
            <hook src="package-hooks/android_custom_values.js" type="after_prepare"/>
            <config-file parent="./application" target="AndroidManifest.xml">
                <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon"/>
                <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/red"/>
            </config-file>
        </platform>
    <widget>

И это все!

Я не понимаю, куда добавить следующее в config.xml? Советы по этому поводу? Кроме того, я не очень хорошо знаком с XML, что именно я должен добавить в пространство имен? @шаманк

<widget ... xmlns:android="http://schemas.android.com/apk/res/android"> <platform name="android"> <hook src="package-hooks/android_custom_resources.js" type="after_prepare"/> <hook src="package-hooks/android_custom_values.js" type="after_prepare"/> <hook src="package-hooks/android_fixes.js" type="after_prepare"/> <config-file parent="./application" target="AndroidManifest.xml"> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon"/> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/red"/> </config-file> </platform> <widget>

@Rockforced Извините, меня не было в последнее время. Взгляните на исходный файл (конечно, с некоторыми заменами). Надеюсь, поможет.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.example" version="1.0.20" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android">
    <name>Test</name>
    <description>Blabla.</description>
    <author email="[email protected]" href="https://example.com/">Example</author>
    <content src="index.html"/>
    <access origin="*"/>
    <allow-navigation href="http://ionic.local/*"/>
    <allow-navigation href="http://192.168.0.1:8100"/>
    <allow-intent href="http://*/*"/>
    <allow-intent href="https://*/*"/>
    <allow-intent href="tel:*"/>
    <allow-intent href="sms:*"/>
    <allow-intent href="mailto:*"/>
    <allow-intent href="geo:*"/>
    <platform name="android">
        <allow-intent href="market:*"/>
        <hook src="package-hooks/android_custom_resources.js" type="after_prepare"/>
        <hook src="package-hooks/android_custom_values.js" type="after_prepare"/>
        <hook src="package-hooks/android_fixes.js" type="after_prepare"/>
        <config-file parent="./application" target="AndroidManifest.xml">
            <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon"/>
            <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/red"/>
        </config-file>
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png"/>
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png"/>
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png"/>
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png"/>
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png"/>
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png"/>
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png"/>
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png"/>
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png"/>
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png"/>
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png"/>
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png"/>
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*"/>
        <allow-intent href="itms-apps:*"/>
        <icon height="57" src="resources/ios/icon/icon.png" width="57"/>
        <icon height="114" src="resources/ios/icon/[email protected]" width="114"/>
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40"/>
        <icon height="80" src="resources/ios/icon/[email protected]" width="80"/>
        <icon height="120" src="resources/ios/icon/[email protected]" width="120"/>
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50"/>
        <icon height="100" src="resources/ios/icon/[email protected]" width="100"/>
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60"/>
        <icon height="120" src="resources/ios/icon/[email protected]" width="120"/>
        <icon height="180" src="resources/ios/icon/[email protected]" width="180"/>
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72"/>
        <icon height="144" src="resources/ios/icon/[email protected]" width="144"/>
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76"/>
        <icon height="152" src="resources/ios/icon/[email protected]" width="152"/>
        <icon height="167" src="resources/ios/icon/[email protected]" width="167"/>
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29"/>
        <icon height="58" src="resources/ios/icon/[email protected]" width="58"/>
        <icon height="87" src="resources/ios/icon/[email protected]" width="87"/>
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640"/>
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750"/>
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242"/>
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536"/>
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768"/>
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640"/>
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320"/>
    </platform>
    <preference name="webviewbounce" value="false"/>
    <preference name="UIWebViewBounce" value="false"/>
    <preference name="DisallowOverscroll" value="true"/>
    <preference name="android-minSdkVersion" value="16"/>
    <preference name="android-targetSdkVersion" value="23"/>
    <preference name="BackupWebStorage" value="none"/>
    <preference name="SplashMaintainAspectRatio" value="true"/>
    <preference name="SplashReloadOnOrientationChange" value="true"/>
    <preference name="SplashScreenDelay" value="3000"/>
    <preference name="FadeSplashScreen" value="false"/>
    <preference name="FadeSplashScreenDuration" value="0"/>
    <preference name="orientation" value="portrait"/>
    <preference name="SplashScreenBackgroundColor" value="0xFFFFFFFF"/>
    <preference name="SplashScreen" value="screen"/>
    <preference name="AutoHideSplashScreen" value="false"/>
    <preference name="KeyboardDisplayRequiresUserAction" value="false"/>
    <preference name="loadUrlTimeoutValue" value="700000"/>
    <feature name="StatusBar">
        <param name="ios-package" onload="true" value="CDVStatusBar"/>
    </feature>
    <feature name="InAppBrowser">
        <param name="ios-package" value="CDVInAppBrowser"/>
        <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser"/>
    </feature>
    <plugin name="cordova-plugin-app-event" spec="~1.2.0"/>
    <plugin name="cordova-plugin-device" spec="~1.1.3"/>
    <plugin name="cordova-plugin-console" spec="~1.0.4"/>
    <plugin name="cordova-plugin-whitelist" spec="~1.3.2"/>
    <plugin name="cordova-plugin-splashscreen" spec="~4.0.2"/>
    <plugin name="cordova-plugin-statusbar" spec="~2.2.2"/>
    <plugin name="ionic-plugin-keyboard" spec="~2.2.1"/>
    <plugin name="cordova-plugin-geolocation" spec="~2.4.1"/>
    <plugin name="cordova-plugin-compat" spec="~1.1.0"/>
    <plugin name="cordova-plugin-inappbrowser" spec="~1.6.1"/>
    <plugin name="cordova-plugin-nativestorage" spec="~2.2.2"/>
    <plugin name="cordova-plugin-firebase" spec="~0.1.20"/>
    <plugin name="cordova.plugins.diagnostic" spec="~3.0.4"/>
    <plugin name="cordova-plugin-googlemaps" spec="~1.4.0">
        <variable name="API_KEY_FOR_ANDROID" value="blabla"/>
        <variable name="API_KEY_FOR_IOS" value="blabla"/>
    </plugin>
    <plugin name="ionic-plugin-deeplinks" spec="~1.0.14">
        <variable name="URL_SCHEME" value="blabla"/>
        <variable name="DEEPLINK_SCHEME" value="https"/>
        <variable name="DEEPLINK_HOST" value="www.blabla.com"/>
        <variable name="ANDROID_PATH_PREFIX" value="/"/>
    </plugin>
    <plugin name="cordova-custom-config" spec="~3.2.0"/>
    <icon src="resources/ios/icon/[email protected]"/>
    <engine name="android" spec="~6.2.2"/>
</widget>

@shamank Большое спасибо за это. Весь день боролся с версией 0.1.24, но безуспешно, и ваше решение сработало. Можете ли вы сообщить мне, почему именно это заставляет работать пользовательский значок? Я очень внимательно следовал инструкциям в read me, и только когда-либо показывался серый значок. Ваше решение сработало сразу... Я просто хотел бы знать, почему!

@jskidd3 Рад, что это помогло! Это действительно довольно просто. Плагин cordova-custom-config позволяет вносить изменения в окончательный конфиг Cordova для каждой платформы (Info.plist/AndroidManifest.xml). Итак, в блоке файла конфигурации вы указываете конфигурации плагина для Android искать «default_notification_icon» в каталоге drawables под новым именем «notification_icon» (плагин обрабатывает расширение файла, если я хорошо помню). Затем вы определяете цвет фона в следующем блоке (красный). Теперь вам нужен способ получить этот файл (notification_icon.png) в нужном месте во время сборки, поэтому для этого вам нужен хук. Это android_custom_resources.js. Он берет все, что находится в resources/android/custom/* и помещает в доступные для сборки каталоги (вы можете изменить это, отредактировав скрипт, но это нормально для этой задачи). Аналогично с дополнительными стилями конфигурации. Вы создаете этот файл styles.xml; определите цвет (я назвал его «красным», но он может быть каким угодно), а затем android_custom_values.js скопирует его в созданный каталог «platforms/android/res/values». Наконец, в config.xml вы привязываете эти скрипты к запуску в определенный момент. Для этой задачи их нужно скопировать "after_prepare", что означает, что после того, как Кордова подготовила сборки (опять же, если я хорошо помню... вы можете проверить документы Ionic по перехватам пакетов для получения более подробной информации/событий).

Ответ @alexbonhomme сработал для меня :) https://github.com/arnesson/cordova-plugin-firebase/issues/53#issuecomment -304573222

Решение @shamank работает для меня частично.
Я использую Angular+Кордова.

Все работает, кроме одного: android_custom_resources.js не создает папки (drawable-ldpi, drawable-mdpi и т. д.) и не копирует файлы, если папки не существуют.

Поэтому я удалил этот скрипт и использовал его в config.xml:

Примечание: пути могут отличаться из-за пользовательских изменений, а папка [email protected] и > имеет res/ в другом месте.

`

    <resource-file src="res/custom/android/notification.png" target="app/src/main/res/drawable-mdpi/notification.png" />

    <resource-file src="res/custom/android/notification.png" target="app/src/main/res/drawable-hdpi/notification.png" />

    <resource-file src="res/custom/android/notification.png" target="app/src/main/res/drawable-xhdpi/notification.png" />

    <resource-file src="res/custom/android/notification.png" target="app/src/main/res/drawable-xxhdpi/notification.png" />

    <resource-file src="res/custom/android/notification.png" target="app/src/main/res/drawable-xxxhdpi/notification.png" />`

В любом случае, спасибо @alexbonhomme и @shamank !

Для Ionic 3 (точнее, для cordova-android@7) в путях решения @shamank внутри:
package-hooks/android_custom_resources.js package-hooks/android_custom_values.js
должен быть обновлен, потому что папка res #$1$#$ теперь находится внутри platforms/android/app/src/main/ .

  1. перейдите на package-hooks/android_custom_resources.js и обновите
    var platformDir = 'platforms/android';
    к
    var platformDir = 'platforms/android/app/src/main';

  2. перейдите на package-hooks/android_custom_values.js и обновите
    var platformDir = platforms/android/res/values';
    к
    var platformDir = 'platforms/android/app/src/main/res/values';

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

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

Zrnik picture Zrnik  ·  3Комментарии

matthitachi picture matthitachi  ·  5Комментарии

merbin2012 picture merbin2012  ·  4Комментарии

stephan-nordnes-eriksen picture stephan-nordnes-eriksen  ·  5Комментарии

arunkatariaoodles picture arunkatariaoodles  ·  4Комментарии