1. 程式人生 > >iOS 共享檔案的方法,應用間傳文件

iOS 共享檔案的方法,應用間傳文件

不過這種應用呼叫無法完成應用間文件共享,這能完成一些簡單的資料傳遞。有關“URL Scheme”的具體使用可以參考iOS官方樣例中的LaunchMe。 為了給其它應用程式共享文件,發起共享的應用一般使用的是UIDocumentInteractionController類,通過呼叫該類例項的presentOpenInMenuFromRect方法顯示一個“OpenIn”選單,該選單中會顯示系統中宣告可以支援你所共享的文件的應用圖示,由使用者選擇使用那個應用開啟你共享的應用。 下面是一段程式碼樣例,該樣例通過UIDocumentInteractionController的interactionControllerWithURL方法建立了一個UIDocumentInteractionController例項,然後呼叫該例項的presentOpenInMenuFromRect方法顯示“OpenIn”選單。

NSString *filePath =

    [[NSBundlemainBundle]

pathForResource:@"PDF Document"ofType:@"pdf"];

NSLog(@"file path is: %@", filePath);

self.documentController =

    [UIDocumentInteractionController

interactionControllerWithURL:[NSURLfileURLWithPath:filePath]];

self.documentController.delegate = self;

self.documentController.UTI = @"com.adobe.pdf";

    [self.documentControllerpresentOpenInMenuFromRect:CGRectZero

                                           inView:self.view

                                         animated:YES];

將以上程式碼放置到一個控制元件對應的action方法中,觸發該控制元件就會讓系統彈出“OpenIn”選單,有使用者選者使用什麼程式開啟你所共享的應用。 注意,在“OpenIn”選單中會出現所有聲稱支援對應文件型別的應用,比如上例中的“OpenIn”選單中會出現所有“聲稱”支援pdf格式的應用圖示,至於使用者選擇哪個應用,所選擇的應用是否真的可以正常處理pdf文件是我們無法控制的。 為了使用其它應用程式共享的文件,接受文件的應用需要完成兩個工作。 第一個工作是在應用的Info.plist中加入宣告,宣告該程式支援什麼文件格式。比如你需要支援pdf文件,就可以在你的應用專案配置介面選擇“Info”頁面的“Document types”區段,在裡面加入pdf文件型別的配置,如下圖:

第二個工作是接受其它程式共享的資料,正常做法是在應用的openURL方法中加入響應程式碼,在該程式碼中去訪問引數URL中紀錄的文件,該URL指向本應用Documents目錄中的inbox目錄中的一個檔案,該檔案就是其它程式共享的文件的一個拷貝。具體程式碼如下:

- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

NSLog(@"openURL method was called");

NSLog(@"the source application is: %@", sourceApplication);

NSLog(@"url is: %@", url);

NSLog(@"handle the file in above file path for the shared doc");

returnYES;

}


以上openURL方法通過控制檯列印了列印了共享文件的應用名稱和所共享的文件在本應用中的訪問路徑,通過這個訪問路徑開發人員可以在本應用中訪問到其它應用所共享的文件。