How to move user in-app purchase information to other app? - iphone

My apps are currently in the App Store.
Later I will remove this app from the AppStore and submit a new app.
So, the old app in-app purcharse user information must be moved to the new app.
What is the best way? Is there a safe way?
How to write the best code? Is there sample code?

There is no official, supported way of doing this. That is, your new app will never be able to "restore purchases" as you can with the old one.
I suppose you could have a button (or URL scheme) in your old app that sent data to the new one (using a URL scheme). Of course that could be faked unless you're careful.
You also want to be careful about what data you transfer. Apple may reject if you're circumventing an IAP in the new app, for example.

Related

How to use another Apple ID to submit an already-online iOS app to the App Store?

My company had outsourced an iOS app to another company, and they published the app on the App Store using their Apple ID. The app have been available for download for a few months and has a number of users. Now my company developed a slightly newer version of the app and would like to distribute the app using our own Apple ID. What's the correct way to do it? The major concerns we have are:
Should we submit the newer version using our ID before or after we take the old app down from the App Store. Would it happen that the newer app get rejected because Apple feel the two apps are too similar? (Actually they are quite similar, for that the update is slim.)
Is there a graceful way to notify the currently online app's users that they should switch to the newer app? And How to coordinate it, since the newer app may take a certain amount of time to get approved.
Thanks.
There are some different scenarios here, I am going to try to address some of them to see which one helps you the most:
1-)You have a current application that contains no use of push notification and no use of in app purchase. This is the easiest one. Basically, It does not matter what version the user has had before. You can remove the old one from the previous developer account and add it to the new developer account. By completely removing the previous application (not just from the app store listing, but from the developer account), you can reuse the bundle ID. When the user reinstall the app, the user will be able to replace the old application with the new application (note that the new application will not appear on the user's update list).
2-)You have push notification. Here, you will have to keep the old application if you wish to maintain the push notification certificates, so, the new application will have to use a new bundle ID, which means that the app will appear on the user as a new application, and the user will be able to have both app simultaneously.
3-)You have in app purchase and subscriptions. You will need to remove the old in app purchase entries from the old developer account, and add it to the new account (if you wish to reuse the product id, if not, you will have to create it either way).
I am not sure what kind of measure you need to take if you are using iCloud and/or other services. Best course of action is to contact Apple developer support. They will give you some guidance on what to do with your specific case. Also, when submitting, make sure to point to the reviewer that you are trying to move the application from one company to another. I think they can access review notes from the review to the previous submission(instead of reviewing it as a new app), and speed up the process.
Edit: You can not transfer apps between companies using iTunes connect. More information here: link

Is there any way to add pre-existing users to the "paid list" for new iOS in-app purchases?

I am in a tricky spot and I am trying to figure out the best way to proceed. I released an app a few months ago and have charged a few hundred people $.99 for it. I am now interested in making the app free with in-app purchases. How can I make it so that whoever has already paid for it, doesn't need to pay again? Can I programmatically "white list" them? And then just charge future users?
I have integrated with Game Center so I was toying around with the idea of checking for users on the leader boards already?
I can't make a separate app, I just was wondering if there was any API or route I could use to achieve this.
Thanks!
Here's a potential strategy:
1) Make your in-app purchase essentially a toggle that enables access to some features or resources in your app.
2) Change the name or location of some key file. The database would be easiest (if you have one), but also look for user defaults or other saved files.
3) On launch of your new version, check to see if that older thing exists - if so, save a marker key into the keychain for the app (and if you renamed the database move the old version to the new name/location!). The keychain is a nice place to put this as it persists between app installs. I'm not sure if iCloud backs it up though.
4) Now when checking for a feature look for that marker key in the keychain in addition to asking Storekit if they have purchased the items you want unlocked for them.
5) In the UI block purchase and indicate they have already paid.
That's about the best you can do, they may have deleted the app altogether and in that case there's nothing you can do to help them... you may want to also make some kind of one-time use code that could unlock the feature in the same way (except that the code would be verified by your app against your server so that it could only be used when you allowed it), that way that you could help out individuals contacting you saying they had purchased the app before. There's no way to verify that but it's just good customer service to let them have the upgrade anyway.

Created a new iOS App. Cannot update old one. Will Apple accept an update that just tells users to download the new one?

The app has a different bundle identifier and the old app is not enable for push notifications. We want to update the old app with one screen and a button that sends the users to the app store to download the new app. Will Apple even approve that? Any ideas on a better way to do it?
If it has a different bundle id it's probably possible. I've seen many apps doing this. For example free apps! They seduce the users with new features to buy the full app. So it wont be a problem to connect both apps via link to itunes. If you use Push N be sure to set up all correctly. My idea is to set the old one to a free app and connect them. And why dont you make the budles the same? Like a normal update?
We had to do something similar when an App we developed needed to change from our account to our customer's account (to comply with their internal brand standards). We updated the old app to say "We've Moved." and had a link to the itms: for the new version. We did let the user dismiss the notice and keep using the old version, though.
I'm sure they'll approve it if you let the user put off upgrading. Maybe not if you force them to upgrade as you suggested in your question.

In App Purchase Tab Cannot possible to access

I have developed iphone app with working In App Purchase. Now I want to release new version of the app with new price for in App Purchase. But, Whenever I tapped on iTunesConnect -> Manage Your Applications-> My App -> Manage In App Purchase, I found this ------"java.lang.IllegalStateException: Seventeen".
Can anybody tell me, how to tackle with this issue?
The solution is that there's no solution for that. It is a bug on Apple's side. This iTunesConnect site stinks in all possible ways. I recommend you to fill a feature request asking Apple to provide a software application we can use to manage our apps and in-apps that are already created. Do it at http://bugreport.apple.com. I already did that and the bigger the number of people asking for it, more likely Apple will create that.

iPhone/iPad - Need to offer a free upgrade for Customers who brought an old app

We have an app on the app store that we need to remove. As such we have a new version to upload as a completely new app with a new app SKU and Id but we want to offer a free upgrade for those who have purchased the original version.
Is there a way to do this?
But if you're willing to give new App for free for everybody who's got an old one why do you create a new application and not just update old one? You can change anything you want about app except SKU# as I understand. Do you have anything tied to old SKU# or you have other reasons to create a new app?
I agree with the other posters. Apple does not have a mechanism to do this.
What you can do:
-make a black and white or very washed out icon for the old app
- change the app description to say that this is an old version / no longer supported / deprecated and to search for the new version.
- Make sure the new app title show something like NEW, 2.0 or some signifier to draw attention
I have not heard or seen anything about it. Only thing that comes to my mind is to give a promotion code. This of course opens up some other questions:
How to communicate that to your customers?
How to secure that it is not explored by users who have not bought the first app?
Don't have any good answers to that (time limited offer?) but maybe it could lead you to some new ideas.
Good luck!
Unfortunately there's no real way to do this. Apple intentionally keeps information about the users of your old app private.
Well, there's one way I can think of, but it requires some forethought (and I'm not certain it would be ok by Apple) and it would cost you a bit: When your old app runs it contacts a server of yours with the device's UDID, which you save on the server. Then you show an alert in the old app that tells existing users to contact you via email with their UDID (you could make it easy on the user by putting together the email in-app with the UDID in the subject or body). You then send a gift of the new app (via iTunes) to every user that emailed you that way.
You'd take a 30% hit (Apple's cut) but the rest of the gift price would end up back in your bank account. People who pirated the app would get the offer, too, and there's no way you could tell a pirating user from a valid user. But it would more-or-less work.