在iOS上跨多个应用分享数据

时间:2013-10-10 00:54:05

标签: ios data-storage

我知道这有很多线索,但似乎没有一个能满足我想要的东西。这是我的约束:

  • 不是使用私有API /框架或未记录的hack 目录访问会冒着被拒绝的风险 因为那个
  • 能够跨越不同的方式共享数据 供应商/应用程序开发人员
  • 数据可以在生命周期之外持续存在 应用程序(即使删除应用程序后)

更新:我一般都试图远离使用第三方基于云的服务来实现目标,因为这会引入额外的外部依赖。但如果必须,我希望它能满足这一约束

  • 能够分辨出与之通信的iOS设备。它不应该唯一地识别设备(它将进入我们所经历的那个邪恶的UDID讨论路线)。但只要它可以区分不同的iOS设备就应该没问题。

5 个答案:

答案 0 :(得分:4)

我也需要这个。我使用Parse.com作为我所有应用程序的后端 - 他们的免费套餐应该满足您的开发需求。

Parse具有适用于iOS,Android,Windows 8,OS X,JavaScript和.NET的API,您可以在任何平台上的云上使用所有数据(与Core Data和iCloud相反)。他们还提供“云代码”,这是您可以远程执行的代码,可远程处理信息并将数据恢复到您的应用程序。

您绝对应该check Parse.com为您的应用提供云存储空间。根据我的经验,它确实完成了工作。

对于数据持久性,我想您可能需要查看FMDB(尽管如果您决定在本地保留数据,它将随您的应用程序一起删除,但无论如何它可能对您有所帮助)。在许多情况下,核心数据是一种过度杀伤。

编辑:Parse.com有一个“安装”类,其中列出了安装了您应用的所有设备(无论是运行iOS还是Android),这是唯一的,没有您的输入任何代码。

答案 1 :(得分:3)

TextExpander作者的this blog post可能会有所帮助:

  

微笑通过与Apple讨论这个问题来回应这个问题   WWDC的工程师,提交了一个错误(#14168862),并检查了   那个bug的状态。我们还通过存储方法开发了一种解决方法   TextExpander数据在一个新的地方。提醒需要用户同意   存储和检索数据。完成的提醒通常不会显示在   它的界面。过去的提醒出现在底部   完成提醒。

     

TextExpander touch 2.1(及更高版本)支持存储共享片段   数据在一个漫长的过去,完成提醒。我们制作了一个更新的SDK   并让我们的开发人员了解其进展情况。我们的最终SDK是   在Apple官方iOS 7结束后的几个小时内准备就绪   公告。

更新(2013年11月22日) 这可能不是最好的方法,因为TextExpander的团队recently had problems with the App Review Team

答案 2 :(得分:2)

编辑:这仅适用于具有相同供应商的应用。

您可以将密码保存到设备的钥匙串,然后从任何应用程序访问该密码。

使用SSKeychain库...

NSString *service = @"com.yourcompany.yourservice";

// read
NSString *password = [SSKeychain passwordForService:service account:@"user"];

// write
[SSKeychain setPassword:password forService:service account:@"user"];

密码字符串doesn't have a length limit,因此将所有数据编码为字符串并将其保存在那里。用户删除应用程序后,钥匙串条目将保持不变。

答案 3 :(得分:0)

其中一种方法是使用THRIFT。这是一个需要后端服务器(私有)的数据通信协议,THRIFT可以编译成许多语言/平台。有一种元语言来描述数据,然后可以将其编译成多种语言。编写一次数据定义,可以在许多平台上使用。

更多信息,请访问。

http://thrift.apache.org/

答案 4 :(得分:0)

对我来说(我有2个应用程序和一个小工具)最好的解决方案是使用SSKeyChain并且不要忘记为您的应用添加Capabilities,例如here

如果您不想使用第三方库,可以使用NSUserDefaults并将组标识设置为here,但请不要忘记在{{1}中添加组标识符在AppGroups部分中为所有拥有共享数据的应用提供。