一、让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

iOS UIFileSharingEnabled的更多相关文章

  1. Delphi iOS 开启文件共享 UIFileSharingEnabled

    Apple 在 iOS 提供了文件共享(FileSharing)功能,让 App 有一个对外窗口的目录,透过 iTunes 可以任意管理这个目录的文档内容(可拖入文档,也能将文档拖出备份). 如果 A ...

  2. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  3. IOS框架和服务

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...

  4. [iOS 主要框架的总结]

    原文地址:http://blog.csdn.net/GooHong/article/details/28911301 在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件, ...

  5. iOS 的基本框架

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法.    iOS为应用程序开发提供了许多可使用 ...

  6. iOS开发---iPhone SDK 包含哪些东西?

    第一部分: 在使用Intel芯片的Macintosh计算机开发iOS应用程序所需的全部接口.工具以及资源全都包含于iPhone SDK. 苹果公司将大部分系统接口发布在框架这种特殊的数据包.一个框架就 ...

  7. IOS , plist 配置项说明

    本文转载至 http://blog.csdn.net/fengsh998/article/details/8307424 Key:Application can be killed immediate ...

  8. iOS设置app应用程序文件共享

    1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 ...

  9. ios基础知识

    1获取系统语言设置 NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; NSArray *languages = ...

随机推荐

  1. 2019.01.02 poj3046 Ant Counting(生成函数+dp)

    传送门 生成函数基础题. 题意:给出nnn个数以及它们的数量,求从所有数中选出i∣i∈[L,R]i|i\in[L,R]i∣i∈[L,R]个数来可能组成的集合的数量. 直接构造生成函数然后乘起来f(x) ...

  2. 2018.10.27 bzoj3209: 花神的数论题(数位dp)

    传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前 ...

  3. pyinstaller基本操作

    pyinstaller 打包错误http://www.fmwei.com/linux/pyinstaller-lib-error.html 只需要复制python安装目录下的动态库到系统地动态库目录即 ...

  4. 查看mysql数据库中的所有用户

    SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; @前面为用户名,后面对应的‘% ...

  5. spring mvc 文件上传工具类

    虽然文件上传在框架中,已经不是什么困难的事情了,但自己还是开发了一个文件上传工具类,是基于springmvc文件上传的. 工具类只需要传入需要的两个参数,就可以上传到任何想要上传的路径: 参数1:Ht ...

  6. OOP中的六种关系以及和JDK或框架中源码进行匹配对应

    前言:这六种关系里:泛化=实现>组合>聚合>关联>依赖:其中组合-聚合-关联这三个如果只是给出一段代码是无法判断具体是什么关系的,需要配合语义或说业务场景来能进行区分(和设计模 ...

  7. MySQL导入导出表数据

    原文链接:http://blog.163.com/yang_jianli/blog/static/1619900062010111011041228/ 1.这里的导出和mysqldump不同,只是导出 ...

  8. 如何通过Openssl实现私有CA,并为HTTP服务提供TLS/SLL安全机制

    原文链接:http://guodayong.blog.51cto.com/263451/1181059 Openssl是SSL的开源实现(可以免费下载应用程序),是一种安全机密程序,主要用于提高远程登 ...

  9. hdu 4939 三色塔防

    http://acm.hdu.edu.cn/showproblem.php?pid=4939 给出一条长为n个单位长度的直线,每通过一个单位长度需要 t 秒. 有3种塔,红塔可以在当前格子每秒造成 x ...

  10. CSS 基础 例子 图片拼合技术

    利用background-position xpos ypos 就是以图片的左上角顶点为原点,往下和右都为正,反之为负,移动图片 如: background-position: 15px 20px;( ...