Cordova-plugin-firebase: Ikon Bilah Status Android - Semua Putih

Dibuat pada 13 Sep 2016  ·  25Komentar  ·  Sumber: arnesson/cordova-plugin-firebase

Hai,
Saya telah mencoba mencari cara untuk mengubah ikon yang ditampilkan di bilah status Android ketika pemberitahuan push dikirimkan. Berikut adalah contoh dari apa yang terjadi:

screenshot_2016-09-13-08-53-22

Seperti yang Anda lihat, ikon untuk aplikasi saya bukanlah gambar transparan. Jika saya mengubahnya menjadi gambar transparan, ikon push terlihat baik-baik saja tetapi ikon aplikasi sekarang menjadi gambar transparan dan bukan itu yang saya inginkan. Saya telah mencoba berbagai variasi nama file tetapi sepertinya tidak ada yang berhasil. Saat melihat ke dalam kode, src/Android/FirebasePluginMessagingService.java pada baris 73 ada ini:
.setSmallIcon(getApplicationInfo().icon)

Apakah saya benar mengatakan bahwa Anda tidak dapat mengatur ikon yang berbeda dari ikon aplikasi Anda?
Apakah mungkin untuk mengatur file yang berbeda untuk ikon bilah status?
Atau ada saran lain tentang cara mengatasi masalah ini?

Komentar yang paling membantu

Terima kasih @blckshrk !! Saya akhirnya berhasil melakukan itu!

Saya menggunakan Ionic v2 dan [email protected] :
Ionik: 2.2.2
Cordova: 6.5.0
npm: 4.6.1

  1. Instal plugin konfigurasi khusus:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Unduh https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js dan https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js ke dalam direktori baru yang disebut "paket-kait" (atau apa pun yang Anda inginkan) di root proyek Anda.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Buat direktori dan file berikut di root proyek Anda (bukan di dalam platform):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png adalah ikon pemberitahuan Android >= API 21 Anda. Milik saya adalah 144x144px dan terlihat bagus.

styles.xml berisi:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Edit config.xml. Penting : Pastikan Anda menambahkan namespace itu di tag widget.
    <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>

Dan itu saja!

Semua 25 komentar

Saya belum menguji ini, tetapi Anda harus dapat mengatur ikon khusus dengan membuat fcm_Push_icon.png dalam semua ukuran yang diperlukan. Sebagai default, ikon aplikasi akan digunakan jika fcm_push_icon.png tidak ada. Ikon harus berada di pohon folder Android/res.

anda dapat menggunakan ini untuk menghasilkan semua ukuran yang berbeda: http://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Hai, kami menghadapi masalah yang sama. Kami mencoba menempatkan ikon fcm_push_icon.png di pohon folder android/res, tetapi ikon notifikasi masih berwarna putih.

@MikeBateman sudahkah Anda menemukan solusi?

Halo, untuk mengatasi masalah ini, Anda dapat mengubah SDK target aplikasi Anda, silakan periksa ini , tetapi tentu saja ini bukan solusi yang tepat.

Saya telah meneliti dan mendapatkan solusi ini:

Pergi ke rute ini src/android/FirebasePluginMessagingService.java dan temukan baris ini .setSmallIcon(getApplicationInfo().icon) (seperti yang disebutkan @MikeBateman ), sekarang tambahkan kondisi yang akan memeriksa apakah aplikasi berjalan di android lollipop+, jika benar notifikasi harus menggunakan ikon desain material jika tidak, itu akan menggunakan ikon aplikasi default, kode:

...

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

Saya pikir yang terbaik adalah meletakkan ikon desain material Anda di myappresources dan plugin melakukan pekerjaan ini dengan sendirinya, sekarang saya tidak tahu bagaimana melakukannya, jika ada yang bisa itu akan bagus, semoga membantu! @delphaber

diperbaiki di 33c52c7e8a1835d5f595e58eaef43e4f49b4b23a

plugin sekarang akan menggunakan notification_icon di drawable, jika ada. jika tidak, itu akan menggunakan ikon aplikasi default

Hai,

Saya tidak mengerti. Saya mencoba meletakkan notification_icon.png di setiap folder yang dapat digambar (untuk setiap ukuran), tetapi plugin masih menggunakan yang default (ikon aplikasi). Apakah saya melewatkan sesuatu?

Terima kasih!

@blckshrk cc/ @robertarnesson

Saya mengalami hal yang sama saat setelah memperbarui file src Android dan menambahkan semua file notification_icon.png saya masih melihat kotak putih. Saya akhirnya mengikuti saran dari sini: http://stackoverflow.com/questions/37325051/notification-icon-with-the-new-firebase-cloud-messaging-system

Pertama saya harus mengupdate Google Repository saya untuk menjadikan Firebase SDK terbaru yang paling up to date di komputer saya. Ini adalah versi 9.8.0 untuk com.google.firebase:firebase-core pada saat penulisan ini dan saya membuatnya berfungsi. (Saya menggunakan 9.4.0 sebelumnya)

Kemudian saya menambahkan ini ke AndroidManifest.xml saya :

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

Jika Anda ingin menggunakan opsi mereka untuk mengubah default_notification_color Anda perlu menambahkan yang berikut ini. Ikon kami adalah ikon putih dengan latar belakang transparan, jadi kami menambahkan warna kami sendiri di belakangnya yang bagus di layar kunci.

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

Anda juga perlu menambahkan file res/values/colors.xml dengan yang berikut ini, yang tentunya pilihan warna Anda sendiri jika Anda mengatur latar belakang:

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

Ini semua berfungsi pada Firebase 9.8.0

@blckshrk bagaimana Anda menambahkan ikon ke proyek? Anda perlu menggunakan config.xml proyek Anda untuk menambahkannya ke sumber daya. hanya meletakkannya di folder tidak akan membuatnya terlihat untuk kode sejauh yang saya tahu

Saat ini saya menggunakan Ionic 2 untuk membuat aplikasi saya dan melakukan hal berikut:
Saya telah menambahkan file ikon ke folder res ionic jadi jika saya menjalankan perintah ionic resources gambar untuk ukuran layar yang berbeda dibuat.

Ini juga menambahkan jalur gambar ke file config.xml .

Dapatkah seseorang tolong membuat balasan terperinci tentang apa yang sebenarnya perlu dilakukan ..

  • Seperti di mana file perlu ditambahkan di folder mana tepatnya untuk Android
  • apakah mereka perlu ditambahkan dalam file config.xml?
  • berapa ukuran gambar file

Saya tidak memiliki pengetahuan tentang kode dan struktur folder Android Asli, jadi balaslah dengan tepat.

-Terima kasih

Sebenarnya seperti @prantikv saya agak bingung. Saya menggunakan Ionic 1 (tetapi dengan alur kerja yang sama). Saya mencoba meletakkan ikon saya di res/drawable/ dan menggunakan cordova-custom-config untuk menambahkan <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" /> di AndroidManifest.xml saya (di node manifest secara langsung), tetapi tidak ada yang berjalan seperti yang diharapkan.

@gylippus Saya tidak mendapatkan bagian com.google.firebase:firebase-core . Bagaimana Anda memeriksa versi?

Terima kasih teman-teman!

@robertarnesson @gylippus Apakah Anda punya contoh kerja?

Saya berhasil membuatnya bekerja dengan 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>

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

Terima kasih banyak atas bantuan Anda!

Akan sangat bagus jika memiliki pengait untuk melakukan pekerjaan ini secara otomatis (memindahkan file dan mengedit manifes) jika notification_icon.png ada di folder root (atau resources ) (seperti untuk folder file konfigurasi). Apa yang dipikirkannya?

@blckshrk
Saya mencoba menambahkan kode berikut seperti yang Anda sebutkan

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

Tapi saya mendapatkan kesalahan berikut selama proses pembuatan:

: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

Saya kemudian secara manual menambahkan berikut ini ke AndroidManifest.xml
<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />

Dan itu berfungsi untuk Android 4.4 Tetapi tidak berfungsi untuk Android 5.1.

Versi mana yang Anda buat?
Apakah Anda juga menambahkan file notification_icon.png di semua folder drawable atau hanya satu?

@prantikv Apakah Anda menginstal https://github.com/dpa99c/cordova-custom-config ?

Sebenarnya saya menggunakan kait ini https://github.com/driftyco/ionic-package-hooks/blob/master/Android_custom_resources.js untuk secara otomatis memindahkan file notification_icon.png ke setiap folder yang dapat digambar.

Pada dasarnya saya memiliki ini di dalam <platform name="android"> node :

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

EDIT

Saya juga berhasil menangani warna dengan menggunakan kait ini https://github.com/driftyco/ionic-package-hooks/blob/master/Android_custom_values.js dan solusi yang diusulkan oleh @gylippus (terima kasih!)

@blckshrk Ya saya menginstal plugin..Bisakah Anda memberi tahu saya ukuran Gambar yang Anda gunakan..Dimensi gambar serta ukuran dalam KB.
Dan platform yang telah Anda uji itu.

Ada pembaruan tentang ini? 20 hari sekarang dan masih belum ada solusi? Itu tidak bisa ditutup jika masih menjadi masalah?!

Saya memiliki masalah yang sama dan saya bisa menyelesaikannya dari sisi server. Saya menempatkan ikon secara manual ke folder yang dapat digambar di dalam folder platform-android dengan nama notification_icon.png.
Melalui konsol Firebase saya terus melihat ikon yang salah, tetapi server sendiri saya mengirim yang berikut ini sebagai isi permintaan:

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

Semoga membantu

Sebenarnya, setelah beberapa kali masuk dan membaca, menurut saya seluruh kode notificationBuilder di FirebasePluginMessagingService.java / sendNotification diperdebatkan karena tidak pernah dijalankan ketika ada muatan notifikasi. Selain masalah ikon, saya juga mulai mencurigai ini karena kode notificationBuilder melakukan .setSound(defaultSoundUri) tetapi tidak pernah diputar saat notifikasi tiba di baki.

Inilah sebabnya mengapa solusi sergiojup di atas berfungsi, karena notifikasi tidak dibuat oleh kode plugin tetapi oleh FCM itu sendiri yang mengambil instruksi dari payload notifikasi.

Adapun alasannya.. di Android, onMessageReceived hanya dipanggil ketika:
*) HANYA ada muatan notifikasi dan aplikasi ada di latar depan
*) ada payload notifikasi DAN payload data dan aplikasi di latar depan
*) HANYA ada muatan data dan aplikasi berada di latar depan atau latar belakang

Jadi dalam kasus ini, onMessageReceived TIDAK dipanggil:
*) HANYA ada muatan notifikasi dan aplikasi ada di latar belakang
*) ada payload notifikasi DAN payload data dan aplikasi di background

Melihat kodenya, satu-satunya cara agar plugin membuat notifikasi adalah dengan menggunakan payload data saja, yang memiliki properti judul dan teks, saat aplikasi berada di latar belakang.

Terima kasih @blckshrk !! Saya akhirnya berhasil melakukan itu!

Saya menggunakan Ionic v2 dan [email protected] :
Ionik: 2.2.2
Cordova: 6.5.0
npm: 4.6.1

  1. Instal plugin konfigurasi khusus:
    $ ionic plugin add cordova-custom-config --fetch --save

  2. Unduh https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_resources.js dan https://github.com/driftyco/ionic-package-hooks/blob/master/android_custom_values.js ke dalam direktori baru yang disebut "paket-kait" (atau apa pun yang Anda inginkan) di root proyek Anda.
    package-hooks/android_custom_resources.js
    package-hooks/android_custom_values.js

  3. Buat direktori dan file berikut di root proyek Anda (bukan di dalam platform):
    resources/android/custom/notification_icon.png
    resources/android/values/styles.xml

notification_icon.png adalah ikon pemberitahuan Android >= API 21 Anda. Milik saya adalah 144x144px dan terlihat bagus.

styles.xml berisi:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="red">#FF8614</color>
</resources>
  1. Edit config.xml. Penting : Pastikan Anda menambahkan namespace itu di tag widget.
    <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>

Dan itu saja!

Saya tidak mengerti di mana harus menambahkan yang berikut ini di config.xml? Tips tentang itu? Juga, saya tidak begitu akrab dengan XML, apa yang harus saya tambahkan di namespace tepatnya? @dukun

<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 Maaf, saya tidak ada hari ini. Lihatlah file aslinya (dengan beberapa hal yang diganti, tentu saja). Semoga membantu.

<?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 Terima kasih banyak untuk ini. Telah berjuang dengan versi 0.1.24 sepanjang hari tidak berhasil dan solusi Anda berhasil. Bisakah Anda memberi tahu saya mengapa tepatnya ini membuat ikon khusus berfungsi? Saya mengikuti instruksi di baca saya dengan sangat dekat dan itu hanya menunjukkan ikon berwarna abu-abu. Solusi Anda langsung bekerja... Saya hanya ingin tahu alasannya!

@jskidd3 Senang itu membantu! Ini benar-benar berhenti sederhana. Plugin cordova-custom-config memungkinkan Anda membuat perubahan pada konfigurasi akhir Cordova untuk setiap platform (Info.plist / AndroidManifest.xml). Jadi, di blok file konfigurasi, Anda memberi tahu konfigurasi plugin untuk Android untuk mencari "default_notification_icon" di direktori drawable dengan nama baru "notification_icon" (plugin menangani ekstensi file jika saya ingat dengan baik). Kemudian Anda menentukan warna latar belakang di blok berikutnya (merah). Sekarang Anda memerlukan cara untuk mendapatkan file itu (notification_icon.png) di tempat yang tepat pada waktu pembuatan, jadi Anda memerlukan pengait untuk melakukannya. Itu adalah android_custom_resources.js. Dibutuhkan apa pun yang ada di resources/Android/custom/* dan memasukkan direktori build yang dapat digambar (Anda dapat mengubahnya dengan mengedit skrip, tetapi tidak masalah untuk tugas ini). Mirip dengan gaya konfigurasi tambahan. Anda membuat file styles.xml ini; tentukan warnanya (saya menamakannya "merah" tetapi bisa apa saja yang Anda inginkan) dan kemudian android_custom_values.js menyalinnya ke direktori yang dibuat "platform/android/res/values". Terakhir, di config.xml Anda mengikat skrip ini untuk dijalankan pada saat tertentu. Untuk tugas ini, mereka perlu disalin "after_prepare", yang berarti, setelah Cordova menyiapkan build (sekali lagi, jika saya ingat dengan baik... Anda dapat memeriksa dokumen kait paket Ionic untuk detail/acara lebih lanjut).

Jawaban @alexbonhomme bekerja untuk saya :) https://github.com/arnesson/cordova-plugin-firebase/issues/53#issuecomment -304573222

Keputusan @shamank bekerja untuk saya sebagian.
Saya menggunakan Angular + Cordova.

Semuanya berfungsi kecuali satu hal: android_custom_resources.js tidak akan membuat folder (drawable-ldpi, drawable-mdpi, dll.) dan tidak akan menyalin file jika folder tidak ada.

Jadi saya telah menghapus skrip itu dan menggunakannya di config.xml:

Catatan: jalur dapat berbeda karena perubahan khusus dan [email protected] dan > memiliki folder res/ di tempat lain.

`

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

Bagaimanapun, terima kasih @alexbonhomme dan @shamank !

Untuk Ionic 3 (lebih khusus untuk cordova-Android@7) di jalur solusi @shamank di dalam:
package-hooks/android_custom_resources.js package-hooks/android_custom_values.js
harus diperbarui karena folder res ada di dalam platforms/android/app/src/main/ sekarang.

  1. buka package-hooks/android_custom_resources.js dan perbarui
    var platformDir = 'platforms/android';
    ke
    var platformDir = 'platforms/android/app/src/main';

  2. buka package-hooks/android_custom_values.js dan perbarui
    var platformDir = platforms/android/res/values';
    ke
    var platformDir = 'platforms/android/app/src/main/res/values';

Apakah halaman ini membantu?
0 / 5 - 0 peringkat