Transition an existing paid for app to free version with In App Purchase

前端 未结 5 1071
孤街浪徒
孤街浪徒 2020-12-02 12:32

I have existing users of a paid for app on the App Store. I\'d like to transition the app to a free app with unlock-able features. Is there a way to roll my existing users i

相关标签:
5条回答
  • 2020-12-02 12:57

    One possible solution might be to place code in a new update of your paid application that would flip whatever switch you'd use to identify paid customers (be it in a property list or other form). If you give your existing paid customers enough time to upgrade, they should be marked as having paid. Then, make your paid version the free / paid upgrade version and remove your existing "Lite" version from the store. New customers will have to use the in-app purchase to unlock the full version, but existing customers will be acknowledged as having already paid.

    A problem with this is how to get all of your existing customers to upgrade to the intermediate version that flips the "paid" switch in time to migrate the application to the free / paid upgrade model.

    0 讨论(0)
  • 2020-12-02 13:07

    You shouldn't need two separate code bases - use conditional compilation and build two targets.

    0 讨论(0)
  • 2020-12-02 13:15

    For me, maintain two separate code bases won't be a good solution, because you will need to maintain 2 in app purchase (worse with in app purchase with a server), maybe 2 game center, and separate your download (and so less visible) because maybe some new user will directly buy the pay app.

    But to change pay app to free app, I have no good way to do it, for the main reason if you upgrade your device, and so clean it, you won't have something to don't get free app to the first users to pay for it, and to have really angry users.

    The best way will be to be able to ask an apple database to know when the user buy the application or something like that. If someone know a tricks to do that, I will love he shares it ;)

    0 讨论(0)
  • 2020-12-02 13:20

    The most robust solution is to do receipt validation. If you do not have a server that your app is communicating with, you can do it on the device with the help of OpenSSL. (Check the WWDC videos on receipt validation for details.) The key point is that the receipt has an attribute that tells you at which version the user has originally purchased your app. Based on this information you can then unlock features for existing customers.

    0 讨论(0)
  • 2020-12-02 13:22

    is there's some way you can tell if your app has been run before? (like settings you write on exit, data files created, date stamp of first run?)

    if so, you could put code in your upgrade like:

    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
    }
    
    0 讨论(0)
提交回复
热议问题