مقداردهی اول با تأخیر (lazy Initialization)
مقداردهی اول با تأخیر (lazy Initialization)
مقداردهی با تأخیر (by lazy) در مواقعی که سرگرم پیادهسازی مشخصههای تنها-خواندنی هستیم که به طور با تأخیر در کاتلین ایفا میگردند موثر خواهد بود. by lazy { … } مقداردهی اول خویش را جایی اعمال میدهد که مشخصه نخستین دفعه استعمال می شود و خیر در طول طراحی اپلیکیشن در مشهد اعلان کردن آن.
class Demo { val myName: String by lazy { "John" } }
مقداردهی نماید
مقداردهی نماید متغیرها بهاین معنا میباشد که بسطدهندگان پیش از دسترسی به متغیر آن را جایی در کد مقداردهی نخستین مینمایند.
class Demo { val myName: String by lazy { "John" } }
کلاس داده
ما به صورت مکرر کلاسهایی میسازیم که کاری به جز محافظت دادهها ندارند. در اینگونه کلاسهایی بعضا کارکردهای استاندارد غالباً به طور مکانیکی از دادهها مشتق میشوند. در کاتلین، این فعالیت در کلاس داده انجام می گردد و به طور دادهای نشانهگذاری می گردد.
data class Developer(val name: String, val age: Int)
هنگامی که یک کلاس به طور کلاس داده نشانهگذاری خواهد شد، نیاز وجود ندارد که تابعهای پایین را مانند جاوا در آن پیادهسازی یا این که ساخت کنیم:
()hashCode
()equals
()toString
()copy
کامپایلر به طور اتوماتیک این مفاد را به طور داخلی ساخت مینماید و به این ترتیب کد تمیزتری خوا هیم داشت.
کلاسهای مهر و موم گردیده
کلاسهای مهر و موم گردیده برای اکران سلسله مراتب کلاس محدودشده به کارگیری می شوند که در آنان شیء یا این که مقدار صرفا یک نوع می تواند داشته باشد و از این رو با نوع ثابتی در سلسله مراتب مواجه هستیم. کلاسهای مهر و موم گردیده به صورت مکرر در مورد ها مختلفی که می دانیم مقدار مفروضی دارنده فقطً موردهای محدودی میباشد، به کارگیری میشوند.
1sealed class Operation {
2 class Add(val value: Int) : Operation()
3 class Substract(val value: Int) : Operation()
4 class Multiply(val value: Int) : Operation()
5 class Divide(val value: Int) : Operation()
6 }
تابعهای اکستنشن
تابعهای اکستنشن در کاتلین به ما قابلیت و امکان می دهند که کارکرد یک کلاس را با اضافه کردن امکانهای نو توسعه دهیم. این کلاس لزوماً نباید به ما وابستگی داشته باشد، بلکه میتواند کتابخانه فرد ثالث باشد و همینطور الزامی به ارثبری از کلاس نیست.
1fun Int.triple(): Int {
2 return this * 3
3 }
براین اساس به انتهای این نوشتهعلمی میرسیم و امید خواهیم داشت از آن سود کافی را برده باشید.
نوتیفیکیشن اندروید – اصول مقدماتی
استارت
برای شروع بایستی آغاز «فایربیس» (Firebase) را در نرم افزار خویش فعالسازی کنیم. بدین خواسته پیش از هر چیز می بایست یک پروژه در کنسول فایربیس (+) تولید کنیم. دقت داشته باشید که در حین کتابت این نوشتهیعلمی، کشورایران در فهرست کشورهای تحریم گردیده از سوی این خدمت قراردارد و برای دسترسی به آن بایستی از ابزارهای کمکی قابل قبولی استعمال نمایید.
کلیک نمایید
بعداز اجرای این مرحله قادر خواهیم بود نرم افزار خویش را به پروژه اضافه کنیم. بهاین خواسته روی پروژه خویش کلیک کرده و بعد روی دکمه + Add app کلیک کرده و درپی روی آیکون اندروید بزنید. در غایت می بایست برخی داده ها مقدماتی در ارتباط نرم افزار خویش وارد فرمائید و پوشه تنظیمات google-services.json را که برای اتصال نرم افزار به فایربیس ضروری میباشد را دانلود نمائید. در این زمینه درپی بیشتر توضیح خوا هیم بخشید. موقتاً همین امور در کنسول فایربیس کافی میباشد.
اتصال نرم افزار به فایربیس
فعلا به نصیب دیدنی داستان میرسیم. در پروژه اندروید پوشه build.gradle پروژه را گشوده نمائید. باور پیدا فرمایید که ریپازیتوری maven گوگل را در هر دو بلوک repositories و همینطور بلوک allprojects اضافه کردهاید و در ضمنً پلاگین Google Services را در تعلقها به طور ذیل قرار دادهاید:
1buildscript {
2 repositories {
3 google()
4 // ... Your other repo's go here
5 }
6
7 dependencies {
8 // ... Your other dependencies
9 classpath 'com.google.gms:google-services:4.2.0'
10 }
11}
12
13allprojects {
14 // ...
15
16 repositories {
17 google()
18 // ... Your other repo's go here
19 }
20}
مشاهده بی نقص کدها
پیرو به پوشه build.gradle نرم افزار راز می زنیم. همینطور تعلق Firebase Core را به پروژه اضافه کرده و پلاگین Google Services را در انتهای پوشه اضافه می کنیم:
1dependencies {
2 // ... Put your other dependencies here
3
4 implementation 'com.google.firebase:firebase-core:16.0.9'
5}
6
7apply plugin: 'com.google.gms.google-services' // Make sure you apply the plugin at the bottom of the file
عمل به طور تقریبً به نقطه پايان رسیده میباشد. به خیال و خاطر دارید که در مرحله پیشین پوشه تنظیمات google-services.json را از کنسول فایربیس دانلود کردیم. در حال حاضر بایستی این پوشه را در دایرکتوری app اضافه کنیم تا شغل تنظیمات فایربیس در نرم افزار به پایان برسد.
ارسال پیام
فعلا که نرم افزار خویش را به پروژه فایربیس اضافه کردیم، مهیا هستیم تا از خدمت پیامرسانی ابری خویش منفعت بگیریم. FCM که اختصاری برای «پیامرسانی ابری فایربیس» (Firebase Cloud Messaging) میباشد، استاندارد جدیدی برای نوتیفیکیشن به حساب می آید، زیرا گوگل مدد از GCM را متوقف کرده و آن را منسوخ کرده است. به این مراد کافی میباشد تعلق را به پوشه build.gradle نرم افزار اضافه کنیم:
1implementation 'com.google.firebase:firebase-messaging:18.0.0'
در شرایطیکه میخواهید روی مدیر نوتیفیکیشنها در پیشقضیه در اختیار گرفتن بیشتری داشته باشد، دادهها را باطن نوتیفیکیشن رئیس نمائید و یا این که میخواهید دستگاههای منفرد خاص یا این که دستههای معینی از اشخاص را هنگام ارسال نوتیفیکیشن مقصودگیری فرمائید، در اینحالت به سرویسی نیاز دارید که FirebaseMessagingService را توسعه و گسترش دهد. ما آن را MessagingService.kt مینامیم:
1class MessagingService : FirebaseMessagingService() {
2
3 override fun onNewToken(token: String) {
4 // Sync your token with the backend here (optional)
5 }
6
7 override fun onMessageReceived(remoteMessage: RemoteMessage?) {
8 // Handle the incoming message here
9 }
10}
این دقیقاً به عبارتی جایی میباشد که یک پیام ورودی یا این که احتمالاً رفرش/ساخت توکن را رئیس می کنید. بنابراین میقدرت یک توکن را برای مثال در فراخوانی onNewToken به بکاند فرستاد و روی آن کارهایی اجرا بخشید یا این که یک نوتیفیکیشن در onMessageReceived تشکیل داد. به حافظه بسپارید که نیازی به ایجاد کرد یک نوتیفیکیشن برای اکران دادن نیست. این مورد را پیرو بیشتر توضیح می دهیم.
اینک که MessagingService خویش را ساختهایم، بایستی آن را در مانیفست نیز تصویب کنیم:
1
2 3 android:name=".MessagingService"
4 android:exported="false">
5
6
7
8
اکنون حاذق هستیم نوتیفیکیشن ورودی خویش را از روش خدمت پیامرسانی خودمان مدیر کنیم.