مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

جلسه 32 آموزش iOS : به اشتراک گذاری فایل در اپلیکیشن آیفون


افزودن قابلیت AirDrop برای به اشتراک گذاری فایل ها در اپ های iOS

AirDrop ، پاسخ اپل برای فراهم نمودن قابلیت به اشتراک گذاری فایل ها و داده ها در اپ های iOS می باشد. قبل از شروع به کار iOS 7 ، کاربران نیاز داشتند که از اپ های سومی (3rd-party) همانند Bump برای اشتراک گذاشتن فایل ها بین دستگاه های iOS استفاده کنند ، اپل یک قابلیت جدید به نام AirDrop را برای تمام مدل های iPhone 5 ، نسل چهارم iPad ، مینی iPad و نسل پنجم مدل های لمسی iPad معرفی نمود. با AirDrop ، به راحتی می توان داده ها را با سایر دستگاه های iOS اطراف ، به اشتراک گذاشت. به طور خلاصه ، این قابلیت به کاربران اجازه می دهد تصاویر ، ویدئوها ، محتواها ، URL ها ، Passbook ها ، لیست اپ ها در App Store ، لیست رسانه ها در iTunes Store ، مکان ها در Map ها و غیره را به اشتراک بگذارند.

به نظر شما به عنوان یک توسعه دهنده ، ترکیب قابلیت AirDrop در اپ iOS ، نمی تواند بسیار عالی باشد؟ با استفاده از این قابلیت ، کاربران شما می توانند به آسانی تصاویر ، فایل های متنی یا هر نوع از اسناد را به آسانی با دستگاه های iOS اطراف به اشتراک بگذارند.  کلاس UIActivityViewController در iOS 7 باعث می شود که توسعه دهندگان این امکان را داشته باشند که اپ خود را به سادگی با قابلیت AriDrop ادغام نمایند. این کلاس ، توسعه دهندگان را از درگیری در جزئیات مربوط به اشتراک گذاری فایل ها ، رها می کند. تنها چیزی که لازم است ، این است که به این کلاس اشیائی که قرار است به اشتراک گذاشته شوند ، اعلام شود ، بقیه کارها را خود کلاس هندل می نماید. در این آموزش ، نحوه استفاده از کلاس UIActivityViewController را نشان خواهیم داد و با هم خواهیم دید که چگونه می توان از این کلاس برای به اشتراک گذاشتن اسناد از طریق AirDrop استفاده نمود.

بیایید کار را با هم شروع کنیم.

مروری بر AirDrop

 قبل از این که به بخش پیاده سازی قدم بگذاریم ، بیایید نگاه سریعی به AirDrop داشته باشیم. استفاده از AirDrop بسیار ساده است. به بخش Control Center مراجعه می کنیم و به AirDrop ضربه می زنیم تا فعال شود. می توانیم با انتخاب گزینه “Contact Only” یا “Everyone” ، بسته به این که با چه کسی می خواهیم داده ها را به اشتراک بگذاریم ، کار را شروع می کنیم. اگر گزینه Contact Only را انتخاب کنیم ، دستگاه ما ، فقط لیست مخاطبان (contacts) ما را نشان خواهد داد. بدیهی است ، با گزینه Everyone ، دستگاه ما توسط هر کسی قابل مشاهده خواهد بود.

AirDrop از Bluetooth برای اسکن کردن دستگاه های اطراف استفاده می کند. هنگامی که یک ارتباط از طریق Bluetooth برقرار می شود ، شبکه ad-hoc وای فای ، برای پیوند دادن دو دستگاه با یکدیگر ایجاد می شود و امکان انتقال سریع تر داده ها را فراهم می کند. این بدان معنی نیست که برای استفاده از AirDrop ، نیاز داریم که دستگاه خود را به شبکه Wi-Fi متصل نماییم. فقط لازم است که WiFi دستگاه خود را برای انتقال داده ها ، روشن کنیم.

کافی است ، بخواهیم که یک تصویر از اپ Photos را از یک دستگاه به دستگاه دیگری ، به اشتراک بگذاریم. با فرض فعال بودن قابلیت AirDrop در هر دو دستگاه ، برای به اشتراک گذاشتن تصویر با دستگاه دیگر ، روی کلید Share (با یک فلش به سمت بالا) در سمت چپ و بالای صفحه نمایش ضربه می زنیم

در ناحیه AirDrop ، نام دستگاه هایی که برای به اشتراک گذاری واجد شرایط هستند ، خواهیم دید. AirDrop زمانی که صفحه (screen) در حالت خاموش باشد ، در دسترس نخواهد بود. بنابراین ، باید مطمئن شویم که دستگاه طرف مقابل برای دریافت داده ها ، در حالت روشن باشد. سپس ، می توانیم دستگاه موردنظر را برای به اشتراک گذاری تصویر انتخاب نماییم. در دستگاه طرف مقابل ، یک پیش نمایش از تصویر و یک درخواست تأیید دیده می شود. گیرنده ، می تواند دریافت عکس را تأیید (accept) یا رد (decline) نماید. اگر گزینه تأیید اتخاب شود ، تصویر بین دستگاه ها انتقال داده شده و به صورت خودکار در  camera roll ذخیره می شود.

AirDrop فقط با اپ Photos کار نمی کند. ما علاوه بر این ، می توانیم گزینه Share را در بسیاری از اپ های داخلی مانند Contacts ، iTunes ، App Store ، Safari مشاهده نماییم. اگر موضوع AirDrop برای شما تازگی داشت ، اکنون باید درک بهتری نسبت به آن کسب نموده باشید.

بیایید ، کار را ادامه دهیم و ببینیم چگونه می توانیم ، قابلیت AirDrop را با اپ خود جهت به اشتراک گذاری انواع داده ها ، ترکیب نماییم.

نگاه سریع بر کلاس UIActivityViewController

ممکن است ، تصور کنید که پیاده سازی قابلیت 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  مرتبط شده است. متد را با کد زیر ویرایش می کنیم:

- (IBAction)share:(id)sender {
    NSURL *url = [self fileToURL:self.documentName];
    NSArray *objectsToShare = @[url];
 
    UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];
    
    // Exclude all activities except AirDrop.
    NSArray *excludedActivities = @[UIActivityTypePostToTwitter, UIActivityTypePostToFacebook,
                                    UIActivityTypePostToWeibo,
                                    UIActivityTypeMessage, UIActivityTypeMail,
                                    UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
                                    UIActivityTypeAssignToContact, UIActivityTypeSaveToCameraRoll,
                                    UIActivityTypeAddToReadingList, UIActivityTypePostToFlickr,
                                    UIActivityTypePostToVimeo, UIActivityTypePostToTencentWeibo];
    controller.excludedActivityTypes = excludedActivities;
    
    // Present the controller
    [self presentViewController:controller animated:YES completion:nil];
 
}

اگر فراموش نکرده باشید ، کد بالا بسیار شبیه به کدی است که ما آن را در جلسات ابتدایی توضیح داده بودیم. کد فوق ، به سادگی یک UIActivityViewController را ایجاد می کند، به غیر از AriDrop تمام فعالیت ها را حذف می کند و کنترلر را به عنوان modal view نمایش می دهد. بخش مهارانه این کار ، نحوه تعریف اشیاء برای اشتراک گذاری می باشد. در اینجا ، فایل را برای به اشتراک گذاشتن به داخل شیء NSURL می آوریم و فایل URL را به عنوان یک آرایه به AirDrop پاس می دهیم.

دو خط ابتدا از کد بالا ، مسئول تبدیل فایل URL هستند. خصیصه documentName ، فایل جاری (برای مثال ios-game-kit-sample.pdf) در حال نمایش در document view را ذخیره می کند. ما به سادگی متد fileToURL: را با نام document فراخوانی می کنیم و این متد ، فایل URL متناظر را باز می گرداند. متد fileToURL: در تمپلت پروژه موجود است و کد زیر مربوط به آن است:

- (NSURL *) fileToURL:(NSString*)filename
{
    NSArray *fileComponents = [filename componentsSeparatedByString:@"."];
    NSString *filePath = [[NSBundle mainBundle] pathForResource:[fileComponents objectAtIndex:0] ofType:[fileComponents objectAtIndex:1]];
 
    return [NSURL fileURLWithPath:filePath];
}

این کد بسیار ساده است. برای مثال ، ios-game-kit-sample.pdf ترجمه خواهد شد به:

file:///Users/simon/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/A5321493-318A-4A3B-8B37-E56B8B4405FC/AirDropDemo.app/ios-game-kit-sample.pdf. . انواع فایل URL بستگی به دستگاه در حال اجرا دارد. اما URL باید با پروتکل “file://”  شروع شود. با شیء file URL ، ما آرایه مربوطه را ایجاد کرده و آن را به UIActivityViewController برای اشتراک گذاری به AirDrop انتقال می دهیم.

ساخت و اجرای اپ AriDrop Demo

کار انجام شد. این کاری بود که برای پیاده سازی به اشتراک گذاری AirDrop نیاز داشتیم. اپ را بر روی یک iPhone واقعی کامپایل و اجرا می نماییم. بله ، درسته! ما به یک دستگاه واقعی برای تست قابلیت اشتراک گذاری AirDrop نیاز داریم. قابلیت به اشتراک گذاری در شبیه ساز کار نمی کند.

 

Uniform Type Identifiers

زمانی که ما یک تصویر را با دستگاه iOS دیگری به اشتراک می گذاریم ، طرف دریافت کننده به طور خودکار ، اپ Photos را باز کرده و تصویر را لود می نماید. اگر یک فایل PDF را انتقال دهیم ، طرف دریافت کننده می تواند یک اپ را برای باز کردن اپ انتخاب نماید یا مستقیماً آن را در iBook باز نماید. چگونه iOS تشخیص می دهد که کدام اپ برای انواع داده ها استفاده کند؟

UTI ها (اختصار Uniform Type Identifiers) پاسخ اپل برای شناسایی داده های هندل شده در داخل سیستم می باشد. به طور خلاصه ، Uniform Type Identifier یک شناسه یکتا برای نوع خاصی از داده یا فایل می باشد. برای نمونه ، com.adobe.pdf یک سند PDF وpublic.png  یک تصویر PNG را نشان می دهد. می توانید لیست کاملی از UTI های ثبت شده را در here پیدا کنید. اپلیکیشن قادر است نوع خاصی از فایل ثبت شده را برای هندل کردن UTI با iOS ، باز نماید. بنابراین ، هر زمان که یک نوع فایل باز می شود ، iOS عملیات باز کردن فایل را با اپ خاصی هندل می کند.

سیستم اجازه می دهد ، چندین اپ برای ثبت UTI مشابهی مورد استفاده قرار گیرند. در این مورد ، iOS برای باز کردن فایل موردنظر ، لیستی از اپ هایی را که قادر هستند فایل را باز کنند ، نمایش داده و از کاربر اجازه بازکردن فایل با یکی از این اپ ها را می گیرد. برای مثال ، هنگامی که یک سند PDF به اشتراک گذاشته می شود ، در دستگاه دریافت کننده چنین صفحه ای باز می شود:

 

اتمام کار

AirDrop ویژگی بسیار جالبی است که در iOS 7 معرفی شده است. این قابلیت یک روش بسیار عالی را برای به اشتراک گذاشتن داده ها بین دستگاه های iOS ارائه می دهد. بهتر از همه ، کلاس داخلی UIActivityViewController  کار را برای توسعه دهندگان بسیار راحت نموده است و آنها می توانند به راحتی پشتیبانی از AirDrop را در اپ خود اضافه نمایید. همان طور که مشاهده کردید ، این کار فقط نیاز به چند خط کد برای پیاده سازی این قابلیت داشت. ما توصیه اکید می کنیم که این قابلیت را حتماً به اپ خود اضافه نمایید.

فصلِ: 3 , تعداد قسمت ها: 179 , سطح: صفر تا صد

این فصل در یک نگاه:

در این دوره آموزشی ، برنامه نویسی اندروید و ios را با استفاده از زامارین خواهیم آموخت. همچنین به صورت کاملا پروژه محور ، اپلیکیشن فروشگاهی مشابه دیجی کالا را پیاده سازی خواهیم کرد. در انته…
فصلِ: 5 , تعداد قسمت ها: 221 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

در این فصل:-نمایش notification به کاربر زمانی که اتفاقاتی از قبیل لایک کردن پست و ... میافتد(این مبحث مبحثی مهم بوده و ج…

  توضیحات کلی دوره: با سلام خوش اومدین به حرفه ای ترین دوره ی Swift ابتدای کار ممکن است سوالی برای شما پیش آید: -من نیازی به ساخت اپلیکیشن اجتماعی ندارم چرا باید این دوره را ببینم؟ ج…
فصلِ: 7 , تعداد قسمت ها: 159 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

اپل نویس حرفه ای شوید... با این پکیج کسب درآمد میلیونی کنید....   در این پکیج به نکات ریز و درشت زیادی پرداختیم که خیلی خیلی میتونه به شما کمک کنه که تبدیل به برنامه نویس حرفه ای شوید... …
فصلِ: 12 , تعداد قسمت ها: 126 , سطح: صفر تا صد
موضوعات: آموزش IOS

این فصل در یک نگاه:

فصل 16 فصل آخرمون هست و میایم توی این فصل یه سری مباحث کوچیکی که جامونده و کارهای نهایی برای انتشار برنامه توی مایکت های…

با سلام نکته:هیچ نیازی به mac و یا iphone نیست... نکته:هیچ نیازی به بلد بودن برنامه نویسی از قبل نیست... مباحثی که توی این دوره مرور میکنیم میتونه ما رو از سطح صفر برنامه نویسی ios به صد …
فصلِ: 6 , تعداد قسمت ها: 194 , سطح: صفر تا صد

این فصل در یک نگاه:

در این فصل آپدیت های مربوط به دوره را قرار میدهیم…

با سلام و خسته نباشد خدمت کلیک سایتی های عزیز در ادامه با توضیحات مختصری درمورد دوره ی react native با ما همراه باشید: React Native چیست؟ قطعا یکی از آرزوهای برنامه نویسان این میباشد که ب…
فصلِ: 5 , تعداد قسمت ها: 51 , سطح: صفر تا صد

این فصل در یک نگاه:

اموزش پرداخت درون برنامه ای بازار در یونیتی-اموزش خرید سکه در بازی-اموزش خرید مصرفی و غیر مصرفی…

توضیحات کلی مجموعه: آموزش مقدماتی تا پیشرفته یونیتی(ساخت بازی توپ چرخنده-اموزش بازی دوبعدی-اموزش بازی سه بعدی اول شخص شوتر-اموزش بازی سه بعدی رالی (ماشین سواری))   سرفصلهای دوره: نصب ی…
فصلِ: 2 , تعداد قسمت ها: 68 , سطح: صفر تا صد

این فصل در یک نگاه:

آموزش ساخت یک فروشگاه کوچک-آموزش کار با bottom navigation -آموزش کار با تب بار-آموزش کار با scrollview - آموزش کار با ان…

توضیحات کلی مجموعه: آموزش دوره فلاتر از پایه تا پیشرفته(این دوره به دوره متخصص فلاتر تغییر پیدا کرد) درسال های گذشته تعدا زیادی فریمورک معرفی شد که هرکدام تجربه خاص خودش رو داشت،اما فلاتر …
فصلِ: 5 , تعداد قسمت ها: 25 , سطح: صفر تا صد

این فصل در یک نگاه:

فصل پنجم…

توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید