Cordova-plugin-firebase: رمز شريط حالة Android - أبيض بالكامل

تم إنشاؤها على ١٣ سبتمبر ٢٠١٦  ·  25تعليقات  ·  مصدر: arnesson/cordova-plugin-firebase

مرحبا،
لقد كنت أحاول العثور بعيدًا على تغيير الرمز الذي يتم عرضه على شريط حالة android عند تسليم إشعار الدفع. فيما يلي مثال لما يحدث:

screenshot_2016-09-13-08-53-22

كما ترى فإن أيقونة تطبيقي ليست صورة شفافة. إذا قمت بتغييرها إلى صورة شفافة ، فإن أيقونة الدفع تبدو جيدة ولكن أيقونة التطبيق هي الآن الصورة الشفافة وهذا ليس ما أريده. لقد جربت أشكالًا مختلفة من أسماء الملفات ولكن لا شيء يبدو أنه يعمل. عند النظر في الكود ، src / android / FirebasePluginMessagingService.java على السطر 73 ، يوجد هذا:
.setSmallIcon(getApplicationInfo().icon)

هل أنا محق في القول بأنه لا يمكنك تعيين أيقونة مختلفة عن أيقونة تطبيقك؟
هل من الممكن تعيين ملف مختلف لأيقونة شريط الحالة؟
أو أي اقتراحات أخرى حول كيفية الالتفاف على هذه المشكلة؟

التعليق الأكثر فائدة

شكرا @ blckshrk !! لقد نجحت أخيرًا في القيام بذلك!

أنا أستخدم Ionic v2 و [email protected] :
أيوني: 2.2.2
كوردوفا: 6.5.0
نانومتر: 4.6.1

  1. قم بتثبيت ملحق التكوين المخصص:
    $ 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. حجم الألغام هو 144 × 144 بكسل ويبدو رائعًا.

يحتوي 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

سيستخدم المكون الإضافي الآن إشعار _icon في drawable ، إذا كان موجودًا. وإلا فسيستخدم رمز التطبيق الافتراضي

مهلا،

أنا لا أفهم. أحاول وضع notification_icon.png في كل مجلد قابل للرسم (لكل حجم) ، لكن لا يزال المكون الإضافي يستخدم المجلد الافتراضي (رمز التطبيق). هل فاتني شيء؟

شكرا!

تضمين التغريدة

واجهت نفس الشيء أثناء تحديث ملفات 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 .

هل يمكن لشخص ما أن يقدم إجابة مفصلة حول ما يجب فعله بالضبط ..

  • مثل المكان الذي يجب إضافة الملفات فيه وفي أي مجلد مخصص لنظام Android بالضبط
  • هل يحتاجون إلى إضافتهم في ملف 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 . كيف تتحقق من الإصدار؟

شكرا يا شباب!

robertarnessongylippus هل لديك مثال عملي؟

تمكنت من جعله يعمل مع 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 ) (كما هو الحال بالنسبة لـ التكوين). ما رأيك في ذلك؟

تضمين التغريدة
حاولت إضافة الكود التالي كما ذكرت

<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 يوما حتى الآن ولا يوجد حل؟ لا يمكن إغلاقها إذا كانت لا تزال مشكلة ؟!

كان لدي نفس المشكلة ويمكنني حلها من جانب الخادم. لقد قمت بوضع الأيقونة يدويًا في المجلدات القابلة للرسم داخل مجلد platform-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
);

نأمل أن تكون هذه المساعدة

في الواقع ، بعد بعض عمليات التسجيل والقراءة ، يبدو لي أن كود منشئ الإشعارات بالكامل في FirebasePluginMessagingService.java / sendNotification هو موضع نقاش لأنه لا يتم تشغيله أبدًا عند وجود حمولة إشعار. بصرف النظر عن مشكلة الرمز ، بدأت أيضًا في الاشتباه في ذلك نظرًا لأن رمز "باني الإشعارات" يقوم بتشغيل .setSound (defaultSoundUri) ولكن لا يتم تشغيله أبدًا عند وصول الإشعارات في الدرج.

هذا هو السبب في أن حل sergiojup أعلاه يعمل ، حيث أن الإشعار لا يتم إنشاؤه بواسطة كود البرنامج المساعد ولكن بواسطة FCM نفسها التي تأخذ التعليمات من حمولة الإشعارات.

بالنسبة إلى السبب .. على Android ، لا يتم استدعاء onMessageReceived إلا عندما:
*) هناك فقط حمولة إشعار والتطبيق في المقدمة
*) هناك حمولة إشعار وحمولة البيانات والتطبيق في المقدمة
*) هناك فقط حمولة بيانات والتطبيق في المقدمة أو الخلفية

لذلك في هذه الحالات ، لا يتم استدعاء onMessageReceived:
*) هناك فقط حمولة إشعار والتطبيق في الخلفية
*) هناك حمولة إشعار وحمولة البيانات والتطبيق في الخلفية

بالنظر إلى الكود ، فإن الطريقة الوحيدة لجعل المكون الإضافي ينشئ الإشعار هو استخدام حمولة البيانات فقط ، التي تحتوي على خصائص العنوان والنص ، أثناء وجود التطبيق في الخلفية.

شكرا @ blckshrk !! لقد نجحت أخيرًا في القيام بذلك!

أنا أستخدم Ionic v2 و [email protected] :
أيوني: 2.2.2
كوردوفا: 6.5.0
نانومتر: 4.6.1

  1. قم بتثبيت ملحق التكوين المخصص:
    $ 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. حجم الألغام هو 144 × 144 بكسل ويبدو رائعًا.

يحتوي 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 ، فما الذي يجب أن أضيفه بالضبط في مساحة الاسم؟ shamank

<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 طوال اليوم ولم يحالفك الحظ وعمل الحل الخاص بك. هل يمكنك إخباري لماذا بالضبط هذا يجعل الرمز المخصص يعمل؟ لقد اتبعت التعليمات الواردة في القراءة عن كثب ، ولم تظهر سوى أيقونة رمادية اللون. نجح الحل الذي قدمته على الفور ... أود فقط معرفة السبب!

@ jskidd3 سعيد لأنه ساعد! انها حقا بسيطة. يتيح لك المكون الإضافي cordova-custom-config إجراء تغييرات في التكوين النهائي لـ Cordova لكل منصة (Info.plist / AndroidManifest.xml). لذلك ، في كتلة ملف التكوين ، يمكنك إخبار تهيئة المكون الإضافي لنظام التشغيل Android بالبحث عن "default_notification_icon" في الدليل القابل للرسوم تحت الاسم الجديد لـ "رمز الإشعار" (يتعامل البرنامج المساعد مع امتداد الملف إذا كنت أتذكر جيدًا). ثم تحدد لون الخلفية في الكتلة التالية (أحمر). أنت الآن بحاجة إلى طريقة للحصول على هذا الملف (ification_icon.png) في المكان المناسب في وقت البناء ، لذلك أنت بحاجة إلى أداة ربط للقيام بذلك. هذا هو android_custom_resources.js. يتطلب الأمر كل ما هو موجود في الموارد / android / custom / * ويضع في الدلائل القابلة للرسم الخاصة بالبناء (يمكنك تغيير ذلك عن طريق تحرير البرنامج النصي ، ولكن لا بأس بهذه المهمة). مماثلة مع أنماط التكوين الإضافية. تقوم بإنشاء ملف styles.xml هذا ؛ حدد اللون (سميته "أحمر" ولكن يمكن أن يكون ما تريد) ثم يقوم android_custom_values.js بنسخه إلى الدليل المبني "platform / android / res / القيم". أخيرًا ، في ملف config.xml ، تقوم بربط هذه البرامج النصية للتشغيل في لحظة معينة. بالنسبة لهذه المهمة ، يجب نسخها "after_prepare" ، مما يعني ، بعد أن أعدت كوردوفا البنيات (مرة أخرى ، إذا كنت أتذكر جيدًا ... يمكنك التحقق من مستندات حزمة خطافات Ionic لمزيد من التفاصيل / الأحداث).

نجحت إجابة alexbonhomme بالنسبة لي :) https://github.com/arnesson/cordova-plugin-firebase/issues/53#issuecomment -304573222

قرار shamank يعمل بالنسبة لي جزئيًا.
أنا أستخدم Angular + Cordova.

كل شيء يعمل باستثناء شيء واحد: لن يقوم 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 موجود بداخل 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 التقييمات

القضايا ذات الصلة

jdla1990 picture jdla1990  ·  4تعليقات

LKruglov picture LKruglov  ·  4تعليقات

danielpalen picture danielpalen  ·  5تعليقات

dhavalsoni2001 picture dhavalsoni2001  ·  5تعليقات

merbin2012 picture merbin2012  ·  4تعليقات