Cordova-plugin-firebase: Android-Statusleistensymbol - ganz weiß

Erstellt am 13. Sept. 2016  ·  25Kommentare  ·  Quelle: arnesson/cordova-plugin-firebase

Hallo,
Ich habe versucht, einen Weg zu finden, um das Symbol zu ändern, das in einer Android-Statusleiste angezeigt wird, wenn eine Push-Benachrichtigung zugestellt wird. Hier ist ein Beispiel dafür, was passiert:

screenshot_2016-09-13-08-53-22

Wie Sie sehen können, ist das Symbol für meine App kein transparentes Bild. Wenn ich es in ein transparentes Bild ändere, sieht das Push-Symbol gut aus, aber das App-Symbol ist jetzt das transparente Bild und das ist nicht das, was ich will. Ich habe verschiedene Variationen von Dateinamen ausprobiert, aber nichts scheint zu funktionieren. Wenn Sie sich den Code ansehen, src/android/FirebasePluginMessagingService.java in Zeile 73, gibt es Folgendes:
.setSmallIcon(getApplicationInfo().icon)

Habe ich Recht, wenn ich sage, dass Sie kein anderes Symbol als Ihr App-Symbol festlegen können?
Wäre es möglich, eine andere Datei für das Statusleistensymbol festzulegen?
Oder irgendwelche anderen Vorschläge, wie man dieses Problem umgeht?

Hilfreichster Kommentar

Danke @blckshrk !! Ich habe es endlich geschafft, das zu tun!

Ich verwende Ionic v2 und [email protected] :
Ionisch: 2.2.2
Kordova: 6.5.0
npm: 4.6.1

  1. Installieren Sie das Custom-Config-Plugin:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Laden Sie https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js und https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js in eine neues Verzeichnis namens "package-hooks" (oder was auch immer Sie wollen) in Ihrem Projektstammverzeichnis.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Erstellen Sie die folgenden Verzeichnisse und Dateien in Ihrem Projektstammverzeichnis (nicht innerhalb von Plattformen):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png ist Ihr Android >= API 21-Benachrichtigungssymbol. Meins ist 144x144px groß und sieht toll aus.

styles.xml enthält:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Bearbeiten Sie die config.xml. Wichtig : Stellen Sie sicher, dass Sie diesen Namespace im Widget-Tag hinzufügen.
    <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>

Und das ist alles!

Alle 25 Kommentare

Ich habe dies nicht getestet, aber Sie sollten in der Lage sein, ein benutzerdefiniertes Symbol festzulegen, indem Sie fcm_push_icon.png in allen erforderlichen Größen erstellen. Standardmäßig wird das App-Icon verwendet, wenn fcm_push_icon.png nicht existiert. Die Symbole sollten sich im Verzeichnisbaum android/res befinden.

Sie können dies verwenden, um alle verschiedenen Größen zu generieren: http://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Hallo, wir stehen vor dem gleichen Problem. Wir haben versucht, fcm_push_icon.png -Symbole im Verzeichnisbaum von Android/res zu platzieren, aber das Benachrichtigungssymbol ist immer noch weiß.

@MikeBateman hast du eine Lösung gefunden?

Hallo, um das Problem zu umgehen, können Sie das Ziel-SDK Ihrer App ändern, bitte überprüfen Sie dies , aber natürlich ist es keine richtige Lösung.

Ich habe researched und bekam diese Lösung:

Gehen Sie zu dieser Route src/android/FirebasePluginMessagingService.java und finden Sie diese Zeile .setSmallIcon(getApplicationInfo().icon) (wie @MikeBateman erwähnt), fügen Sie nun eine Bedingung hinzu, die prüft, ob die App in Android Lollipop+ läuft, wenn die Benachrichtigung wahr ist sollte ein Materialdesign- Symbol verwenden, wenn dies nicht der Fall ist, wird das Symbol der Standard-App verwendet, der Code:

...

  .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;
    }

Ich denke, das Beste wäre, einfach Ihr Materialdesign-Symbol in myappresources einzufügen und das Plugin erledigt diese Aufgabe von selbst, jetzt weiß ich nicht, wie es geht, wenn jemand es könnte, wäre es großartig, ich hoffe, es hilft! @delphaber

behoben in 33c52c7e8a1835d5f595e58eaef43e4f49b4b23a

Das Plugin verwendet nun Notification_icon in Drawable, falls vorhanden. Andernfalls wird das Standard-App-Symbol verwendet

Hallo,

Ich verstehe es nicht. Ich versuche, ein notification_icon.png in jeden Drawable-Ordner (für jede Größe) zu legen, aber das Plugin verwendet immer noch das Standard-Ordner (App-Symbol). Habe ich etwas verpasst?

Danke!

@blckshrk cc/ @robertarnesson

Ich bin auf dasselbe gestoßen, als ich nach dem Aktualisieren der Android-src-Dateien und dem Hinzufügen aller notification_icon.png -Dateien immer noch nur das weiße Quadrat sah. Am Ende folgte ich den Ratschlägen von hier: http://stackoverflow.com/questions/37325051/notification-icon-with-the-new-firebase-cloud-messaging-system

Zuerst musste ich mein Google Repository aktualisieren, um das neueste Firebase SDK auf meinem Computer auf dem neuesten Stand zu halten. Dies ist Version 9.8.0 für com.google.firebase:firebase-core im Moment des Schreibens und ich bringe es zum Laufen. (Ich war vorher auf 9.4.0)

Dann habe ich das zu meinem AndroidManifest.xml hinzugefügt:

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

Wenn Sie ihre Option verwenden möchten, um die default_notification_color zu ändern, müssen Sie Folgendes hinzufügen. Unser Symbol ist ein weißes Symbol mit transparentem Hintergrund, also haben wir unsere eigene Farbe dahinter hinzugefügt, was auf dem Sperrbildschirm schön ist.

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

Sie müssen auch eine res/values/colors.xml -Datei mit Folgendem hinzufügen, was natürlich Ihre eigene Farbwahl ist, wenn Sie den Hintergrund festlegen:

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

Das alles funktioniert ab Firebase 9.8.0

@blckshrk wie fügst du die Symbole zum Projekt hinzu? Sie müssen die config.xml Ihres Projekts verwenden, um sie zu Ressourcen hinzuzufügen. Wenn Sie sie einfach in den Ordner legen, werden sie meines Wissens nicht für den Code sichtbar

Derzeit verwende ich Ionic 2, um meine App zu erstellen, und mache Folgendes:
Ich habe Symboldateien zum Res-Ordner von ionic hinzugefügt. Wenn ich also den Befehl ionic resources ausführe, werden die Bilder für verschiedene Bildschirmgrößen erstellt.

Dadurch werden auch die Bildpfade zur Datei config.xml hinzugefügt.

Kann mir bitte jemand ausführlich antworten, was genau zu tun ist?

  • Zum Beispiel, wo die Dateien in welchem ​​Ordner genau für Android hinzugefügt werden müssen
  • müssen sie in der Datei config.xml hinzugefügt werden
  • welche bildgröße haben die dateien

Ich habe keine Kenntnisse über den nativen Android-Code und die Ordnerstruktur, also antworten Sie entsprechend.

-Danke

Eigentlich bin ich wie @prantikv ein bisschen verloren. Ich verwende Ionic 1 (aber mit dem gleichen Workflow). Ich habe versucht, mein Symbol in res/drawable/ einzufügen und cordova-custom-config zu verwenden, um <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" /> in meinem AndroidManifest.xml (direkt im Knoten manifest ) hinzuzufügen, aber nichts funktioniert wie erwartet.

@gylippus Ich verstehe den Teil com.google.firebase:firebase-core nicht. Wie prüft man die Version?

Danke Leute!

@robertarnesson @gylippus Hast du ein funktionierendes Beispiel?

Ich habe es geschafft, es mit cordova-custom-config zum Laufen zu bringen

<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>

und ein platforms/android/res/drawable/notification_icon.png

Vielen dank für Deine Hilfe !

Es könnte großartig sein, einen Haken zu haben, um diesen Job automatisch auszuführen (Datei verschieben und Manifest bearbeiten), wenn sich ein notification_icon.png im Stammordner (oder resources ) befindet (wie es für die Konfigurationsdateien). Was hat man sich dabei gedacht?

@blckshrk
Ich habe versucht, den folgenden Code hinzuzufügen, wie Sie erwähnt haben

<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>

Aber ich bekomme die folgende Fehlermeldung während des Build-Prozesses

: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

Ich habe dann manuell Folgendes zu AndroidManifest.xml hinzugefügt
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />

Und es funktionierte für Android 4.4, aber es funktioniert nicht für Android 5.1.

Für welche Version hast du gebaut?
Haben Sie auch die notification_icon.png -Datei in allen drawable -Ordnern oder nur in einem hinzugefügt?

@prantikv Hast du https://github.com/dpa99c/cordova-custom-config installiert?

Eigentlich verwende ich diesen Hook https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js , um die notification_icon.png -Datei automatisch in jeden Drawable-Ordner zu verschieben.

Grundsätzlich habe ich dies im Knoten <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>

BEARBEITEN

Ich habe es auch geschafft, mit der Farbe umzugehen, indem ich diesen Hook https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js und die von @gylippus vorgeschlagene Lösung verwendet habe (danke!)

@blckshrk Ja, ich habe das Plugin installiert. Können Sie mir die Bildgröße mitteilen, die Sie verwenden? Die Bildabmessungen sowie die Größe in KB.
Und die Plattform, die Sie getestet haben.

Irgendwelche Updates dazu? 20 Tage jetzt und immer noch keine Lösung? Es kann nicht geschlossen werden, wenn es immer noch ein Problem ist?!

Ich hatte das gleiche Problem und konnte es serverseitig lösen. Ich habe das Symbol manuell in den Drawable-Ordnern im Plattform-Android-Ordner mit dem Namen notification_icon.png abgelegt.
Über die Firebase-Konsole sehe ich immer wieder das falsche Icon, aber einen eigenen Server sende ich folgendes als Body der Anfrage:

$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
);

Ich hoffe das hilft

Tatsächlich scheint mir nach einigem Protokollieren und Lesen der gesamte NotificationBuilder-Code in FirebasePluginMessagingService.java / sendNotification strittig zu sein, da er niemals ausgeführt wird, wenn eine Benachrichtigungsnutzlast vorhanden ist. Abgesehen von dem Symbolproblem begann ich dies auch zu vermuten, da der NotificationBuilder-Code einen .setSound(defaultSoundUri) ausführt, aber nie abgespielt wird, wenn Benachrichtigungen in der Taskleiste eintreffen.

Aus diesem Grund funktioniert die obige Lösung von sergiojup, da die Benachrichtigung nicht vom Plugin-Code erstellt wird, sondern von FCM selbst, das Anweisungen aus der Benachrichtigungsnutzlast entgegennimmt.

Was das Warum angeht... auf Android wird onMessageReceived nur aufgerufen, wenn:
*) Es gibt NUR eine Benachrichtigungsnutzlast und die App ist im Vordergrund
*) Es gibt eine Benachrichtigungsnutzlast UND eine Datennutzlast und die App ist im Vordergrund
*) Es gibt NUR eine Datennutzlast und die App befindet sich im Vorder- oder Hintergrund

In diesen Fällen wird onMessageReceived also NICHT aufgerufen:
*) Es gibt NUR eine Benachrichtigungsnutzlast und die App läuft im Hintergrund
*) Es gibt eine Benachrichtigungsnutzlast UND eine Datennutzlast und die App läuft im Hintergrund

Wenn man sich den Code ansieht, besteht die einzige Möglichkeit, das Plugin die Benachrichtigung erstellen zu lassen, darin, nur die Datennutzlast zu verwenden, die sowohl Titel- als auch Texteigenschaften hat, während die App im Hintergrund läuft.

Danke @blckshrk !! Ich habe es endlich geschafft, das zu tun!

Ich verwende Ionic v2 und [email protected] :
Ionisch: 2.2.2
Kordova: 6.5.0
npm: 4.6.1

  1. Installieren Sie das Custom-Config-Plugin:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Laden Sie https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js und https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js in eine neues Verzeichnis namens "package-hooks" (oder was auch immer Sie wollen) in Ihrem Projektstammverzeichnis.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Erstellen Sie die folgenden Verzeichnisse und Dateien in Ihrem Projektstammverzeichnis (nicht innerhalb von Plattformen):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png ist Ihr Android >= API 21-Benachrichtigungssymbol. Meins ist 144x144px groß und sieht toll aus.

styles.xml enthält:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Bearbeiten Sie die config.xml. Wichtig : Stellen Sie sicher, dass Sie diesen Namespace im Widget-Tag hinzufügen.
    <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>

Und das ist alles!

Ich verstehe nicht, wo ich Folgendes in config.xml hinzufügen soll? Tipps dazu? Außerdem bin ich mit XML nicht wirklich vertraut, was soll ich genau im Namensraum hinzufügen? @ Schamane

<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 Entschuldigung, ich war diese Tage nicht da. Schauen Sie sich die Originaldatei an (natürlich mit einigen ersetzten Dingen). Ich hoffe es hilft.

<?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>

@schamank Vielen Dank dafür. Ich habe den ganzen Tag mit Version 0.1.24 gekämpft und kein Glück gehabt, und Ihre Lösung hat funktioniert. Können Sie mir mitteilen, warum genau das das benutzerdefinierte Symbol funktioniert? Ich habe die Anweisungen in Read Me sehr genau befolgt und es wurde immer nur ein ausgegrautes Symbol angezeigt. Ihre Lösung hat sofort funktioniert ... Ich würde nur gerne wissen, warum!

@jskidd3 Freut mich , dass es geholfen hat! Es ist wirklich ganz einfach. Mit dem Plugin cordova-custom-config können Sie Änderungen an der endgültigen Konfiguration von Cordova für jede Plattform vornehmen (Info.plist / AndroidManifest.xml). Im Konfigurationsdateiblock weisen Sie also die Plugin-Konfiguration für Android an, im Drawables-Verzeichnis unter dem neuen Namen "notification_icon" nach "default_notification_icon" zu suchen (das Plugin verwaltet die Dateierweiterung, wenn ich mich gut erinnere). Dann definierst du im nächsten Block die Hintergrundfarbe (rot). Jetzt brauchen Sie eine Möglichkeit, diese Datei (notification_icon.png) zur Erstellungszeit an die richtige Stelle zu bringen, also brauchen Sie dafür einen Hook. Das ist android_custom_resources.js. Es nimmt alles, was sich in resources/android/custom/* befindet, und fügt die zeichbaren Verzeichnisse des Builds ein (Sie können dies ändern, indem Sie das Skript bearbeiten, aber es ist für diese Aufgabe in Ordnung). Ähnlich mit zusätzlichen Konfigurationsstilen. Sie erstellen diese styles.xml-Datei; Definieren Sie die Farbe (ich habe sie "rot" genannt, aber es kann alles sein, was Sie wollen) und dann kopiert android_custom_values.js sie in das erstellte Verzeichnis "platforms/android/res/values". Schließlich binden Sie diese Skripte in config.xml so, dass sie in einem bestimmten Moment ausgeführt werden. Für diese Aufgabe müssen sie "after_prepare" kopiert werden, was bedeutet, nachdem Cordova die Builds vorbereitet hat (wiederum, wenn ich mich recht erinnere ... können Sie die Dokumentation der Paket-Hooks von Ionic für weitere Details/Ereignisse überprüfen).

Die Antwort von @alexbonhomme hat bei mir funktioniert :) https://github.com/arnesson/cordova-plugin-firebase/issues/53#issuecomment -304573222

Die Entscheidung von @shamank funktioniert für mich teilweise.
Ich verwende Angular + Cordova.

Alles funktioniert, bis auf eine Sache: android_custom_resources.js erstellt keine Ordner (drawable-ldpi, drawable-mdpi usw.) und kopiert keine Dateien, wenn keine Ordner vorhanden sind.

Also habe ich dieses Skript entfernt und in config.xml verwendet:

Hinweis: Pfade können aufgrund benutzerdefinierter Änderungen unterschiedlich sein und [email protected] und > hat den Ordner res/ an einer anderen Stelle.

`

    <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" />`

Wie auch immer, danke @alexbonhomme und @shamank !

Für Ionic 3 (genauer gesagt für cordova-android@7) in den Lösungspfaden von @shamank im Inneren:
package-hooks/android_custom_resources.js package-hooks/android_custom_values.js
soll aktualisiert werden, da sich der Ordner $# res 1$#$ jetzt in platforms/android/app/src/main/ befindet.

  1. gehe zu package-hooks/android_custom_resources.js und aktualisiere
    var platformDir = 'platforms/android';
    zu
    var platformDir = 'platforms/android/app/src/main';

  2. gehe zu package-hooks/android_custom_values.js und aktualisiere
    var platformDir = platforms/android/res/values';
    zu
    var platformDir = 'platforms/android/app/src/main/res/values';

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

dhavalsoni2001 picture dhavalsoni2001  ·  5Kommentare

LKruglov picture LKruglov  ·  4Kommentare

matthitachi picture matthitachi  ·  5Kommentare

danielpalen picture danielpalen  ·  5Kommentare

stephan-nordnes-eriksen picture stephan-nordnes-eriksen  ·  5Kommentare