مجموعه استاندارد ایموجیها سالانه توسط یونیکد بهروزرسانی میشود، زیرا استفاده از ایموجیها برای انواع برنامهها به سرعت در حال افزایش است.
اگر برنامه شما محتوای اینترنتی را نمایش میدهد یا ورودی متن ارائه میدهد، اکیداً توصیه میکنیم از جدیدترین فونتهای ایموجی پشتیبانی کنید. در غیر این صورت، ایموجیهای جدیدتر ممکن است به صورت یک کادر مربع کوچک به نام توفو (☐) یا سایر توالیهای ایموجی نادرست نمایش داده شوند.
نسخههای اندروید ۱۱ (سطح API 30) و پایینتر نمیتوانند فونت ایموجی را بهروزرسانی کنند، بنابراین برنامههایی که آنها را در این نسخهها نمایش میدهند باید بهصورت دستی بهروزرسانی شوند.
در ادامه نمونههایی از ایموجیهای مدرن آمده است.
| مثالها | نسخه | 
|---|---|
|   🇨🇶 | ۱۶.۰ (سپتامبر ۲۰۲۴) | 
| 🐦🔥 🧑🧑🧒🧒 👩🏽🦽➡️ 🇲🇶 | ۱۵.۱ (سپتامبر ۲۰۲۳) | 
| 🩷 🫸🏼 🐦⬛ | ۱۵.۰ (سپتامبر ۲۰۲۲) | 
| 🫠 🫱🏼🫲🏿 🫰🏽 | ۱۴.۰ (سپتامبر ۲۰۲۱) | 
| 😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | ۱۳.۱ (سپتامبر ۲۰۲۰) | 
| 🥲 🥷🏿 🐻❄️ | ۱۳.۰ (مارس ۲۰۲۰) | 
| 🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | ۱۲.۱ (اکتبر ۲۰۱۹) | 
| 🦩 🦻🏿 👩🏼🤝👩🏻 | ۱۲.۰ (فوریه ۲۰۱۹) | 
عرضه اولیه (BOM) در مارس ۲۰۲۳ ( رابط کاربری Compose 1.4 ) پشتیبانی از جدیدترین نسخه ایموجیها ، از جمله سازگاری با نسخههای قدیمیتر اندروید تا API 21 را به ارمغان میآورد.
 این پشتیبانی نیازی به تغییر در برنامه شما ندارد - اگر از Text و TextField (Material 2 یا Material 3) یا BasicText و BasicTextField استفاده میکنید، پشتیبانی از ایموجیهای مدرن را به صورت پیشفرض دریافت خواهید کرد.
بهترین روش برای آزمایش جدیدترین ایموجیها در برنامه شما، استفاده از یک دستگاه واقعی با API 30 یا پایینتر است.
 اگر از یک راهکار ایموجی سفارشی استفاده میکنید، یا به هر دلیل دیگری نیاز به غیرفعال کردن وضوح پیشفرض ایموجی در Compose دارید، میتوانید از PlatformTextStyle(emojiSupportMatch) استفاده کنید: 
Text( text = "Hello $EMOJI_TEXT", style = TextStyle( platformStyle = PlatformTextStyle( emojiSupportMatch = EmojiSupportMatch.None )/* ... */ ) )
قابلیت همکاری
 اگر برنامه شما از هر دو Views و Compose در یک Activity استفاده میکند، مطمئن شوید که از APIهای مناسب برای پیکربندی صحیح ایموجیها استفاده میکنید. بخشهای زیر زمان استفاده از هر API را شرح میدهند.
 گسترش از ComponentActivity
 اگر Activity شما به جای AppCompatActivity از Compose ComponentActivity امتداد مییابد، دستورالعملهای مربوط به ایموجی Support بدون AppCompat را دنبال کنید.
 از آنجایی که شما AppCompatActivity ارثبری نمیکنید، کتابخانه Emoji2 را به وابستگیهای خود اضافه کنید و به جای ویجت TextView ، از EmojiTextView در viewهای خود استفاده کنید، همانطور که در قطعه کد زیر نشان داده شده است: 
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: EmojiTextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
سپس، در فایل XML خود:
<androidx.emoji2.widget.EmojiTextView android:id="@+id/emoji_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
 گسترش از AppCompatActivity
 اگر Activity شما از AppCompatActivity ارثبری میکند، میتوانید از ComposeView برای فراخوانی توابع composable استفاده کنید. وقتی از composableهای Text استفاده میکنید، ایموجیها به درستی در نسخههای مختلف اندروید رندر میشوند.
 اگر از AppCompatActivity ارثبری میکنید، TextView از XML inflate کنید تا ایموجیها به درستی رندر شوند.
این در صورتی صدق میکند که شما در حال افزایش حجم XML هستید:
-  خارج از ComposeView، درActivity. به نحوهی استفاده ازAppCompatActivityوTextViewدر قطعه کد زیر توجه کنید:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val emojiTextView: TextView = findViewById(R.id.emoji_text_view) emojiTextView.text = getString(R.string.emoji_text_view, EMOJI_TEXT) val composeView: ComposeView = findViewById(R.id.compose_view) composeView.apply { setContent { // compose code } } } }
-  درون ComposeView، از طریق اتصال نما با استفاده ازAndroidViewBinding، مانند قطعه کد زیر:
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidViewBinding(ExampleViewBinding::inflate) { emojiTextView.text = EMOJI_TEXT } } } } ) } }
 برای پر کردن متن با AndroidView درون ComposeView ، از AppCompatTextView برای رندر صحیح ایموجیها استفاده کنید: 
class MyActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView( ComposeView(this).apply { setContent { Column { Text(EMOJI_TEXT) AndroidView( factory = { context -> AppCompatTextView(context) }, update = { it.text = EMOJI_TEXT } ) } } } ) } }
برای جزئیات بیشتر به مستندات APIهای تعاملپذیری مراجعه کنید.
عیبیابی
اگر به جای ایموجی، توفو (☐) را میبینید، ابتدا بررسی کنید که آیا مشکل از دستگاه آزمایشی خاص شماست یا خیر. چند نکته اصلی وجود دارد که میتوانید بررسی کنید:
- ممکن است از یک دستگاه اخیراً فلش شده یا یک شبیهساز جدید استفاده میکنید. در صورت امکان، یک دستگاه آزمایشی واقعی دیگر که اغلب از آن استفاده میکنید و به حساب گوگل خود وارد شده است را امتحان کنید. به یاد داشته باشید که API باید 30 یا کمتر باشد تا از عملکرد صحیح ایموجیها در نسخههای صحیح اطمینان حاصل شود.
- گوشی مورد آزمایش از فونتهای قابل دانلود پشتیبانی نمیکند .
- نسخه صحیح خدمات گوگل پلی را بررسی کنید.
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- ملاحظات دیگر
- متن در نوشتن
- اسکرول
