يتم تحديث مجموعة رموز الإيموجي العادية سنويًا من قِبل Unicode، حيث يتزايد استخدام رموز الإيموجي بسرعة في جميع أنواع التطبيقات.
إذا كان تطبيقك يعرض محتوى من الإنترنت أو يوفّر إمكانية إدخال نص، ننصحك بشدة بإتاحة أحدث خطوط الإيموجي. وإلا، قد يتم عرض الإيموجي اللاحق كمربّع صغير يُسمى توفو (☐) أو كسلاسل إيموجي أخرى معروضة بشكل غير صحيح.
لا يمكن تحديث خطوط الإيموجي في الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأقدم، لذا يجب تحديث التطبيقات التي تعرضها على هذه الإصدارات يدويًا.
في ما يلي أمثلة على رموز الإيموجي الحديثة.
| أمثلة | الإصدار |
|---|---|
| 🇨🇶 | 16.0 (سبتمبر 2024) |
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | 15.1 (سبتمبر 2023) |
| 🩷 🫸🏼 🐦⬛ | 15.0 (سبتمبر 2022) |
| 🫠 🫱🏼🫲🏿 🫰🏽 | 14.0 (سبتمبر 2021) |
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1 (سبتمبر 2020) |
| 🥲 🥷🏿 🐻❄️ | 13.0 (مارس 2020) |
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1 (أكتوبر 2019) |
| 🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0 (فبراير 2019) |
توفّر مكتبة androidx.emoji2:emoji2 توافقًا أسهل مع الأنظمة القديمة
لإصدارات Android الأقدم. تعتمد مكتبة emoji2 على مكتبة AppCompat ولا تتطلّب أي إعدادات إضافية لتعمل.
إتاحة استخدام رموز الإيموجي في ميزة "الكتابة"
توفّر قائمة مكونات الصنف (BOM) لشهر مارس 2023 (Compose UI 1.4) إمكانية استخدام أحدث إصدار من الرموز التعبيرية، بما في ذلك التوافق مع الأنظمة القديمة مع الإصدارات القديمة من Android حتى المستوى 21 من واجهة برمجة التطبيقات. تتناول هذه الصفحة كيفية ضبط رموز الإيموجي الحديثة في نظام View. لمزيد من المعلومات، يُرجى الاطّلاع على صفحة الرموز التعبيرية في ميزة "الكتابة".
المتطلبات الأساسية
للتأكّد من أنّ تطبيقك يعرض رموز الإيموجي الأحدث بشكل صحيح، يمكنك تشغيله على جهاز يعمل بنظام التشغيل Android 10 (مستوى واجهة برمجة التطبيقات 29) أو إصدار أقدم. تتضمّن هذه الصفحة رموز إيموجي حديثة يمكنك عرضها للاختبار.
استخدام AppCompat لإتاحة أحدث رموز الإيموجي
يتضمّن الإصدار 1.4 من AppCompat إمكانية استخدام رموز الإيموجي.
لاستخدام AppCompat لإتاحة استخدام الإيموجي، اتّبِع الخطوات التالية:
تأكَّد من أنّ الوحدة تعتمد على الإصدار 1.4.0-alpha01 أو إصدار أحدث من مكتبة
AppCompat.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"تأكَّد من أنّ جميع الأنشطة التي تعرض نصًا تستخدم الفئة
AppCompatActivity.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
Java
MyActivity.java class MyActivity extends AppCompatActivity { ... }
اختبِر عملية الدمج من خلال تشغيل تطبيقك على جهاز يعمل بنظام التشغيل Android 10 أو إصدار أقدم وعرض سلسلة الاختبار التالية. تأكَّد من عرض جميع الأحرف بشكل صحيح.
- 16.0: ، ، 🇨🇶
- 15.1: 🐦🔥، 🧑🧑🧒🧒، 👩🏽🦽➡️، 🇲🇶
- 15.0: 🩷، 🫸🏼، 🐦⬛
- 14.0: 🫠، 🫱🏼🫲🏿، 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- الإصدار 13.0: 🥲 و🥷🏿 و🐻❄️
- 12.1: 🧑🏻🦰، 🧑🏿🦯، 👩🏻🤝👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼🤝👩🏻
يعرض تطبيقك تلقائيًا رموز الإيموجي المتوافقة مع الأنظمة القديمة على جميع الأجهزة التي
توفّر موفّر خطوط قابلة للتنزيل ومتوافقة مع emoji2، مثل الأجهزة
التي تعمل من خلال خدمات Google Play.
إذا كان تطبيقك يستخدم AppCompat ولكنّه يعرض مربّعات فارغة (☐)
في بعض الحالات، قد يعرض تطبيقك رمز tofu بدلاً من الإيموجي المناسب، حتى إذا
أضفت مكتبة AppCompat. في ما يلي بعض التفسيرات والحلول المحتملة.
إذا كنت تشغّل التطبيق على جهاز تم تثبيت نظام تشغيل جديد عليه مؤخرًا أو على محاكي جديد
محو بيانات "خدمات Google Play" في التطبيق لمحو أي تخزين مؤقت للخطوط قد يحدث أثناء بدء التشغيل يؤدي ذلك عادةً إلى حلّ المشكلة بعد بضع ساعات.
لمحو بيانات التطبيق، اتّبِع الخطوات التالية:
افتح الإعدادات على جهاز Android.
انقر على التطبيقات والإشعارات.
انقر على عرض كل التطبيقات أو معلومات التطبيق.
انتقِل بين التطبيقات وانقر على خدمات Google Play.
انقر على مساحة التخزين وذاكرة التخزين المؤقت.
انقر على محو ذاكرة التخزين المؤقت.
لا يستخدم تطبيقك فئة متعلّقة بالنص في AppCompat
قد يحدث ذلك إذا لم يتم تمديد AppCompatActivity أو إذا تم إنشاء مثيل
للعرض في الرمز، مثل TextView. تحقَّق مما يلي:
- يوسّع النشاط
AppCompatActivity. - في حال إنشاء العرض في الرمز البرمجي، استخدِم
AppCompatsubclass الصحيح.
يُضخِّم AppCompatActivity تلقائيًا AppCompatTextView بدلاً من
TextView عند تضخيم ملف XML، لذا لست بحاجة إلى تعديل ملف XML.
لا يتيح الهاتف الاختباري استخدام الخطوط القابلة للتنزيل
تأكَّد من أنّ DefaultEmojiCompatConfig.create يعرض إعدادات غير فارغة.
لم تتم ترقية "خدمات Google Play" في محاكي يعمل بمستوى واجهة برمجة تطبيقات أقدم
عند استخدام محاكي على مستوى واجهة برمجة تطبيقات سابق، قد تحتاج إلى تحديث
"خدمات Google Play" المجمّعة لنظام التشغيل emoji2 للعثور على موفّر الخطوط. لإجراء ذلك،
سجِّل الدخول إلى "متجر Google Play" على المحاكي.
للتحقّق من تثبيت إصدار متوافق، اتّبِع الخطوات التالية:
نفِّذ الأمر التالي:
adb shell dumpsys package com.google.android.gms | grep versionتأكَّد من أنّ قيمة
versionCodeأعلى من211200000.
إتاحة استخدام رموز الإيموجي بدون AppCompat
إذا لم يتمكّن تطبيقك من تضمين AppCompat، يمكنه استخدام emoji2 مباشرةً. يتطلّب هذا الإجراء المزيد من العمل، لذا لا تستخدِم هذه الطريقة إلا إذا تعذّر على تطبيقك استخدام AppCompat.
لإتاحة استخدام الإيموجي بدون مكتبة AppCompat، اتّبِع الخطوات التالية:
في ملف
build.gradleالخاص بتطبيقك، أدرِجemoji2وemoji2-views.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"توفّر الوحدة
emoji2-viewsفئات فرعية منTextViewوButtonوEditTextالتي تنفّذEmojiCompat. لا تستخدمه في تطبيق يتضمّنAppCompat، لأنّه ينفّذEmojiCompat.في ملفات XML والرموز البرمجية، أينما تستخدم
TextViewأوEditTextأوButton، استخدِمEmojiTextViewأوEmojiEditTextأوEmojiButtonبدلاً منها.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />من خلال تضمين وحدة
emoji2، يستخدم النظام موفّر الخطوط التلقائي القابل للتنزيل لتحميل خط الرموز التعبيرية تلقائيًا بعد وقت قصير من بدء تشغيل التطبيق. ولا يلزم إجراء أي إعدادات أخرى.لاختبار عملية الدمج، شغِّل تطبيقك على جهاز يعمل بنظام التشغيل Android 11 أو إصدار أقدم ويعرض سلاسل الاختبار التالية. تأكَّد من عرض جميع الأحرف بشكل صحيح.
- 16.0: ، ، 🇨🇶
- 15.1: 🐦🔥، 🧑🧑🧒🧒، 👩🏽🦽➡️، 🇲🇶
- 15.0: 🩷، 🫸🏼، 🐦⬛
- 14.0: 🫠، 🫱🏼🫲🏿، 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- الإصدار 13.0: 🥲 و🥷🏿 و🐻❄️
- 12.1: 🧑🏻🦰، 🧑🏿🦯، 👩🏻🤝👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼🤝👩🏻
استخدام EmojiCompat بدون التطبيقات المصغّرة
يستخدم EmojiCompat EmojiSpan لعرض الصور الصحيحة. لذلك، يجب تحويل أي عنصر CharSequence إلى عنصر Spanned يتضمّن عناصر EmojiSpan.
توفّر فئة EmojiCompat طريقة process() لتحويل CharSequences إلى مثيلات Spanned. باستخدام هذه الطريقة، يمكنك استدعاء process() في الخلفية وتخزين النتائج مؤقتًا، ما يؤدي إلى تحسين أداء تطبيقك.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
Java
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
استخدام EmojiCompat لمحرّرات أسلوب الإدخال
تتيح فئة EmojiCompat للوحات المفاتيح عرض الرموز التعبيرية المتوافقة مع التطبيق
الذي تتفاعل معه. يمكن لمحرّرات أسلوب الإدخال (IME) استخدام طريقة getEmojiMatch() للتحقّق مما إذا كان بإمكان مثيل EmojiCompat عرض رمز إيموجي. تأخذ هذه الطريقة CharSequence
لإيموجي وتُرجع true إذا كان بإمكان EmojiCompat رصد الإيموجي وعرضه.
يمكن للوحة المفاتيح أيضًا التحقّق من إصدار EmojiCompat الذي يتوافق معه التطبيق
لتحديد الإيموجي الذي سيتم عرضه في لوحة الألوان. للتحقّق من الإصدار، إذا كان متاحًا، يمكن للوحة المفاتيح البحث عن المفاتيح التالية في حزمة EditorInfo.extras:
EDITOR_INFO_METAVERSION_KEY: يمثّل إصدار البيانات الوصفية للإيموجي التي يستخدمها التطبيق. إذا لم يكن هذا المفتاح موجودًا، يعني ذلك أنّ التطبيق لا يستخدمEmojiCompat.EDITOR_INFO_REPLACE_ALL_KEY: إذا كان المفتاح متوفّرًا وتم ضبطه علىtrue، يضبط التطبيقEmojiCompatلاستبدال جميع رموز الإيموجي، حتى إذا كانت متوفّرة في النظام.
مزيد من المعلومات حول كيفية ضبط مثيل EmojiCompat
استخدام الإيموجي في طرق العرض المخصّصة
إذا كان تطبيقك يتضمّن طرق عرض مخصّصة تمثّل فئات فرعية مباشرة أو غير مباشرة من TextView، مثل Button أو Switch أو EditText، وكان بإمكان طرق العرض هذه عرض محتوى من إنشاء المستخدمين، يجب أن تنفّذ كل طريقة عرض منها EmojiCompat.
تختلف العملية حسب ما إذا كان تطبيقك يستخدم مكتبة AppCompat.
إضافة طرق عرض مخصّصة للتطبيقات باستخدام AppCompat
إذا كان تطبيقك يستخدم AppCompat، يمكنك توسيع نطاق تنفيذ AppCompat بدلاً من
تنفيذ النظام الأساسي. استخدِم الجدول التالي كدليل حول كيفية توسيع طرق العرض في AppCompat:
| بدلاً من تمديد... | التمديد |
|---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
إضافة طرق عرض مخصّصة للتطبيقات التي لا تستخدم AppCompat
إذا كان تطبيقك لا يستخدم AppCompat، يمكنك استخدام أدوات المساعدة في دمج العرض في وحدة
emoji2-views-helper المصمَّمة للاستخدام في طرق العرض المخصّصة. هذه هي المساعدات التي تستخدمها مكتبة AppCompat لتنفيذ دعم الإيموجي.
أكمِل الخطوات التالية لإتاحة طرق العرض المخصّصة للتطبيقات التي لا تستخدم
AppCompat.
أضِف مكتبة
emoji2-views-helper:implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"اتّبِع التعليمات لتضمين
EmojiTextViewHelperأوEmojiEditTextHelperفي طرق العرض المخصّصة لتطبيقك.اختبِر عملية الدمج من خلال تشغيل تطبيقك على جهاز يعمل بنظام التشغيل Android 10 أو إصدار أقدم وعرض سلسلة الاختبار التالية. تأكَّد من عرض جميع الأحرف بشكل صحيح.
- 16.0: ، ، 🇨🇶
- 15.1: 🐦🔥، 🧑🧑🧒🧒، 👩🏽🦽➡️، 🇲🇶
- 15.0: 🩷، 🫸🏼، 🐦⬛
- 14.0: 🫠، 🫱🏼🫲🏿، 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- الإصدار 13.0: 🥲 و🥷🏿 و🐻❄️
- 12.1: 🧑🏻🦰، 🧑🏿🦯، 👩🏻🤝👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼🤝👩🏻
ميزات اختيارية للتعامل مع emoji2
بعد تضمين مكتبة emoji2 في تطبيقك، يمكنك إضافة الميزات الاختيارية الموضَّحة في هذا القسم.
ضبط emoji2 لاستخدام خط مختلف أو موفّر خطوط قابلة للتنزيل
لضبط emoji2 لاستخدام خط مختلف أو موفّر خطوط قابلة للتنزيل، اتّبِع
الخطوات التالية:
أوقِف
EmojiCompatInitializerمن خلال إضافة ما يلي إلى بيان تطبيقك:<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer" tools:node="remove" /> </provider>نفّذ أيًا مما يلي:
استخدِم الإعدادات التلقائية من خلال استدعاء
DefaultEmojiCompatConfiguration.create(context).يمكنك إنشاء الإعدادات الخاصة بك لتحميل الخطوط من مصدر آخر باستخدام
EmojiCompat.Config. توفّر هذه الفئة عدة خيارات لتعديل سلوكEmojiCompat، كما هو موضّح في القسم التالي.
تعديل سلوك EmojiCompat
يمكنك استخدام مثيل من EmojiCompat.Config لتعديل سلوك EmojiCompat.
أهم خيار ضبط هو
setMetadataLoadStrategy()،
الذي يتحكّم في وقت تحميل EmojiCompat للخط. يبدأ تحميل الخط فور استدعاء EmojiCompat.load()، ويؤدي ذلك إلى بدء أي عمليات تنزيل ضرورية. ينشئ النظام سلسلة محادثات لتنزيل الخط ما لم يوفّر تطبيقك سلسلة محادثات.
تتيح لك السمة LOAD_STRATEGY_MANUAL التحكّم في وقت استدعاء EmojiCompat.load()،
وتجعل السمة LOAD_STRATEGY_DEFAULT
التحميل يبدأ بشكل متزامن في الاستدعاء إلى
EmojiCompat.init().
تستخدم معظم التطبيقات LOAD_STRATEGY_MANUAL لتتمكّن من التحكّم في سلسلة المحادثات وتوقيت تحميل الخطوط. يجب أن يؤجّل تطبيقك هذه العملية إلى ما بعد عرض الشاشة الأولى لتجنُّب حدوث وقت استجابة عند بدء التشغيل. يتبع EmojiCompatInitializer هذه الممارسة ويؤجل تحميل خط الرموز التعبيرية إلى ما بعد استئناف الشاشة الأولى.
استخدِم الطرق التالية من الصنف الأساسي لضبط جوانب أخرى من الإعدادات:
setReplaceAll(): تحدّد ما إذا كانEmojiCompatيستبدل جميع رموز الإيموجي التي يعثر عليها بنُسخ منEmojiSpan. تلقائيًا، عندما يستنتجEmojiCompatأنّ النظام يمكنه عرض رمز إيموجي، لا يستبدل هذا الرمز. عند ضبط هذه السمة علىtrue، يستبدلEmojiCompatجميع رموز الإيموجي بعناصرEmojiSpan.setEmojiSpanIndicatorEnabled(): تشير إلى ما إذا كانEmojiCompatيستبدل رمزًا تعبيريًا بعنصرEmojiSpan. عند ضبط السمة علىtrue، يرسمEmojiCompatخلفية لـEmojiSpan. تُستخدم هذه الطريقة بشكل أساسي لأغراض تصحيح الأخطاء.setEmojiSpanIndicatorColor: يتم ضبط اللون للإشارة إلىEmojiSpan. ستكون القيمة التلقائيةGREEN.registerInitCallback(): يُعلم التطبيق بحالة إعدادEmojiCompat.
إضافة مستمعي الإعداد
توفّر الفئتان EmojiCompat وEmojiCompat.Config الطريقتَين
registerInitCallback()
و
unregisterInitCallback()
لتسجيل عمليات الاستدعاء الخاصة بالتهيئة وإلغاء تسجيلها. يستخدم تطبيقك عمليات الاستدعاء هذه للانتظار حتى تتم تهيئة EmojiCompat قبل معالجة الرموز التعبيرية في سلسلة مهام في الخلفية أو في عرض مخصّص.
لاستخدام هذه الطرق، أنشئ مثيلاً للفئة
EmojiCompat.InitCallback. استدعِ هذه الطرق ومرِّرها في مثيل فئة EmojiCompat.InitCallback. عند نجاح عملية الإعداد، تستدعي الفئة EmojiCompat الطريقة onInitialized(). إذا تعذّر إعداد المكتبة، تستدعي الفئة EmojiCompat الطريقة
onFailed().
للتحقّق من حالة الإعداد في أي وقت، يمكنك استدعاء الطريقة
getLoadState(). تعرض هذه الطريقة إحدى القيم التالية:
LOAD_STATE_LOADING أو
LOAD_STATE_SUCCEEDED أو
LOAD_STATE_FAILED.
إتاحة الخطوط المجمّعة مع emoji2
يمكنك استخدام العنصر emoji2-bundled لتجميع خط إيموجي في تطبيقك.
ومع ذلك، نظرًا لأنّ حجم خط NotoColorEmoji يزيد عن 10 ميغابايت، ننصحك بشدة
باستخدام تطبيقك للخطوط القابلة للتنزيل إن أمكن. تم تصميم العنصر emoji2-bundled للتطبيقات على الأجهزة التي لا تتيح استخدام الخطوط القابلة للتنزيل.
لاستخدام عنصر emoji2-bundled، اتّبِع الخطوات التالية:
تضمين بيانات
emoji2-bundledوemoji2:implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"اضبط
emoji2لاستخدام الإعدادات المجمّعة:Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
Java
EmojiCompat.init(new BundledEmojiCompatConfig(context));
اختبِر عملية الدمج باتّباع الخطوات السابقة لتضمين
emojicompatمعAppCompatأو بدونه. تأكَّد من عرض سلسلة الاختبار بشكل صحيح.- 16.0: ، ، 🇨🇶
- 15.1: 🐦🔥، 🧑🧑🧒🧒، 👩🏽🦽➡️، 🇲🇶
- 15.0: 🩷، 🫸🏼، 🐦⬛
- 14.0: 🫠، 🫱🏼🫲🏿، 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- الإصدار 13.0: 🥲 و🥷🏿 و🐻❄️
- 12.1: 🧑🏻🦰، 🧑🏿🦯، 👩🏻🤝👩🏼
- 12.0: 🦩، 🦻🏿، 👩🏼🤝👩🏻
تأثير الإعداد التلقائي لمكتبة EmojiCompat
يطبّق النظام الإعدادات التلقائية باستخدام مكتبة بدء التشغيل،
EmojiCompatInitializer، و
DefaultEmojiCompatConfig.
بعد استئناف النشاط الأول في تطبيقك، يجدول المُهيئ تحميل خطوط الإيموجي. يتيح هذا التأخير القصير لتطبيقك عرض محتواه الأولي بدون أي وقت استجابة محتمل بسبب تحميل الخط في سلسلة محادثات في الخلفية.
يبحث DefaultEmojiCompatConfig عن موفّر خطوط قابل للتنزيل ومثبَّت على النظام
ينفّذ واجهة EmojiCompat، مثل "خدمات Google Play". على الأجهزة التي تعمل بـ "خدمات Google Play"، يتم تحميل الخط باستخدام "خدمات Google Play".
تنشئ أداة الإعداد سلسلة محادثات في الخلفية لتحميل خط الإيموجي، ويمكن أن يستغرق تنزيل الخط ما يصل إلى 10 ثوانٍ قبل انتهاء المهلة. بعد تنزيل الخط، يستغرق الأمر حوالي 150 مللي ثانية في سلسلة مهام في الخلفية لتهيئة EmojiCompat.
تأجيل إعداد EmojiCompat، حتى في حال إيقاف
EmojiCompatInitializer. إذا كنت تضبط إعدادات EmojiCompat يدويًا، يمكنك استدعاء EmojiCompat.load() بعد عرض الشاشة الأولى من تطبيقك لتجنُّب حدوث تعارض في الخلفية مع تحميل الشاشة الأولى.
بعد التحميل، يستخدم EmojiCompat حوالي 300 كيلوبايت من ذاكرة الوصول العشوائي (RAM) للاحتفاظ بالبيانات الوصفية للإيموجي.