22- اصول آندروید: اعلان های نوار وضعیت (Status Bar Notifications)
آدرس مطلب اصلی: http://code.tutsplus.com/tutorials/android-fundamentals-status-bar-notifications--mobile-5879
برنامه ها اغلب اوقات تعدادی عملیات پس زمینه انجام می دهند- زمانی که برنامه در حال اجراست یا بر اساس یک هشدار زمان بندی شده راه اندازی شود. با این حال کاربر نمی داند چه اتفاقی در حال رخ دادن است٬مگر این که از رویدادی آگاه شود . خوشبختانه٬آندروید سیستم اعلان ساده ای دارد که به برنامه ها اجازه می دهد تا پیغامی را در نوار وضعیت نمایش دهند و به هنگام رخداد اتفاق مهم جزئیات آگاهی بخشی برای کاربر فراهم کنند.
در این آموزش٬ما برنامه موجود TutList را گسترش خواهیم داد به طوری که زمانی که دانلود زمان بندی شده آموزش ها انجام شد به کاربر اعلام کند. زمانی که کاربر بر روی اعلان در نوار وضعیت (ضربه) می زند٬ برنامه آغاز خواهد شد. به این طریق از اعلان ها استفاده می کنیم تا زمانی که اتفاقی افتاد به کاربر بازخورد دهیم٬هم چنین وجود برنامه را به کاربر یادآوری کنیم و قابل دسترس بودن اطلاعات جدید را به او یادآور می شویم .
مرحله 0: آغاز:
در این آموزش فرض بر این است که از آخرین آموزش TutList که کنار گذاشتیم آغاز کرده اید. می توانید آن کد را دانلود کنید و از آنجا کار کنید یا می توانید کدی که همراه با این آموزش فراهم شده است را دانلود کنید و ببینید و پیش بروید. انتخاب با شماست. ما در نسخه نهم کد هستیم. نمایه tags نمایش دهنده منبع برای راحتی هر نسخه را داراست.
مرحله 1: اعلان های آندروید:
سیستم اعلان آندروید توسط کاربران و توسعه دهندگان خیلی تمجید شده است. این سیستم مناسب و انعطاف پذیر (قابل تطبیق و تغییر) است و استفاده از آن راحت است. این آموزش همه جزئیات سیستم اعلان را پوشش نخواهد داد. در عوض٬ روی یادگیری اعلان های خاص که برای برنامه TutList کار می کنند تمرکز خواهیم کرد.
معمولا اعلان ها در نوار وظیفه در بالای صفحه نمایش کاربران (یا پایین تبلت هایی که سیستم عامل آن ها آندروید 3.0 است) به صورت یک تصویر و متن کوتاه ظاهر می شوند. زمانی که نوار وضعیت به سمت پایین کشیده می شود٬ کاربر جزئیات بیشتر اعلان را می تواند ببیند. این جزئیات می توانند به صورت قراردادی ترسیم شوند یا اگر می خواهید سلیقه به خرج دهید می توانند با استفاده از شی RemoveViews مرسوم ترسیم شوند. علاوه بر این٬ اعلان ها می توانند همراه با صدا یا نورهای رنگارنگ چشمک زن باشند. همچنین می توانید اعلان ها را یکبار نمایش دهید٬ به طور مداوم نمایش دهید (به طور نمونه برای به روز رسانی پیشرفت یک کار در حال اجرا )٬ یا تعداد اقلامی را نمایش دهید (به طور نمونه برای نمایش تعداد ایمیل های جدید).
ما یک اعلان ساده ایجاد خواهیم کرد که زمانی که لیست آموزش ها در قالب xml دانلود شدند و تجزیه و تحلیل شدند٬ کاربر را مطلع می کند.
ابتدا با گرفتن یک نمونه از شی NotificationManager- شی اصلی که توسط آن اعلان ها اداره می شوند آغاز می کنیم. ما با اضافه کردن کد به تابع onPostExecute از کلاس داخلی DownloaderTask که در TutListDownloaderService می باشد شروع می کنیم.
کد جاوا زیر با استفاده از context برنامه یک نمونه را فراخوانی می کند:
مرحله 2: ایجاد یک اعلان:
یک شیNotification اطلاعاتی را که برای نمایش یک اعلان جدید به کاربر یا برای به روزرسانی یک اعلان موجود استفاده می شود٬ بسته بندی می کند. به خاطر اینکه اعلان های موجود می توانند به روزرسانی شوند٬ ایجاد یک اعلان دو بخش می شود. اول٬ داده اصلی اعلان شکل می گیرد (پیکربندی می شود)- تصویری که قرار است در نوار وضعیت نمایش داده شود٬ متن کوتاهی که در نوار وضعیت نمایش داده می شود و زمان اعلان- به طور جداگانه از رویداد اعلان ایجاد می شوند. رویداد اعلان که شامل جزئیات مخصوص برای نمایش به کاربر است.
اعلان را ایجاد می کنیم:
در اینجا٬ یکی از تصاویر سیستم را به عنوان تصویر قرار دادیم. برای برنامه خودتان٬ بهتر است مجموعه تصاویر را خودتان ایجاد کنید. گوگل منبع بزرگی در مورد ایجاد تصاویر نوار وضعیت برای آندروید 2.3 و بعد از آن و هم چنین آندروید 2.2 و قبل از آن دارد که در راهنمای تصویر مستند توسعه دهنده یافت می شود. درست زمانی که اعلان به کار می افتد متن به طور مختصر در نوار وضعیت نمایش داده می شود. برای نشان دادن زمان رخداد اعلان به کاربر از زمان (فیلد when) استفاده می شود.
توجه:در حالی که استفاده از Notification.Builder ممکن است ساده تر باشد٬ اما فقط در SDK سطح 11 و بعد آن در دسترس است.
مرحله 3: ایجاد یک PendingIntent :
زمانی که روی اعلان ها ضربه زده می شود می توانند یک Intent را راه اندازی کنند. آن ها از شی PendingIntent استفاده می کنند تا این کار را انجام دهند. یک PendingIntent یک Intent ساده را در یک شی پوشانده است (در بر گرفته است) به طوری که برنامه دیگر می تواند Intent اصلی را بفرستد چنان که گویی برنامه شما این کار را انجام داده است. زمانی که کاربر روی اعلان (ضربه) می زند٬ ما فقط می خواهیم برنامه آغاز شود. بنابراین ایجاد این شی PendingIntent آسان است.
مرحله 4: آماده سازی رویداد اعلان:
رویداد قراردادی اعلان نمایش داده شده شامل یک عنوان و متن آگاهی بخش است تا به کاربر بگوید که دلیل اعلان چیست. این رویداد هم چنین از شی PendingIntent که به تازگی ایجاد کرده ایم استفاده می کند. متن را بر اساس این که آیا دانلود و تجزیه و تحلیل موفقیت آمیز بوده است یا نه بارگذاری خواهیم کرد.
بعد از بارگذاری متن٬ تابع setLatestEventInfo ٬ اعلان را با جدیدترین اطلاعاتی که می خواهید برای کاربر فراهم کنید به روز رسانی می کند. این اعلان را فقط یکبار به ازای هر دانلود انجام می دهیم (برخلاف اعلان وضعیت دانلود)٬ اما می تواند برای نمایش به روز رسانی های گوناگون وضعیت به کار برده شود مادامی که کاری پیشرفت می کند.
مرحله 5: اطلاع دادن به کاربر:
سرانجام به شی NotificationManager برمی گردیم و از تابع notify آن استفاده می کنیم تا اعلان را به کاربر نشان دهیم(یا اگر تغییر کرد آن را به روز رسانی کنیم).
اولین پارامتر تابع notify یک شناسه یکتای برنامه است. در کلاس TutListDownloaderService مقدار 100 را برای این پارامتر در نظر گرفته ایم. این مقدار باید یکتا باشد- همین طور هم است چون اعلان دیگری نداریم.
این تمام کاری است که باید برای نمایش اعلان های ساده در نوار وضعیت انجام دهید.
تصویر زیر نشان می دهد اعلان به چه شکل است. زمانی که کاربرخودش آخرین مقالات را دانلود کند یا این که لیست خود به خود و روزانه به روز رسانی شود این اعلان نمایش داده می شود.
نتیجه:
شما در این آموزش سریع نحوه ی نمایش اعلان ها به کاربران را یاد گرفتید. سیستم اعلان نه تنها خیلی انعطاف پذیر است٬ بلکه آسان است زمانی که فقط نیاز به نمایش یک اعلان ساده دارید. کاربرانتان از طریق دیدن این که در پس زمینه چه می گذرد و یادآورشدن درباره برنامه٬ از اعلان ها سود می برند.
- ۹۳/۰۳/۰۳