求思路~~ 在ios中,app A 将资源发送给 app B ??

shifeng310 发布于 2013年10月09日 | 更新于 2013年10月14日
无人欣赏。

小弟技术有限,零基础接触ios才2个月,很多不懂。 如题: app A 如何把内容,传递给 app B, 我仅仅知道用 openURL的方法,可是这个方法貌似只能在app A 中直接打开 app B 并不能,将想要传递的内容,传给 app B。(补充:两个app都是本地的,不通过网络服务器中转,例如:手机端下载有百度地图app,把百度地图中的“广州市”地图包,保存到我自己写的app中)

补充: 针对5楼的@abigfrog 提出通过 服务器转换的方式,我忘记说明需求了,我们要求是两个app 都是在手机本地的哦,也就是本地的从一个app 把内容保存到 另外一个app中。 貌似很多软件都是通过服务器中转,例如:Drafts

请大家指点一二 不胜感激。

共46条回复
zhangmeteor 回复于 2013年10月09日

我替tinyfool老师说吧: @sycx 老师出来接客啦

tinyfool 回复于 2013年10月09日

基本上没戏

或者你把你要做到的东西说的更详细点,我们可以帮你分析下

tinyfool 回复于 2013年10月09日

1楼 @zhangmeteor 以后我都不需要来灌水了,爽啊

zhangmeteor 回复于 2013年10月09日

3楼 @tinyfool 哈哈哈 = =|

abigfrog 回复于 2013年10月09日

通过服务器中转下呗 用推送 哈哈

zhangmeteor 回复于 2013年10月09日

5楼 @abigfrog 这思路太逆天了把。。。

tinyfool 回复于 2013年10月09日

6楼 @zhangmeteor 需求合适的话,这个方案是可行的

zhangmeteor 回复于 2013年10月09日

7楼 @tinyfool 这个明显。。。人家刚接触ios,你就搞的又要服务器,绕来绕去感觉不符合把- -|

米苏 回复于 2013年10月09日

楼主说的是在邮件中下载了一个附件,通过其他的客户端打开吧。

比如说下载了pdf,在印象笔记中打开该文件

abigfrog 回复于 2013年10月09日

下班.ipa 有好办法再告诉你

ansonling 回复于 2013年10月09日

你的意思是否是这样的,比如在格瓦拉上买电影票,把购买付费信息,push出去,然后调去在设备已装的支付宝app?

shifeng310 回复于 2013年10月09日

2楼 @tinyfool 好的,我一会把需求,尽量说清楚点点

shifeng310 回复于 2013年10月09日

8楼 @zhangmeteor 之前没有任何移动开发经验列,临时从object-c 摸索起来的。两个月给公司做了个小app

shifeng310 回复于 2013年10月09日

11楼 @ansonling 不是的 我的要求是两个app 都是在本地通信,不通过服务器中转,例如说:我手机端有百度地图的app,我想把地图中“广州市”的地图包,传值到我自己写的app中保存。

董一凡 回复于 2013年10月09日

微信已经做出来了,可以直接传一段nsdata
我猜测他的思路是url scheme的方式传递UIPasteboard
不同app都可以访问系统剪切版

chenyu 回复于 2013年10月09日

听上去有点高端啊…………

surrender 回复于 2013年10月09日

[[NSWorkspace sharedWorkspace] launchApplicationAtURL:[NSURL fileURLWithPath:Path]options:NSWorkspaceLaunchDefault configuration:[NSDictionary dictionaryWithObject:array forKey:NSWorkspaceLaunchConfigurationArguments] error:&error]; OS X上可以这么传,你看看iOS有木有类似的,对iOS表示不太了解

Lithium 回复于 2013年10月09日

感觉楼上得都不太靠谱啊,明显微信的意思是可以打开很多种文件格式,和dropbox的网盘类应用类似啊。 ibooks能打开epub,我有个epub格式的文件就可以让ibooks打开,微信一定是在配置文件里设置的.*的文件都能打开,所以能传,如果b不支持a暴露出来的文件,必须是不可以的吧。

sycx 回复于 2013年10月09日

接受方先注册一个文件类型,参考 Technical Q&A QA1587

然后实现AppDelegateapplication:openURL:sourceApplication:annotation:方法

之后发送方就可以使用UIDocumentInteractionController类来指定发送一个文件

tinyfool 回复于 2013年10月09日

19楼 @sycx 靠,那不是两者都注册了文件类型的话,就可以对话玩儿了?

sycx 回复于 2013年10月09日

20楼 @tinyfool UIDocumentInteractionController会弹出系统UI,让用户选择用哪个App打开,或者预览、打印啥的,无法干涉...

shifeng310 回复于 2013年10月10日

15楼 @董一凡 非常感谢你的思路,你的意思是,app A 将要传递的内容保存到 系统粘贴板(UIPasteboard),然后用url scheme 的方式发送UIPasteboard中的内容吗? 小弟目前还只会使用 url scheme的方式打开指定的app 还不知道如何用 url scheme 传递参数,例如:粘贴板上的内容,还望请教。

shifeng310 回复于 2013年10月10日

18楼 @Lithium 不太明白ios版的微信中有哪个功能是支持,本地app之间通信、传输数据的,读取本地照片肯定不算吧,读取系统粘贴板吗?? 你提出文件格式很正确,app B 肯定得支持 app A暴露出的文件

morpheus1984 回复于 2013年10月10日

这个贴真心不错啊。。。怎么保存呢?@tinyfool

shifeng310 回复于 2013年10月10日

24楼 @morpheus1984 谢谢帮顶

shifeng310 回复于 2013年10月10日

19楼 @sycx 正准备尝试下 您提供的思路,具体操作是否还能说的更明细一些,我先自己查查资料,了解下吧 非常感谢

shifeng310 回复于 2013年10月11日

21楼 @sycx sycx老师在不在啊,按照你说的方法,我发现 app A中的文件,可以被 app B打开,可是app A中的那个文件 貌似不是被复制到 app B中的沙盒中,如何让app B 获取 app A 的文件呢?

sycx 回复于 2013年10月11日

27楼 @shifeng310 文件会被复制到App B的Documents/Inbox目录

application:openURL:sourceApplication:annotation:的参数url 就是指向那个文件

terryso 回复于 2013年10月11日

28楼 @sycx 这种做法有很多局限性,不过在未越狱的设备上好像也只能这样了。。。

shifeng310 回复于 2013年10月11日

28楼 @sycx 谢谢老师,我弄个demo去试试 非常感谢

董一凡 回复于 2013年10月11日

如果你的两个app在同一个team下,就是com.xxx.*前边的标示相同(这个限制是iOS7加入的,iOS7以前甚至不需要在同一个team下,猜测iOS7的微信的做法是存到了公用的系统剪切版),可以在A app中把数据存入一个带名字的UIPasteboard, 然后用url scheme的方式打开B app,然后在url scheme上带上这个UIPasteboard的名字,然后B app就可以去读取这个UIPasteboard里的内容了,这种方式比打开文件的方式更灵活,因为你可以直接放一段NSData,文件打开方式的话,你无法预知用户用什么应用打开你的文件

注明下,我说的微信的功能不是你们说的文件打开功能,微信的开放平台支持你分享一段数据给好友,然后好友在微信中点击这段数据会自动用你的app打开,如果app没有安装,会自动跳到你的app的安装网页

sylarhcn 回复于 2013年10月11日

微信的sdk就是传的一段nsdata。但是貌似对大小有限制。不能超过32k

董一凡 回复于 2013年10月11日

http://enharmonichq.com/sharing-data-locally-between-ios-apps/
这里有各种共享的方法

董一凡 回复于 2013年10月11日

32楼 @sylarhcn 我们的阅读应用用这个功能传电子书,大小限制是10M

terryso 回复于 2013年10月11日

34楼 @董一凡 这位同学给出的文章不错,收了备用。。。谢谢

shifeng310 回复于 2013年10月11日

31楼 @董一凡 感谢 董老师的 耐心回答,从您的方法中可以看出这是一个可行的 关于ios app之间 文件共享的功能,不过可能跟我要预研的项目还是有点点偏差,我也不知道我这个项目的可行性如何,和文件共享区别有两点:1、我app想做的是,去读取另外一个app的沙盒,获取想要的内容; 2、获取的内容可能比较大,十几mb 到 一百多mb不等。我预研的项目就是 在iphone上写一个app 去读取 百度地图app中更新的地图,然后把iphone 手机和 车载导航连接起来,把新地图更新到车载导航中,现在技术难点就是卡在,用自己的app 获取百度地图app 这一环节上。 不管怎么样非常感谢你的帮忙

langhua9527 回复于 2013年10月11日

貌似靠谱的

terryso 回复于 2013年10月12日

36楼 @shifeng310 你自己的APP想主动去获取不是自己的APP的数据,这一点在沙盒里是绝不可能,不用再想了。。。想做越狱的还有点可能。。。

Lings 回复于 2013年10月12日

可以通过url scheme,用openURL来传输,复杂的数据比如NSData,可以将其转成base64字符串,然后传输,当然了,数据量不能过大

terryso 回复于 2013年10月12日

39楼 @Lings 使用openURL你也不能主动获取,他现在是想要获取百度地图的数据,你觉得百度会主动发给他么?

nickel 回复于 2013年10月12日

36楼,你那种需求正式沙盒机制严重禁止的,沙盒就是希望APP的数据被孤立化,从而保证安全性。

shifeng310 回复于 2013年10月12日

40楼 @terryso 我们这个项目是在预研的,如果技术可行,就可以跟百度去谈合作,让它暴露接口给我们访问它的数据; 可惜的是,目前貌似本地获取其他app中的大数据资源 是行不通的了,

shifeng310 回复于 2013年10月12日

41楼 @nickel 恩,差不多已经死心了,以后可能走服务器中转的方法,来达到此需求

zhangmeteor 回复于 2013年10月12日

43楼 @shifeng310 我觉得这项目本身就有问题啊,从百度获取,首先百度允许这件事就很麻烦

shifeng310 回复于 2013年10月14日

44楼 @zhangmeteor 呵呵,公司是跟百度合作啦,百度很多应用,我这个是针对百度地图提出的一个预研点,如果技术可行,就去跟百度谈,让他们暴露个接口什么的。

zhangmeteor 回复于 2013年10月14日

45楼 @shifeng310 这样哈 😍

本帖有46个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
相关帖子

[顶 楼]
|
|
[底 楼]
|
|
[首 页]