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

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

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

حال که رابط آماده شده، فایل NotificationViewController.swift را باز کرده و عملیات مورد نظر را به ویو کنترلر خود اضافه نمایید.

در حقیقت پیروی از پروتکل UNNotificationContentExtension وجه تمایز ویو کنترلر نوتیفیکیشن شما با سایر زیرکلاس های معمولی UIViewController می باشد، این پروتکل بخشی از فریم ورک UserNotificationsUI بوده و متدهای زیر را تعریف می کند:

- (:_)didReceive: همزمان با دریافت یک نوتیفیکیشن جدید از سوی اپلیکیشن، فراخوانی می شود. این متد دارای یک آبجکت منفرد UNNotification به عنوان پارامتر است که می توانید برای دسترسی به تمامی محتوای نوتیفیکیشن دریافتی از آن استفاده کنید. شایان ذکر است در شرایطی که اپلیکیشن دریافت نوتیفیکیشن ها را ادامه می دهد و رابط شما هنوز باز است، می توانید این متد را چندین بار فراخوانی کرده و شرایط را بدین شکل مدیریت کنید.

- (didReceive(_:completionHandler: این متد زمانی فراخوانی می شود که کاربر بر روی دکمه های کاستوم نوتیفیکیشن شما ضربه بزند. این متد دربرگیرنده یک آبجکت UNNotification بوده که می توان از آن برای تعیین اکشنی که کاربر انتخاب کرده استفاده کرد. زمانی که پردازش اکشن نوتیفیکیشن به اتمام رسید، باید کنترل کننده فرآیند اتمام را با مقدار UNNotificationContentExtensionResponseOption فراخوانی کنید.

شمارش UNNotificationContentExtensionResponseOption گزینه های زیر را تعریف می کند:

- doNotDismiss: زمانی باید از این گزینه استفاده کرد که ویو کنترلر نوتیفیکیشن تمامی منطق آن اکشن را مدیریت می کند و می خواهید رابط در صفحه باقی بماند.

- dismiss: زمانی باید از این گزینه استفاده شود که ویو کنترلر نوتیفیکیشن تمامی منطق آن اکشن را مدیریت می کند و می خواهید رابط بسته شود.

- dismissAndForwardAction: زمانی باید از آن استفاده کرد که می خواهید رابط خود را ببندید و app delegate اکشن کاستوم را مدیریت کند.

یکی دیگر از امکاناتی که پروتکل UNNotificationContentExtension ارائه می دهد، قابلیت افزودن یک دکمه مدیا برای رابط می باشد. با اورراید کردن ویژگی ها و متدهای زیر می توانید این دکمه را به رابط خود افزوده و تشخیص دهید که چه زمانی توسط کاربر فشار داده شده است:

- mediaPlayPauseButtonType:

یک مقدار UNNotificationContentExtensionMediaPlayPauseButtonType

- mediaPlayPauseButtonFrame: یک مقدار CGRect

- MediaPlayPauseButtonTintColor: یک مقدار UIColor

- mediaPlay: زمانی که رابط باید مدیا را پلی کند فراخوانی می شود

- mediaPause: زمانی که رابط باید مدیا را متوقف کند فراخوانی می شود

نوتیفیکیشن لوکالی که توسط پروژه ساخته شده شامل یک عدد کاستوم در ویژگی UserInfo نوتیفیکیشن می باشد و این همان چیزی است که می خواهیم در رابط کاستوم به نمایش گذاریم. برای این کار متد (:_)didReceive از کلاس NotificationViewController را با کدهای زیر جایگزین نمایید:

func didReceive(_ notification: UNNotification) {

if let number = notification.request.content.userInfo["customNumber"] as? Int {

label?.text = "\(number)"

}

}

در این مرحله لازم است رابط کاستوم خود را تست کنیم، اول از همه مطمئن شوید که تارگت اپلیکیشن آی او اس شما در حال حاضر توسط Xcode در گوشه سمت چپ انتخاب شده است:نوتیفیکیشن های آی او اس

زمانی که اپلیکیشن انتخاب شد، Command-R یا دکمه پلی در بالا گوشه سمت چپ را بزنید و اپلیکیشن را به اجرا در آورید، با اجرای اپلیکیشن آلرت زیر به شما نمایش داده خواهد شد:نوتیفیکیشن های آی او اس

Allow را زده و سپس دکمه خانه در گوشی را بزنید، اگر از سیمولاتور استفاده می کنید می توانید از Command-Shift-H استفاده کنید و اپلیکیشن را ببندید. حدود 30 ثانیه منتظر بمانید و نوتیفیکیشن زیر بر روی گوشی به نمایش در خواهد آمد:نوتیفیکیشن های آی او اس

جهت مشاهده رابط کاستوم می توانید کلیک کرده و نوتیفیکیشن را به پایین بکشید و یا اگر از گوشی آیفون 6 اس یا 7 یا سیمولاتور استفاده می کنید، با استفاده از تاچ سه بعدی این کار را به انجام رسانید. چنانچه از سیمولاتور استفاده می کنید، می توانید قابلیت های تاچ سع بعدی را با استفاده از گزینه های موجود در منوی Hardware>Touch Pressure شبیه سازی نمایید.نوتیفیکیشن های آی او اس

زمانی که رابط نوتیفیکیشن شما بارگذاری شد، باید چیزی مشابه اسکرین شات زیر را مشاهده کنید:نوتیفیکیشن های آی او اس

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

رابط نوتیفیکیشن به صورت مربع نمایش داده می شود، زیرا مقدار UNNotificationExtensionInitialContentSizeRatio که قبلا ست کرده بودیم به این شکل است، سپس نوتیفیکیشن با انیمیشنی به سمت پایین می آید تا در برچسبی که 100 را نشان می دهد قرار گیرد. تغییر اندازه رابط نوتیفیکیشن با استفاده از سیستم Auto-layout آی او اس مدیریت می شود، برای مثال چنانچه بخواهید رابط شما شکل مربعی خود را حفظ کند، باید از ویویی استفاده کنید که دارای نسبت 1:1 است.

جمع بندی

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

 

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

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