3

我知道这方面有很多线程,但似乎没有一个能满足我想要寻找的东西。这是我的限制:

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

更新:我通常试图远离使用基于云的第 3 方服务来实现目标,因为这会引入额外的外部依赖。但如果我必须这样做,我希望它可以满足这一限制

  • 能够判断它正在与哪个 iOS 设备通信。它不应该必须唯一标识设备(正如我们都经历过的那样,它将进入那个邪恶的 UDID 讨论路线)。但只要它可以区分不同的 iOS 设备就可以了。
4

5 回答 5

4

我也有点需要这个。我使用 Parse.com 作为我所有应用程序的后端——它们的免费层应该可以满足您的开发需求。

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

您绝对应该检查 Parse.com以了解您的应用程序的云存储。根据我的经验,它确实可以完成工作。

对于数据持久性,我想你可能想看看FMDB(尽管如果你决定在本地持久化数据,它会随着你的应用程序被删除,但无论如何它可能会对你有所帮助)。在许多情况下,Core Data 是多余的。

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

于 2013-10-10T01:05:50.573 回答
3

也许TextExpander 作者的这篇博文会有所帮助:

Smile 通过在 WWDC 上与 Apple 工程师讨论该问题、提交错误 (#14168862) 并检查该错误的状态来对此作出回应。我们还开发了一种解决方法,将 TextExpander 数据存储在新位置。提醒需要用户同意才能存储和检索数据。已完成的提醒通常不会显示在其界面中。过去很久的提醒出现在已完成提醒的底部。

TextExpander touch 2.1(及更高版本)支持将共享代码段数据存储在过去已完成的提醒中。我们制作了一个更新的 SDK,并让我们的开发人员随时了解它的进展。在 Apple 正式发布 iOS 7 后的几个小时内,我们的最终 SDK 就准备好了。

更新 (22.11.2013) 这可能不是最好的方法,因为 TextExpander 的团队最近遇到了 App Review Team 的问题

于 2013-10-17T20:11:34.250 回答
2

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

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

使用SSKeychain库...

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

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

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

密码字符串没有长度限制,因此将所有数据编码为字符串并将其保存在那里。用户删除应用程序后,钥匙串条目将保留。

于 2013-10-11T00:56:51.157 回答
0

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

更多信息在。

http://thrift.apache.org/

于 2013-10-23T12:56:19.087 回答
0

对我来说(我有 2 个应用程序和一个 widged)最好的解决方案是使用SSKeyChain并且不要忘记Capabilities为您的应用程序添加像这里

或者,如果您不想使用 3rd 方库,您可以像这里NSUserDefaults一样使用和设置组标识符,但再次不要忘记在AppGroups部分中为所有具有共享数据的应用程序添加组标识符。Capabilities

于 2016-08-04T08:12:33.857 回答