真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)分享功能實現(xiàn),ios最新技術(shù)分享

如何為iOS app添加AirDrop文件分享功能

AirDrop概覽

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設(shè)計、做網(wǎng)站與策劃設(shè)計,奉化網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:奉化等地區(qū)。奉化做網(wǎng)站價格咨詢:18982081108

AirDrop是iOS 7引入的一項新功能,iCloud同步功能允許在用戶的兩臺iOS設(shè)備之間分享照片和文檔,而AirDrop可以在不同用戶的iOS設(shè)備之間進(jìn)行照片和文檔的分享。

在iOS 7之前,iOS用戶主要依靠第三方app實現(xiàn)iOS設(shè)備間的文件和數(shù)據(jù)分享,在iOS 7中,該項新功能適用于所有iPhone 5、iPad 4、iPad mini以及第五代iPod touch設(shè)備。通過AirDrop,你可以與附近其他iOS app分享照片、視頻、通訊錄、URL、Passbook passes、App Store上的app列表、iTunes Store中的媒體列表以及地圖中的位置信息等等。

蘋果在iOS 7 SDK中集成了UIActivityViewController類,可以讓你很簡單地就能把AirDrop功能整合進(jìn)app中。UIActivityViewController類封裝了文件分享功能的細(xì)節(jié)。你所需要的就是告知這個類你希望分享的內(nèi)容,以及處理的結(jié)果。在這個教程中,我們將會演示UIActivityViewController的使用方法,以及你該如何使用AirDrop來分享圖片/文檔。

AirDrop使用藍(lán)牙來掃描周圍的設(shè)備,當(dāng)兩臺設(shè)備通過藍(lán)牙建立起了連接,考慮到更快速的數(shù)據(jù)傳輸,它就會創(chuàng)建點對點的Wi-Fi網(wǎng)絡(luò)來連接兩部iOS 設(shè)備。但并不意味著為了使用AirDrop而需要把設(shè)備連接至Wi-Fi網(wǎng)絡(luò)。

比如你想在iPhone拍照類app中將照片分享給另一位iPhone設(shè)備,假如你在兩臺設(shè)備間啟動了AirDrop,點擊屏幕左下角的分享按鈕就能實現(xiàn)不同用戶iOS 設(shè)備間的文件分享。當(dāng)屏幕處于關(guān)閉狀態(tài)時,AirDrop為不可用,所以要確保文件接收方的設(shè)備處于打開狀態(tài),然后選擇設(shè)備進(jìn)行分享。在另一臺設(shè)備上,你會看到照片預(yù)覽和確認(rèn)要求。接收者可以接受或者拒絕接收文件。如果你選擇了接收,照片會被傳輸至你的iOS設(shè)備,并保存至相冊。

AirDrop并不僅僅適用于拍照類app,你也可以在大部分內(nèi)置的應(yīng)用中看到它,比如Contacts, iTunes, App Store, Safari以及其他應(yīng)用程序中。

下面我們來看看如何把AirDrop整合進(jìn)你的app。

UIActivityViewController簡介快覽

可能有開發(fā)者會覺得在應(yīng)用中整合AirDrop比較麻煩,其實只需要數(shù)行代碼就能實現(xiàn),UIActivityViewController讓這個過程變得非常簡單,因為AirDrop是該類固定的一部分。

UIActivityViewController類是一個標(biāo)準(zhǔn)的view controller,提供了幾項標(biāo)準(zhǔn)的服務(wù),比如復(fù)制項目至剪貼板,把內(nèi)容分享至社交網(wǎng)站,以及通過Messages發(fā)送數(shù)據(jù)等等。在iOS 7 SDK中,UIActivityViewController類提供了內(nèi)置的AirDrop功能。

如果你有一些數(shù)據(jù)一批對象需要通過AirDrop進(jìn)行分享,你所需要的是通過對象數(shù)組初始化UIActivityViewController,并展示在屏幕上:

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:objectsToShare applicationActivities:nil];

[self presentViewController:controller animated:YES completion:nil];

如上代碼所示,只需要兩行代碼,你就能通過AirDrop選項啟用activity view。當(dāng)檢測到周圍的設(shè)備時,activity controller會自動展示在設(shè)備上,并處理數(shù)據(jù)轉(zhuǎn)換(如果你選擇了該項)。

根據(jù)需要,你可以拒絕特定的分享類型,也就是說,你可以通過排除所有的活動僅展示通過AirDrop進(jìn)行分享。如下代碼所示:

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];

現(xiàn)在activity view controller僅展示AirDrop選項:

你可以通過UIActivityViewController來分享不同的數(shù)據(jù)類型,包括NSString, UIImage以及NSURL。你不僅可以使用NSURL分享鏈接,也可以通過URL傳遞任何類型的文件。

在接收端,當(dāng)其他設(shè)備接收數(shù)據(jù)時,它會基于數(shù)據(jù)類型自動打來app。也就是說,如果傳送的是UIImage時,被接收的圖片會展示在拍照類app中。當(dāng)傳遞的是PDF文件時,其他設(shè)備會在Safari中打開它。如果你僅僅分享NSString object,數(shù)據(jù)將會被展示在Notes app中。

AirDrop Demo App介紹

現(xiàn)在我們創(chuàng)建一個AirDrop demo app來幫你更好地理解UIActivityViewController和AirDrop。這個示例app非常簡單,當(dāng)首次啟動,你會看到羅列了幾個文件的表格視圖,包括圖片文件、PDF文件以及文本文件,你可以點擊文件并查看內(nèi)容。在content view中,會看到一個屏幕右上角有一個操作按鈕。點擊按鈕將啟用AirDrop選項,并且你可以與周圍設(shè)備分享圖片或者文檔。

你可以從頭開始做這個app,但是為了節(jié)省時間,你可以下載這個項目模板來試驗。打開Xcode project,你會發(fā)現(xiàn)下邊這個Storyboard:

這個示例app已經(jīng)執(zhí)行了ListTableViewController和DocumentViewController。如果編譯并運行這個app,你會發(fā)現(xiàn)一個文件列表。點擊任何一個文件,圖片或者文檔內(nèi)容將會展示出來。但是分享按鈕并沒有被執(zhí)行,這也是我們將要討論的一點。

添加AirDrop功能

在工程模板中,ListTableViewController被用來在表格視圖中展示文件列表,而DocumentViewController則通過web view來展示文檔內(nèi)容。document view中的操作按鈕和DocumentViewController的share: method有關(guān)。該方法的實現(xiàn)如下所示:

- (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];

}

這個代碼非常熟悉,我們在最開始的時候已經(jīng)討論過了,它可以用來簡單地創(chuàng)建UIActivityViewController,排除所有分享功能(AirDrop除外),并作為模態(tài)視圖展示出控制器。棘手的部分是如何定義分享的對象。下邊我們將會把分享文件轉(zhuǎn)換成NSURL object,并把文件URL作為數(shù)組傳遞給AirDrop。

頭兩行代碼是關(guān)于file URL轉(zhuǎn)換的。documentName屬性存儲了當(dāng)前文件(比如ios-game-kit-sample.pdf),展示在document view中。我們通過文檔名稱和它返回的相應(yīng)的file URL,來簡單地調(diào)用fileToURL: method。fileToURL: method已經(jīng)在工程模板中,代碼如下:

- (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將會被轉(zhuǎn)換為

%20Support/iPhone%20Simulator/7.0.3/Applications/A5321493-318A-4A3B-8B37-E56B8B4405FC/AirDropDemo.app/ios-

game-kit-sample.pdf.

file URL依據(jù)你運行的設(shè)備而變化,但是URL應(yīng)該以“file://”協(xié)議開頭。通過file URL object,我們創(chuàng)建了相應(yīng)的數(shù)組,并把它傳遞給UIActivityViewController以用來進(jìn)行AirDrop分享。

編譯并運行AirDrop demo

做完這些后,編譯并在iPhone上運行這個app。

注意:你需要一個真實的設(shè)備來測試AirDrop分享。不能在模擬器上進(jìn)行分享。

Uniform Type Identifiers (UTIs)統(tǒng)一標(biāo)示符(UTIs)

當(dāng)你把圖片分享之其他iOS設(shè)備,接收方會自動打開拍照類app并加載圖片。如果你傳遞的是PDF文件,接收方設(shè)備可能會提示你選擇一個app來打開文件,或者直接在iBooks中打開。iOS是如何知道哪個app適合什么樣的數(shù)據(jù)類型呢?

在系統(tǒng)中,蘋果用UTIs來處理數(shù)據(jù)類型的標(biāo)示。簡單的說,一個uti是用來標(biāo)示特定類型的數(shù)據(jù)或文件。例如,com.adobe.pdf標(biāo)示一個pdf文件,而public.png代表一個PNG圖片。在這里可以查看已經(jīng)在系統(tǒng)中注冊了的完整的UTIs清單。(love cc cat)應(yīng)用程序可以打開在iOS系統(tǒng)中已經(jīng)注冊了的UTI。因此無論文件是否被打開,iOS都會用特定的程序打開這個文件。

系統(tǒng)允許多個程序注冊相同的UTI。在這個教程中,iOS將通過app列表打開文件。比如,當(dāng)你分享PDF文檔時,你可以在接收端設(shè)備上看到如下屏幕:

總結(jié)

AirDrop是iOS 7引入的一個非常酷的功能,它為iOS設(shè)備間數(shù)據(jù)分享提供了一個很好的方法。首先,內(nèi)置的UIActivityViewController類使得開發(fā)者在應(yīng)用中實現(xiàn)該功能變得非常簡單。正如你所看到的demo app,它僅僅需要幾行代碼就能實現(xiàn)。所以推薦開發(fā)者在應(yīng)用中實現(xiàn)該功能。

ios中怎么實現(xiàn)分享功能

可以搜索一個叫ShareSDK的組件,整合了幾乎目前所有的分享渠道,直接引入到你的應(yīng)用里配置下就行了,官網(wǎng)上有詳細(xì)說明的。

iOS調(diào)用系統(tǒng)分享功能

調(diào)用下面的方法即可實現(xiàn)系統(tǒng)分享功能

//分享

- (IBAction)RespostClick_Action:(id)sender {

UIImage* image = [UIImage imageNamed:@"icon_share.png"];

NSString *text = @"I found an Awesome application software! InstaDown";

//;ls=1mt=8

NSURL *urlToShare = [NSURL URLWithString:[NSString stringWithFormat:@";ls=1mt=8",[HHLADSManager getValueFromjsondata:@"appid"]]];

NSArray *activityItems = @[text,image,urlToShare];

UIActivityViewController *avc = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

[self presentViewController:avc animated:TRUE completion:nil];

// 選中分享類型

[avc setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){

// 顯示選中的分享類型

NSLog(@"act type %@",activityType);

if (completed) {

NSLog(@"ok");

}else {

NSLog(@"no ok");

}

}];

UIPopoverPresentationController *popover = avc.popoverPresentationController;

if (popover) {

popover.sourceView = self.view;

popover.sourceRect = self.view.bounds;

popover.permittedArrowDirections = UIPopoverArrowDirectionUp;

}

}


文章名稱:ios開發(fā)分享功能實現(xiàn),ios最新技術(shù)分享
文章路徑:http://weahome.cn/article/hogcdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部