نوتیفیکیشن های آی او اس

ساخت رابط کاستوم برای نوتیفیکیشن های آی او اس - بخش اول

آی او اس 10 آخرین نسخه از سیستم عامل محبوب کمپانی اپل می باشد و اپل در این نسخه، توسعه دهندگان را قادر به ساخت رابط کاستوم برای نوتیفیکیشن هایی که به دست کاربران می رسند، نموده است. کاربرد این قابلیت در اپلیکیشن Messages بسیار مشهود است، به طوری که می توانید مکالمات را مشاهده کنید، به طوری که انگار در خود اپلیکیشن هستید.

فریم ورکی که چنین قابلیتی را میسر می گرداند، UserNotificationUI نام دارد، با کمک این فریم ورک قادر به استفاده از زیر کلاس UIViewController جهت نمایش محتوای نوتیفیکیشن خود هستید.

در این مطلب آموزشی قصد داریم شما را به نحوه استفاده از این فریم ورک جدید جهت ساخت رابط کاستوم برای نوتیفیکیشن های یک اپلیکیشن آشنا کنیم، با ما همراه باشید.

در این مطلب نیازمند Xcode 8 و iOS 10 SDK می باشید و لازم است پروژه را از GitHub دانلود کنید.

توجه داشته باشید که پروژه از فریم ورک UserNotification جدید آی او اس 10 به منظور تنظیم نوتیفیکیشن های لوکال برای تست استفاده می کند.

1. اکستنشن Notification Content

مشابه سایر قابلیت های افزونه اپلیکیشن های آی او اس مانند اشتراک گذاری و یا کیبوردهای کاستوم، رابط نوتیفیکیشن نیز به یک اکستنشن نیاز دارد.

پروژه را در Xcode باز کرده و در نوار منو به …File>New>Target بروید، در دیالوگی که نمایش داده می شود، نوع اکستنشن را به شکل iOS>Application Extension>Notification Content انتخاب کنید.

نوتیفیکیشن های آی او اس

هر نامی را که می خواهید برای اکستنشن انتخاب کنید و بر روی Finish کلیک کنید:نوتیفیکیشن های آی او اس

ممکن است پاپ آپی به شما نمایش داده شود که از شما درخواست اکتیو کردن طرح جدید خود را کند، بر روی دکمه Activate کلیک کرده و آن را برای دیباگ آماده کنید:

نوتیفیکیشن های آی او اس

در بخش File Navigator پروژه، یک فولدر جدید با نام اکستنشنی که ساخته بودید نمایش داده می شود، این فولدر شامل فایل های زیر است:

- NotificationViewController.swift که دربرگیرنده کلاس NotificationViewCOntroller برای رابط کاستوم است. Xcode به طور پیش فرض این کلاس را مطابق با پروتکل نیازمند از فریم ورک UserNotificationUI تنظیم می کند و در ادامه این مطلب به جزئیات مرتبط با این پروتکل پرداخته می شود.

- MainInterface.storyboard که یک فایل استوری برد است و دربرگیرنده یک ویو کنترلر سینگل می باشد. Xcode به طور خودکار این رابط را به کلاس NotificationViewController لینک می دهد، در نتیجه نیازی به انجام این کار به صورت دستی نمی باشد.

- Info.plist که دربرگیرنده جزئیات بسیار مهمی درباره اکستنشن شماست، این فایل آیتم های متعددی را در خود جای داده است، اما تنها بخشی که باید به آن توجه کنید دایرکتوری NSExtension است که شامل بخش های زیر می باشد:

نوتیفیکیشن های آی او اس

Xcode به طور خودکار اکستنشن notification content را به com.apple.usernotification.content-extension و فایل رابط استوری برد یعنی MainInterface لینک می دهد. در داخل زیر-دایرکتوری NSExtensionAttributes دو ویژگی وجود دارد که باید تعریف شوند:

- UNNotificationExtensionCategory که یک مقدار رشته ای منحصر به فرد برای دسته بندی نوتیفیکیشنی است که می خواهید رابط کاستوم را برای آن نمایش دهید. در فایل Info.plist این مقدار را به com.tutsplus.Custom-Notification-Interface.notification تغییر دهید، با این کار این مقدار مطابق با دسته بندی خواهد بود که در پروژه استفاده شده است.

- UNNotificationExtensionInitialContentSizeRatio که عددی بین 0 و 1 بوده و نسبت ابعاد در رابط کاستوم را تعیین می کند. مقدار پیش فرض 1 به سیستم می گوید که رابط شما دارای یک طول کلی هم اندازه عرض آن می باشد، در حالی که مقدار 0.5 رابطی را نتیجه خواهد داد که طول آن نصف عرض کلی می باشد. طول رابط را می توان به طور داینامیک در زمان بارگذاری نیز تغییر داد و مقدار درج شده در Info.plist یک عدد تقریبی است و سیستم می تواند انیمیشن بهتری را به نمایش گذارد.

می توانید ویژگی UNNotificationExtensionDefaultContentHidden را نیز در دایرکتوری NSExtensionAttributes تعریف کنید. این ویژگی نیازمند یک مقدار بولین است که سیستم را از نمایش ویوی پیش فرض نوتیفیکیشن همراه با رابط کاستوم شما مطلع می گرداند. نوار عنوان در قسمت بالا دربرگیرنده آیکون و نام اپلیکیشن و دکمه dismiss است که همیشه نشان داده می شود. برای هر اکشن کاستومی که برای دسته بندی نوتیفیکیشن تعریف کرده باشید، یک دکمه برای کاربر جهت انجام عملیات نمایش داده می شود. تعیین یک مقدار true برای این ویژگی موجب می شود که سیستم به جای نمایش ویوی پیش فرض نوتیفیکیشن ها، تنها رابط کاستوم شما را نمایش دهد. چنانچه این ویژگی را تعریف نکنید و یا آن را false کنید، ویوی پیش فرض نوتیفیکیشن در زیر رابط شما به نمایش در خواهد آمد.

2. ساخت رابط کاربری

ساخت رابط برای محتوای نوتیفیکیشن کاستوم مانند ساخت یک ویو کنترلر همیشگی برای آی او اس می باشد.

نکته بسیار مهمی که باید هنگام طراحی رابط به آن توجه کنید این است که ویو کنترلر شما هیچ ایونت تاچی را هنگام نمایش به کاربر دریافت نخواهد کرد، در نتیجه ویو کنترلر نباید دربرگیرنده اجزایی مانند دکمه، سوئیچ یا اسلایدر باشد که کاربر انتظار دارد به تعامل با آنها بپردازد.

توجه داشته باشید که شما هنوز هم می توانید آیتم هایی مانند UITableView و UIScrollView را در رابط خود مورد استفاده قرار دهید و اگر محتوای شما در رابط جا نمی شود، از اسکرول استفاده کنید.

اگر رابط شما دربرگیرنده رسانه هایی است که مرتبط به نوتیفیکیشن ها می باشد، می توانید از سیستم بخواهید که یک دکمه play/pause را نمایش دهد.

به منظور ساخت رابط، اول از همه فایل MainInterface.stroyboard را باز کرده و ویو کنترلر را انتخاب نمایید و در Attributes inspector طول آن را به اندازه عرض آن تغییر دهید:

نوتیفیکیشن های آی او اس

پس از این کار، رنگ پس زمینه از ویوی اصلی را به سفید تغییر داده و در آخر رنگ متن برچسب های کنونی را به مشکی و اندازه متون را به 96 تغییر دهید، پس از اعمال این تغییرات رابط شما مشابه زیر خواهد بود:نوتیفیکیشن های آی او اس

در این مطلب رابط پیش فرض Xcode میزبان تغییرات بسیار محدودی شده و بسته به نوع محتوای اپلیکیشن، به سادگی قادر به ساخت هرگونه رابطی هستید. در مطلب بعدی به پیاده سازی این ویو کنترلر در عمل پرداخته خواهد شد، با ما همراه باشید.

 

https://code.tutsplus.com برگرفته از

اینها را هم بخوانید