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:
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?
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 ..
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>
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
Instal plugin konfigurasi khusus:
$ ionic plugin add cordova-custom-config --fetch --save
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
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>
<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.
buka package-hooks/android_custom_resources.js
dan perbarui
var platformDir = 'platforms/android';
ke
var platformDir = 'platforms/android/app/src/main';
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';
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
Instal plugin konfigurasi khusus:
$ ionic plugin add cordova-custom-config --fetch --save
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
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:Dan itu saja!