How to release app that replaces several old apps for all users? - iphone

I am developing several apps for AppStore, with different bundle IDs, but similar logic. Now I am working on a new concept, which covers all the logic from those apps into one common project. Hence, I would like to prepare a new app, that is intended to replace all the old apps. How can I ensure that?
To be clear, I want all the users to install the new app, run it, so that it can transfer data and functionality from old apps installed on user's device. How can I do that, so that all data and functionality will be kept depending on which old apps had each user installed, and Apple will be OK with such a change and behavior?

This is not possible, you will have to replace all the old apps with new once. You can't update the app bundle ID in a new version.

Related

Apple iphone app transfer or app replacement

We have built an inhouse version of an iPhone application that is to replace another that is already available from another developer.
I was wondering if you think we can use "app transfer" from the previous developer and in turn replace it with our own app. Previous developer has agreed for the transfer (ofcouse excluding his code). Therefore our question is if we can transfer his app to our development name and then replace the app with our own. Our goal is that the current users of this app will receive ours as an update to what they already have and not as a different app.
In short, transfer and replace so users get our app as an update.
Note:
Please note that as we were unaware of this "transfer" we submitted yesterday our version of the app with a slightly different name. Should we cancel submition (as it is still pending for validation) and follow some route you may suggest in your replies, or stay as it is now?
If you keep the Appidentifier the same between the original version and the new version you will submit, this should work as expected. (But nobody has much know-ho of the new "transfer" option yet)
So, you process would be as follows:
Hand the old developer your TeamID and your Apple ID
The old developer transfers the current App over to your team
Once done (no clue how long that takes), you have the app in your itunes connect
Now you add a new version of the App to itunes connect and mark it as ready to upload
You upload your newly coded app that meets these criteria:
Application Bundle Identifier is the same as with the App you're updating
Your new App is signed with a correct certifcate/provisioning profile (just correct for the appid, doesn't have to be the same one)
The BundelVersion and BundleShortVersionString are at higher than those of the already submitted applications.
So basically, it will work just like a regular update.

How to update iOS app with exception of a file

I'm making my first iOS app. And I have a question.In my app I want to save the current state of the app: levels completed, score reached, money, in-App purchases, etc. in a Settings.plist. The problem is, how can I place this plist so that if the user updates the app, he/she not to lose these settings. I read about The app sandbox, but I don't understand
how it works, and how can I manage that from Xcode.
You should store these settings in the NSUserDefaults. They are kept when new app versions are installed, so you won't have any problems.
Two points:
a) When you update your app after its in the app store by submitting a new version of the same app the files created by the old version will not be lost. So you can store whatever you like in the app's Document or Library directories and expect it to still be there after an update. The Library/Caches directory will not be backed up or restored by iTunes so don't put anything there that you can't re-create. If you submit a different version of the app (not an update but a new app, so you have two separate apps in the app store, perhaps free and paid) there is no way that I know of for the new version to get to the files that the first version created.
b) It's easy for the user to read, delete, or change whatever files you create in Documents/ or Library/. It can be done with an app on his/her Mac such as iExplorer (downloadable from macroplant.com). So be aware that if the file is human-readable, which a .plist file is, the user can change it to improve his/her score, get more consumables, or whatever. You can prevent that by encrypting the data, or somehow obscuring the meaning, or by some kind of checksum scheme so you can at least detect that it was changed. Any of those measures involve complications of course and may not be worth the trouble.
BTW... if you're developing an app that uses data files iExplorer is a great debugging tool. I have no vested interest in it except that I've learned how to use it and want it to continue to be supported. There are probably other apps that do the same thing but this one works great and is fast and easy to use.

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

Convert released iPhone/iPad app to Universal

I have an app that has been released on the app store with separate versions for iPhone and iPad. Now I wish to convert the app to a Universal version but I have an issue which I'm not sure can be resolved.
Both versions of the app use a different bundle identifier (for example com.mycompany.app.iphone and com.mycompany.app.ipad). I want the new (universal) version to overwrite either of the old versions when downloaded from the app store. To complicate matters further, core data stored for that app needs to be retained.
I'm not sure its possible and perhaps the protocol is to release the universal version under a new bundle identifier and have users start again but if a workaround is available it would be really helpful.
your options:
1: Update both your iPhone and iPad apps with this universal binary (with respective bundleIDs and app names)
2: Create a way to sync data between apps by creating a web service. one of the apps I have used extensively - Gas Cubby, does this for transferring data from its free app to paid app. You could implement it in a similar way
3: Nuke one of the apps, update the other app with the universal binary
Option 1 is the easiest. 2 will take longer. 3 is dirty.
(will update this answer with more options if I come across any)
As far as I know and from what I've read before, you can't change the bundle identifier of an app published in the app store.
Due to the sandboxing, accessing the data of your old app from the new app is also impossible.
There are several ways you could go about solving this issue, depending on which one suits you best. You could create a new universal app, and abandon the old ones hoping that the users change their preferences, or you could be pushing the same update to both applications, essentially, having the identical app under two different names. I'm not sure what are Apple's stances on the second option, but it will be a hassle either way. Good luck!

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.