首页 文章

使用In App Purchase将现有付费应用转换为免费版

提问于
浏览
20

我已经在App Store上拥有付费应用的用户 . 我想将应用转换为具有可解锁功能的免费应用 . 有没有办法将现有用户推送到这个新的免费版本,允许付费"upgrade"所以现有用户是 treated as if they've already paid for this upgrade? 或者,正如我所期望的那样,我们必须在应用程序开发向前推进时 - 而不是通过强迫他们激怒现有客户再次购买?

我对这个问题有很多权威的答案,因为Apple今天才开始允许在免费应用程序中支持应用程序内购买......

5 回答

  • 2

    一种可能的解决方案可能是将代码放入付费应用程序的新更新中,该更新将翻转您用于识别付费客户的任何交换机(无论是在 property 列表中还是其他形式) . 如果您为现有付费客户提供足够的升级时间,则应将其标记为已付款 . 然后,将您的付费版本设为免费/付费升级版本,并从商店中删除现有的“精简版”版本 . 新客户必须使用应用内购买来解锁完整版本,但现有客户将被确认为已付款 .

    这样做的一个问题是如何让所有现有客户升级到中间版本,以便及时翻转“付费”交换机,将应用程序迁移到免费/付费升级模型 .

  • 5

    是否有一些方法可以判断您的应用程序之前是否已经运行过? (比如你在退出时写的设置,创建的数据文件,首次运行的日期戳?)

    如果是这样,您可以将代码放入升级中,如:

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (nil == [defaults objectForKey:@"app_v2_has_been_run"]) {
        if (nil == [defaults objectForKey:@"some_key_v1_makes"] {
             // they never had v1 of your app
        } else {
             // they had v1 of your app, so unlock some stuff for them
        }
        [defaults setObject:[NSDate date] forKey:@"app_v2_has_been_run"]; // or whatever
    }
    
  • 5

    您不应该需要两个单独的代码库 - 使用conditional compilation并构建两个目标 .

  • 1

    对我来说,维护两个单独的代码库不是一个好的解决方案,因为你需要维持2个应用程序购买(更糟糕的是在应用程序购买服务器),可能是2个游戏中心,并分开你的下载(等等因为可能有些新用户会直接购买付费应用 .

    但是要将付费应用程序更改为免费应用程序,我没有办法做到这一点,主要原因是如果你升级你的设备,所以清理它,你将没有东西可以得到第一个用户免费的应用程序支付它,并真正生气的用户 .

    最好的方法是能够让苹果数据库知道用户何时购买应用程序或类似的东西 . 如果有人知道这样做的技巧,我会爱他分享它;)

  • 2

    最强大的解决方案是进行收据验证 . 如果您没有应用程序正在与之通信的服务器,则可以在OpenSSL的帮助下在设备上执行此操作 . (有关详细信息,请检查收据验证中的WWDC视频 . )关键点是收据具有一个属性,告诉您用户最初购买应用的版本 . 根据这些信息,您可以为现有客户解锁功能 .

相关问题