ممکن میباشد ، فکر کنید که طراحی قابلیت و امکان AirDrop عملکرد متعددی را می طلبد. برعکس ، ما تنها به یکسری خط کد ، برای اضافه کردن مدد AirDrop نیاز داریم. کلاس UIActivityViewController مو جود در iOS 7 سبب میگردد که فعالیت یکدست طراحی اپلیکیشن در مشهد سازی قابلیت و امکان AirDrop در نرم افزار iOS بسیار شل خیس صورت پذیرد. AirDrop دراین کلاس تاسیس شده است. کلاس UIActivityViewController یک view controller استاندارد میباشد که یکسری سرویس ها استاندارد را مهیا می نماید ، مانند اسکن کردن گزینه ها به clipboard ، اشتراک گذاری محتواها در وبسایت رسانه های اجتماعی ، ارسال گزینه ها از روش Messages و غیره. در iOS SDK ، این کلاس با قابلیت و امکان داخلی AirDrop یاروهمدم میباشد.
درصورتی که ما آرایه ای از شی ها را برای به اشتراک گذاری داشته باشیم. نیاز خواهیم داشت که کلاس UIActivityViewController را با این آرایه شی ها مقداردهی کنیم و آن را در شیت اکران نشانه دهیم:
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
[self presentViewController:controller animated:YES completion:nil];
با این دو خط کد ، ما خواهیم توانست activity view را با امکان AirDrop بالا بیاریم. هر فرصت که یک دستگاه در نزدیکی شناسایی خواهد شد ، activity controller به صورت اتوماتیک دستگاه را آرم میدهد و در شکل تعیین دستگاه بوسیله مخاطب، جابجایی اطلاعات را هندل می نماید.
به طور از روی اختیار ، قادر خواهیم بود اشکال خاصی از عمل ها را حذف نماییم. یعنی ، ما صرفا میتوانیم شغل AirDrop را با حذف بقیه شغل ها ، علامت دهیم. برای این فعالیت ، از کد تحت استعمال میکنیم:
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
UIActivityTypePostToWeibo,
UIActivityTypeMessage, UIActivityTypeMail,
UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
controller.excludedActivityTypes = excludedActivities;
[self presentViewController:controller animated:YES completion:nil];
فعلا activity view controller صرفا آیتم AirDrop را نشانه میدهد.
خواهیم توانست از کلاس UIActivityViewController برای به اشتراک گذاری گونه های مختلفی از اطلاعات ، به عنوان مثال NSString ، UIImage و NSURL به کارگیری کنیم. خیر صرفا قادر خواهیم بود از NSURL برای به اشتراک گذاری لینک و پیوند استعمال کنیم ، بلکه توسعه و گسترش دهندگان این قابلیت را دارا هستند که هر نوعی از پوشه ها را با به کار گیری از file URL جابجایی دهند.
در طرف اخذ کننده ، وقتی که دستگاه اطلاعات را اخذ می نماید ، به صورت خود کار یک اپلیکیشن مطابق نوع داده دریافتی ، گشوده شود. در حالتیکه یک UIImage منتقل گردیده باشد ، تصویر اخذ گردیده در اپلیکیشن Photos نشان داده می شود. زمانی که یک فولدر PDF انتقال میابد ، دستگاه مقابل ، آن را در Safari گشوده می نماید. در شرایطیکه صرفا یک شیء NSString به اشتراک گذارده گردد ، اطلاعات در نرمافزار Notes اکران داده خواهند شد.
نگاهی بر اپلیکیشن Airdrop Demo
برای این که بتوانیم شعور بهتری از کلاس UIActivityViewController و قابلیت و امکان AirDrop به شما بدهیم ، ما یک اپلیکیشن AirDrop demo خواهیم تشکیل داد. این برنامه بسیار بی آلایش میباشد. هنگامی که نرم افزار فعال سازی میشود ، ما یک table view خواهیم مشاهده کرد که بعضا از فولدر ها را مثلا پوشه تصویری ، پوشه PDF و فولدر متنی را لیست نموده است. در content view یک کلید action در کناره بالا و سمت راست از کاغذ اکران وجود داراست. با ضربه زدن بر روی این کلید ، برنامه قابلیت و امکان AirDrop را بالا خواهد آورد و ما قادر خواهیم بود تصاویر یا این که اوراق خویش را با دستگاه های گوشه و کنار به اشتراک بگذاریم.
ما شمارا تشویق میکنیم که برنامه demo را از آغاز بسازید. البته برای صرفه جویی در وقت ، میتوانید برای استارت عمل ، تمپلت پروژه را ا اینجا download this project template دانلود نمائید. بعد از دانلود ، پروژه را در Xcode گشوده نمایید. Storyboard تصویر ذیل را در آن مشاهده خواهید کرد:
ما تا قبل از اینً ListTableViewController و DocumentViewController را برای شما طراحی کرده ایم. در حالتیکه نرمافزار را کامپایل و اعمال فرمایید ، لیستی از پوشه ها نمایش داده میشود. در صورتیکه بر روی هرکدام از پوشه ها ضربه بزنید ، محتوای تصویری یا این که سندی آن فولدر اکران داده شود. البته ، کلید Share هنوز طراحی نشده میباشد و این چیزی میباشد که ما قصد داریم در باب آن کلام کنیم.
اضافه کردن امکان AirDrop
در تمپلت پروژه ، ListTableViewController برای اکران دادن لیستی از پوشه ها در یک table view گزینه به کار گیری قرار میگیرد ، در حالی که DocumentViewController ، محتوای مدرک را در برگه web view اکران میدهد. کلید action در document view با سیاق share: از کلاس DocumentViewController مرتبط گردیده است. مشی را با کد ذیل بازنویسی میکنیم: