【问题标题】:Copying data from a free iOS version to a full version of my app?将数据从免费 iOS 版本复制到我的应用程序的完整版本?
【发布时间】:2012-03-18 08:50:10
【问题描述】:

完整版的 iOS 应用程序如何访问/复制免费版的数据库/设置?

我正在考虑提供我的应用程序的免费版本,但我看不到购买完整版的人如何从我的免费版本中访问数据?

【问题讨论】:

    标签: iphone objective-c ios cocoa-touch


    【解决方案1】:

    iOS 上的所有应用都是隔离的。它们作为不同的 iOS 系统用户安装。一位用户无权访问另一位用户的文件。在过去,解决此问题的一种常见方法是enable iTunes file sharing。并告诉用户手动复制文件。

    您最好使用免费增值模式来销售您的应用。使应用免费,并通过应用内购买解锁额外功能。这样,您的文件、文档、设置就不需要转移到专业版。解锁后应用本身成为专业版。

    这是来自 Apple 的指南:https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction/Introduction.html(虽然不是很直观)。

    这里的演练:http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/ 非常有帮助。

    最后但同样重要的是,请注意应用内购买是可破解的。所以请阅读:How to detect "IAP crackers"?Verifying In App Purchase Receipt from Clienthttps://stackoverflow.com/questions/4715414/apple-in-app-purchase-verify-receiptverify in app purchaseIn App Purchase Receipt verification within app

    请注意,您应该设置一个服务器来验证 iap 收据。虽然它可以从应用程序中实现,但它并不安全。据我记得,你可以在 iOS 模拟器 v5.0 中通过 StoreKit 测试应用内购买,那应该是 Xcode 4.2。在此之前,只能在设备上进行测试。

    @Dominik Hadl 提到您可以使用服务器来同步文件。操作通常很复杂。如果您更喜欢这个想法,您可以选择使用custom url scheme 从另一个应用程序启动一个应用程序以简化操作。请参阅以下步骤:

    1. 用户在免费应用中按“开始同步”以将文件上传到您的服务器
    2. 服务器将文件ID返回给免费应用
    3. 用户按下“启动 Pro 应用程序并下载我的文件”,这将导致一个自定义 url 方案来启动您的 Pro 版本(必须先安装),文件 ID
    4. 专业版使用文件 ID 直接下载该文件

    【讨论】:

    • ...如果您更喜欢通过服务器传输文件的想法... url scheme...您是什么意思/这背后的基本思想是什么?
    • @Jules 我已经澄清了编辑答案中的步骤。基本思想是使用自定义 url 方案来启动应用程序并简化文件传输。
    • 我见过使用 http 进行备份的应用程序,该应用程序实际上是一个 http 服务器,然后使用 pc 或 mac 来上传或下载文件。免费版和完整版不能通过 http 进行通信吗?虽然,我猜其中一个应用程序必须进入暂停状态。对此有何建议?
    • 好吧,确保您的两个应用程序可以通过 HTTP 进行通信。但问题是你不能在一台设备上同时运行两个程序。因此,除了服务器部分,您需要让一个应用程序知道要上传什么,而另一个应用程序知道要下载什么。这就是为什么我建议使用自定义 url 方案进行应用间通信。
    【解决方案2】:

    我认为您可以做到这一点的唯一方法是将数据与某些服务器同步,注册设备并将数据同步回完整版本。

    因为所有 iOS 应用程序都是沙盒化的,所以它们无法访问任何其他应用程序数据(除非您有越狱的 iOS)。

    【讨论】:

      【解决方案3】:

      由于多个应用程序可以共享同一个 iCloud 容器,我想说现在的最佳做法是“简单地”将数据存储在 iCloud 中。

      (我将“简单”放在引号下,因为很容易将数据放入 iCloud 并取出;但如果您真的想要进行同步,您可能需要做的不仅仅是“我“将从 iCloud 加载并保存到 iCloud”,以便为用户提供最佳体验。)

      【讨论】:

        猜你喜欢
        • 2014-06-19
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2016-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多