目前,我正在使用openURL(有一个专用的url方案),如果我使用托管在互联网上的文件,它工作正常,但我想使用本地文件,所以:
a)它脱机工作
b)很多时候我的用户要么不在小区范围内,要么在国际上漫游
到目前为止我尝试了什么:
我没有运气告诉openURL使用本地文件,我尝试了一些方法,但它们都是这样的
Nsstring *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"ext"]; NSURL *fileURL = [NSURL fileURLWithPath:filePath]; [[UIApplication sharedApplication] openURL:fileURL];
也
NSURL *fileURL = [[NSBundle mainBundle] URLForResource: @"test" withExtension:@"ext"]; [[UIApplication sharedApplication] openURL:fileURL];
还可以手动使用具有localhost /和file://以及var / mobile等路径的不同变体的字符串
什么都行不通(对我来说无论如何)
所以,我环顾四周,看到了UIDocumentInteractionController
我可以使用UIdocumentInteractionController让用户使用其他应用程序打开我的本地文件 – 但是它总是提供其他应用程序的多个选项,例如,其他应用程序之一可以是“DropBox”.
我不想让用户下载(或技术上传)我的文件副本以供其他方式使用.它包含我不希望如此容易获得的数据.
当我的目标应用程序打开文件(不是我的btw)时,它不允许任何类型的保存或访问原始数据.
我意识到,通过在我的应用程序中包含该文件,任何认真获取它的人都可以,我只是不想闪现一个大菜单,说’如果你想让自己的副本从中进行衍生作品,那就是’
理想情况下,我可以使用openURL,但我认为这是因为其他应用程序没有响应的“沙箱” – 在AndroID中我使用mode_world_readable将文件声明为其他应用程序可读(因此将其放在沙箱之外,并且它不允许其他应用程序写入它,只是阅读) – 无论如何在iOS上做同样的事情?
否则,如果我可以强制UIdocumentInteractionController使用特定的应用程序而不显示菜单 – 那也没关系.
Similar question asked a while ago
对于长时间阅读感到抱歉,任何帮助表示赞赏.
编辑:
我刚收到Apple Tech支持人员的回复,他们告诉我这是目前不可能的(就在iOS 6发布之后)
您可以通过子类化QLPrevIEwController来覆盖UIdocumentInteractionController的功能.然后,您可以替换显示“打开方式”菜单的标准栏按钮项目.看一下这篇文章,找到一个子类化QLPrevIEwController的解决方案:QLPreviewController remove or add UIBarButtonItems
当然,我相信应用程序间共享的工作方式很大程度上取决于你的手.如果某个应用已注册为能够处理某种类型的文件,则无论您是否愿意,它都会在“打开”列表中显示为其中一个选项.我不相信您可以过滤该列表中显示的应用程序.
以下是我曾考虑但从未尝试过的两个实验性想法:
>您可以对您尝试传递的文件中的数据进行base64编码 – 这只是将二进制文件转换为文本 – 并将其作为用于启动其他应用程序的自定义URL的一部分.然后另一个应用程序可以base64解码相同的数据回二进制.缺点是URL的长度有限,这意味着你发送的“文件”必须非常小.
>接下来,我甚至不知道这是否可行,但我想知道你是否可以使用一些steganograhpy算法将文档数据嵌入到图像中,然后将其交给相机胶卷.然后,另一个应用程序可以打开相机胶卷并再次将图像解码回数据. ……是的我知道……模糊不清,但尝试实施可能会很有趣. 总结
以上是内存溢出为你收集整理的iphone – openURL本地文件或强制UIDocumentInteractionController使用特定的应用程序全部内容,希望文章能够帮你解决iphone – openURL本地文件或强制UIDocumentInteractionController使用特定的应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)