iOS UIFileSharingEnabled

来源:http://www.cnblogs.com/lurenq/archive/2017/11/09/7810315.html
-Advertisement-
Play Games

一、讓iOS App通過iTunes進行文件交換Documents 讓iOS App通過iTunes進行文件交換 有一些App需要通過使用iTunes讓用戶上傳和下載文檔。要讓iOS程式支持iTunes文件交換其實很簡單, 只需要在程式的Info.plist里增加一個鍵:UIFileSharingE ...


一、讓iOS App通過iTunes進行文件交換Documents

讓iOS App通過iTunes進行文件交換

有一些App需要通過使用iTunes讓用戶上傳和下載文檔。要讓iOS程式支持iTunes文件交換其實很簡單,

只需要在程式的Info.plist里增加一個鍵:UIFileSharingEnabledApplication supports iTunes file sharing),賦值YES

這樣,編譯之後進行機上運行的時候,連接設備到iTunes,就能進行文件交換了。

如果是在iOS Simulator中進行測試,可以把文件放到應用程式的“用戶目錄”的“Documents”下。要知道用戶目錄在OSX下的路徑,

可以NSLog(@"%@", NSHomeDirectory());運行一下就知道了,

用戶家目錄在OSX下的路徑類似這個:

/Users/venj/Library/Application Support/iPhone Simulator/4.3.2/Applications/158C149B-FF57-4C62-AEDB-DFB7A3BD8AFB

我做了一個簡單的程式進行測試,在Simulator中運行的時候,把文件放到用戶目錄下,下圖是用戶目錄在OSX下的內容,

把文件放到Documents下就可以了:

然後在程式中測試文件有沒有成功被程式識別:

   

NSFileManager *manager = [NSFileManager defaultManager];    NSString *dbPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"db.sqlite"];

    if ([manager fileExistsAtPath:dbPath]) {        self.navigationItem.title = @"Ready To Go";    }    else {        self.navigationItem.title = @"No DB File";    }

下麵是程式在添加文件前後的運行情況:

 

二、App與iTunes文件傳輸的方法和對iOS App文件結構的說明

就像很多iOS上面的播放器App一樣,本文編寫一個程式可以通過iTunes往裡面放文件,比如編寫一個音樂播放器程式,通過itune往裡面放歌曲文件,然後通過這個App來播放這首歌曲,首先我創建了一個普通的SingleView程式,叫做FileShareDemo。下麵是通過iTunes往App傳輸文件的截圖:

可以看到像GPlayer,AcePlayer播放器,視頻資源通過這種方式傳輸是很普遍的(很多蘋果用戶確實不知道這樣可以傳輸數據),這裡我創建了一個App叫做FileShareDemo,可以看到,也可以往裡面拖拽數據,這裡拖拽了一首歌2.mp3,但是預設情況下創建的App是不可以出現在左邊欄的,需要按下圖在plist裡面加一行:

接下來的工作是判斷有沒有導入進去,下麵的代碼我寫在了viewdidload里:

 NSFileManager *manager=[NSFileManager defaultManager];

NSString *path=[[NSHomeDirectory() stringByAppendingPathComponent:@”Documents”] stringByAppendingPathComponent:@”2.mp3″];

if ([manager fileExistsAtPath:path]) {

showLabel.text=@”have file”;

}else {

showLabel.text=@”have no file”;

}

NSLog(@”NSHomeDirectory %@”,NSHomeDirectory());

 這裡有幾點要說明,首先NSHomeDirectory()列印出來是

/var/mobile/Applications/8F01293C-C02D-4EF8-A9F7-1A7B10944F33

這個是程式的路徑,8F01293C-C02D-4EF8-A9F7-1A7B10944F33是每個App獨特的標記,比如憤怒的小鳥會是另一串信息,具體幹嘛的不清楚。然後我在後面添加了/Documents和/2.mp3,通過[manager fileExistsAtPath:path]來判斷這個路徑存不存在,用一個label列印出來。如果拖拽進去了可以看到label的內容是“have file”,通過程式運行的label信息可以看到/var/mobile/Applications/8F01293C-C02D-4EF8-A9F7-1A7B10944F33/Documents/2.mp3就是導入的文件的路徑。

之後我們可以通過這段代碼來播放歌曲:

 NSError* err;

player = [[AVAudioPlayer alloc]

initWithContentsOfURL:[NSURL fileURLWithPath:path]

error:&err ];

player.volume=0.7;

[player play];

之前的path直接在這裡可以用。

下麵再次補充一下文件的結構問題:

每個程式都會包含這幾個文件,Documents就是iTunes導入的文稿存儲的地方,FileShareDemo是Xcode項目包,如果通過Xcode往項目里放素材什麼的都在這裡,後兩個不知道有什麼具體作用。

特別提醒:

如果app不涉及文檔的上傳和下載,Application supports iTunes file sharing應設置為NO或刪除此key,否則會被拒.

 

參考鏈接:

https://my.oschina.net/hmj/blog/112592


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 效果圖展示: 原理很簡單,主要運用transform這個樣式,通過斜切和旋轉達成 html: css: 怎樣,是不是很簡單 ...
  • 在Web前端頁面實現圓角效果,CSS3幫你輕鬆實現,一個人人皆知的屬性 圓角邊框的繪製是Web頁面和Web應用程式中經常用來美化頁面效果的手法之一。今天,小編為大家介紹CSS3提供的可以將矩形變為圓角矩形的一個屬性 技術等級:中級 | 適合有一定的CSS基礎的人士閱讀。 希望收藏了這篇文章的你同時也 ...
  • 前言 需要用到圖形繪製,沒有找到完整的圖形繪製實現,所以自己實現了一個 - - 一、實現的功能 1、基於oop思想構建,支持坐標點、線條(由坐標點組成,包含方向)、多邊形(由多個坐標點組成)、圓形(包含圓心坐標點和半徑)等實體 2、原生JavaScript實現,不依賴任何第三方js庫和插件 3、多圖 ...
  • 我們平時在同域中請求頁面什麼的時候不會有這種情況,這種情況大多發生在移動端的跨域請求中發生的。 解決方法就是在服務端中加一層過濾HTTP請求的類型,把OPTION等不用的類型過濾掉。就是當請求為非 HTTP中的 GET 和 POST的時候就不執行下麵的代碼,這樣就可以只執行一次請求了。 在ASP.N ...
  • vue.js 一個簡單快捷的JS框架 vue.js 一個簡單快捷的JS框架 vue.js擁有簡單小巧的核心,漸進式技術棧,代碼簡單易學。 雙向綁定 什麼是雙向綁定? 雙向綁定 什麼是雙向綁定? Vue框架 很核心的功能就是雙向的數據綁定 ,雙向是指 HTML標簽數據綁定到Vue對象,另外反方向的數據 ...
  • 在Activity 的啟動過程中,調用ActivityThread 的handleResumeActivity 方法時,先得到一個與Activity 關聯的PhoneWindow 對象,然後通過PhoneWindow 來獲取DecorView。 PhoneWindow.java DecorView ...
  • iOS UImage 與 RGB 裸數據的相互轉換 Touch the data of image in iOS Get data from a image 較簡單,根據已有的 image 的屬性,創建 CGBitmapContext, 這個 context 是帶有直接訪問的指針的。然後將 Imag ...
  • 內部使用了OKIO庫, 此庫中Source表示輸入流(相當於InputStream),Sink表示輸出流(相當於OutputStream) 特點: ·既支持同步請求,也支持非同步請求,同步請求會阻塞當前線程,非同步請求不阻塞當前線程,非同步執行完成後回掉相應的方法 ·支持HTTP/2協議,通過HTTP/2 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...