1. 程式人生 > >IOS App開啟iTunes檔案共享

IOS App開啟iTunes檔案共享

關於IOS檔案目錄的一點記錄

      IOS的檔案系統面向的是裝置上的每個執行的應用程式。為了保證IOS系統的可用性和簡單性,IOS裝置的終端使用者是無法直接訪問檔案系統的,同時裝置上的app與使用者一樣也是不能隨便直接訪問檔案系統的。IOS的app與檔案系統之間的互動被限定在了一個指定的空間或者說是一個目錄裡,該目錄存在於每個App自身沙箱(sandbox)內部。每當在IOS裝置上安裝一個新的app,IOS的裝置上的程式安裝器會自動為這個新app提供一個主目錄(Home Directory),並將app安裝在為其建立的主目錄下,此外安裝器還會建立為app建立其它幾個關鍵性的目錄。所有這些建立的目錄組合起來就組成了app的檔案系統主檢視。因此app對檔案系統的操作也僅限定在了以上目錄的組合,app可以直接讀取這些目錄及目錄下的任何檔案,同時app也可以在指定的任何目錄建立自己的檔案或寫入自己的資料。翻過來說,在這個指定範圍之外app不能再訪問或建立任何目錄和檔案。比較特殊的情況是,IOS系統會提供系統介面來允許app訪問,例如訪問使用者儲存在裝置上的聯絡方式,相簿。但訪問這些內容背後所對應的檔案操作都是由底層的系統框架來完成。這也是app被稱為是一個“沙箱”的原因,在自己的沙箱內,app擁有全面的操作控制權;沙箱之外的東西,在有悖訪問規則的前提下,app不能做任何事情。

開啟iTunes檔案共享

       之前對Linux/Unix系統不熟悉(現在其實也不熟悉),對蘋果的裝置環境,開發體系,硬體特點基本上也處於無知狀態,記得起初拿到iPad的時候,一直以為作為移動裝置,既然iPad能夠與PC端連線,那麼就可以把它同時當做是一個行動硬碟來用,可以在PC可iPad之間進行檔案的傳輸,儲存,共享。我可以想任意App中放置檔案,也可以在PC端像瀏覽Mac上的檔案系統一樣,去檢視App目錄下的內容。後來我發現我錯了,根本不是想象中的那樣。當iPad連線PC之後,並沒有一個裝置目錄瀏覽管理介面。其實這也比較蘋果系統封閉的風格,蘋果希望將使用者在蘋果裝置上的檔案都能上傳到雲端,從而實現可以在多臺蘋果裝置上同步使用者資料。

       通過在app工程的Info.plist檔案中指定UIFileSharingEnabled關鍵字,並將其值設定為YES。我們可以很方便的開啟app與iTunes之間的檔案共享。但這種共享有一個前提:App必須將任何所需要共享給使用者的檔案,都要存放在<Application_Home>/Documents目錄下,<Application_Home>即在app安裝時自動建立的app的主目錄。下面我們簡單說明

在MAC上開啟iTunes,在應用程式一欄,預設介面為:



當連結iPad裝置後,iTunes介面如下,在面板工具條的右側會顯示iPad當前已連線到Mac上

      點選工具條的"iPad"按鈕,顯示具體的iPad裝置資訊,如下:



     被黃色塊蓋住的是iPad的裝置名稱,點選“應用程式按鈕”,之後在介面上我們可以看到當前iPad裝置的一些相關分類資訊,包括儲存空間大小,iPad上所安裝的IOS版本,是否存在可升級的更高版本的IOS;以及一些iPad裝置的備份方式。繼續下滾屏,如下介面:



      我們看到出現了一個名為“檔案共享”的分類。上面很清楚的標明瞭這個分類的作用是什麼,左側的列表是iPad裝置上安裝的所有應用程式,右側列表則是支援iTunes檔案共享的App的Documents目錄。以蘋果的Keynote為例,當我們儲存一個文件到iTunes時,Keynotye會講檔案寫入到自己的Documents目錄下,也就是我們在面板上看到的右側列表。我們可以直接從MAC上拖檔案到該右側列表,或者從右側列表選中檔案直接拖到MAC上,這樣便簡單的完成了所謂的iTunes與App的檔案共享。可以通過兩個按鈕完成同樣的功能。如圖:



      我們新建一個簡單的DEMO工程來把整個流程走一遍,工程名為FileShareWithITunesDemo



     在工程的Info.plist檔案中新增支援iTunes檔案共享的Key,並將值設為YES,



     之後將DEMO工工程釋出到iPad裝置上,在iTunes的面板上我們可以看到如下圖:



       現在左側列表中有了我們的工程對應的APP,接下來在mainStoryboard中新增簡單的描述和兩個按鈕:



      之後為兩個按鈕建立action的outline,程式碼如下

01 // 對應第一個按鈕
02 - (IBAction)logFilePathInDocumentsDir:(id)sender
03 {
04 NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent:  @"Documents"];
05
06 NSFileManager *fileManager = [NSFileManager defaultManager];
07
08 NSDirectoryEnumerator *dirEnum = [fileManager enumeratorAtPath:docsDir];
09
10 NSString *fileName;
11
12 while (fileName = [dirEnum nextObject]) {
13 NSLog(@"FielName : %@" , fileName);
14 NSLog(@"FileFullPath : %@" , [docsDir stringByAppendingPathComponent:fileName]) ;
15 }
16
17 }
18 // 對應第二個按鈕
19 - (IBAction)createImageFieldToDocuments:(id)sender
20 {
21 NSFileManager *fileManager=[[NSFileManager alloc] init];
22
23 NSString *docsDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Documents"];
24
25 NSString *imageFileName = [docsDir stringByAppendingPathComponent:@"myImage.png"] ;
26
27 UIImage *image = [self generateImage];
28
29 [fileManager createFileAtPath:imageFileName contents:UIImagePNGRepresentation(image) attributes:nil] ;
30
31 }
32 // 建立一個簡單的UIImage物件並作為圖片檔案內容
33 - (UIImage*)generateImage
34 {
35 UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 200), NO, 0.0) ;
36
37 CGContextRef ctx = UIGraphicsGetCurrentContext() ;
38
39 CGRect imageRect = CGRectMake(0.0, 0.0, 320, 200) ;
40
41 [[UIColor redColor] setFill] ;
42
43 CGContextFillRect(ctx, imageRect) ;
44
45 UIImage *image = UIGraphicsGetImageFromCurrentImageContext() ;
46
47 UIGraphicsEndImageContext() ;
48
49 return image ;
50 }

       我們先從MAC簡單的拖張圖片檔案到右側列表,如圖示:



     之後點選第一個按鈕,輸出Documents路徑下的所有檔名到控制檯



      完成之後,點選第二個按鈕完成向Documents目錄儲存檔案的功能(即共享檔案到iTunes)



至此,簡單的流程完畢。

相關推薦

IOS App開啟iTunes檔案共享

關於IOS檔案目錄的一點記錄       IOS的檔案系統面向的是裝置上的每個執行的應用程式。為了保證IOS系統的可用性和簡單性,IOS裝置的終端使用者是無法直接訪問檔案系統的,同時裝置上的app與使用者一樣也是不能隨便直接訪問檔案系統的。IOS的app與檔案系統之間的互

APP支援檔案共享設定(iOS

在開發過程中,有時候需要手動放一些檔案到Documents資料夾下做測試,以前是可以直接用itools或者PP助手等工具直接拖拉檔案到Documents資料夾的,但是最近開發時發現不可以這樣子做了,必須

iOS iTunes匯入本地視訊(檔案共享

完成效果: 用iTunes向app匯入視訊後,不用手動重新整理,編寫的工具類會實時監聽複製狀態,複製完成後會自動重新整理UI. 大坑:因為檔案共享是共享的Document資料夾下所有資源,所以你需要把非共享的檔案,如:資料庫檔案、快取檔案等,存放到除

iOS App讓自己的應用在其他應用中開啟列表中顯示、iOS把自己的應用新增到”活動“、將PDF檔案Open In MyApp

像百度網盤等應用,裡面的檔案開啟時,都可以通過以下應用再開啟檔案。下面紅色框框內的我的jpg就是我做的一個例子。因為例子沒有提供Icon,所以顯示的是預設icon。 下面就是這例子的主要步驟和程式碼。 例子是一個開啟jpg圖片程式。 1、在專案的**inf

fork -- 子程序共享父程序開啟檔案描述符

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #define FILE_PATH "file_point" int main(int a

android模組化app開發筆記-2外掛間佈局檔案共享

  android程式設計時佈局檔案,圖片資源等都是放在同一個資料夾下,這樣照成一個問題就是我們想重用UI佈局檔案和圖片時就還需要其分離這些資料,相信大部分android程式設計師都遇到過這樣的問題,其痛苦程度不亞於世紀末日趕不上諾亞方舟。    今天我用apkplug框

[iOS] 上傳到 iTunes Connect 的 iOS App 不見了

原來消失的 ipa或活動,Apple 會寄信通知。由於那個 Apple ID 是幾百年前的Email沒有在用,一直在檢查Gmail 的信箱和Google 為什麼完成上傳的 App 會沒出現在 iTunes Connect裡的「所有建置版本」裡。 真的要好好感謝強大的Google大神和那些具有分享精神的巨人

[iOS] Application Loader stuck at “Authenticating with the iTunes store” when uploading an iOS app

You have to agree to a new sign up in Application Loader. Select “Application Loader” under the “Xcode -> Open Developer Tool” menu (the first menu to

win10 開啟docker檔案系統共享

1.在docker的設定視窗的shared drives中設定共享,點 apply 儲存   2.如果應用失敗,檢視docker日誌,日誌位置: C:\Users\imiyu\AppData\Local\Docker       imiyu為本機使用者名

iOS 從一個app開啟另一個app

第一步:對B操作(對B的info.plist中自定義url types) 注意, 這裡的URL Schemes必填, URL identifier選填。 另外,URL Schemes建議都小寫,由於之後接收到資料的時候,不區分大寫和小寫, 都是轉為小寫。 規定的格式是   URL Schemes://

Windows 10開啟檔案共享訪問無需驗證(輸入使用者名稱和密碼)即可進入

此電腦 - 右鍵 - 管理 - 本地使用者和組 - 使用者 - 啟用Guest賬戶 選擇要共享的 檔案 or 資料夾,右鍵屬性 - 共享 - 高階共享 - 許

iOS如何讓程式能夠支援檔案共享

由於iOS的沙盒機制,蘋果使用者就不能像安卓使用者那樣能夠直接往手機裡拷自己喜歡的音視訊檔案,如果你的程式支援拷貝檔案進去,並且能夠顯示在程式中。 那麼就需要以下配置了: 在應用程式的Info.plist檔案中新增UIFileSharingEnabled(Applica

IPHONE 檔案共享程式碼 (設定iTunes共享目錄)

我們在使用iTunes同步iphone時,在應用程式裡會發現某些應用是有檔案共享功能的,這功能允許使用者向該程式的私有目錄上儲存檔案,如果我們想要將儲存到這個私有目錄上的檔案匯出來,我們就需要將它放

IOS App檔案儲存目錄

      IOS系統為每一個App開闢獨立的儲存空間,也就是我們常說的沙盒(sandbox)。App儲存目錄結構可以分為如下4個:(1)xxx.app (2)Documents (3)Library

iOS app中執行Python檔案(Swift+Objective C+Python)

最近專案中需要在iOS app中執行Python檔案,在網上找到一些資料,現在主要有兩個組織在從事跨平臺執行python的開發工作,一個是Beware:https://pybee.org/。 一個Kivy:https://github.com/kivy/kivy. 1.

ios app上傳成功但ITunes Connect不顯示的解決方法

使用Xcode或Application Loader上傳顯示成功,但是在ITunes Connect正在處理之後就沒了。這個時候不要改build傳了,只需要在info.plist加上對應的隱私描述就行了 從iOS10開始,蘋果更加註重對用於隱私的保護,

iOS模擬器和真機除錯時App的安裝檔案路徑問題

摘抄自:http://zhidao.baidu.com/question/1605787265227542067.html Xcode6釋出後,出現了很多的變動,功能性的變動,在這裡不進行過多的贅述,在WWDC上蘋果已經進行了講述,網上也有很多文章,這裡要介紹的是一些不太容

【手把手教學】開啟iOS app除錯模式

目標 本文會闡述如何通過使用開發者證書重籤的方式實現對iOS app開啟除錯模式 除錯模式開啟後可以實現以下功能: 1. 重籤後的ipa可以安裝在未越獄的iOS裝置上 2. 在未越獄的iOS 8.x裝置上都可以通過PP助手等工具訪問其程式的文件目錄 3

iOS APP提交至iTunes connect出現的問題

1、用xcode打包ok後,一直在iTunes connect裡看不到??重複打包提交也不行?建議用application loader打包,可以看到相關進度與錯誤; 2.application loader打包問題:The filename 未命名.ipa in th

iOS的Keychain可以實現App間的資料共享

百度的移動端產品,有一點體驗做的非常好。比如你手機裡面新裝了百度雲和百度貼吧,現在登入百度雲,再開啟百度貼吧,會發現雖然之前你從沒登入過貼吧,但這時候竟然用你登入百度雲的賬號自動登入了,省去了你再去登入的步驟。這裡有兩個關鍵點,一是,百度的賬號是全平臺打通的,你