Delete an App's data when it is uninstalled in iOS - iphone

I am new to iOS development, Now I am creating an app that will store contact information to address book from the app. (This app will store your friend's contact details like mobile number and email etc. on your address book when he/she installed the same app on their iPhone and accepted you as their friend).
The app contact is differentiated to native contacts by putting a note property as app name.
My question is, When you uninstall/delete the app it clear all data except contacts which are stored by the app itself. So How to delete the contacts too?
App target platform is, iOS 5 & later & xCode version 4.5.2
Thanks

You can't. If your app saves contact to the user's iPhone contacts, there is no way of deleting them when your app gets deleted.

There is no way to detect app deletion. So there is no way to delete your data before deletion. So answer is no.

Related

iOS: iPAD to Univeral App upgrade quandary

I have two versions of my iOS App - FooBarApp for iPAD and FooBarApp for iPhone each with its own Bundle ID (com.foobar.fooBariPad for the iPAD app and com.foobar.fooBar for the Phone App) Both have the same functionality - searching and buying the same products.
I have created a new version of the iPhone FooBarApp which is now a Universal App and can run on both iPhone and iPAD. However I already have a large user base of users who alreadey have the iPAD apps.
I'd like to retire com.foobar.fooBariPad iPAD App, and ask the users to now download the new Universal App version com.foobar.fooBar. To do this I created a new version of com.foobar.fooBariPad, which is a forced update, and which on startup, prompts users to update to the new version of the app. When they accept the hand-coded update button, it redirects them to the appstore to update the App.
Kludgy I know, but I did this because there is no direct way to update the old iPAD app to the new Universal app (as they have different bundle ids)
Unfortunately Apple Rejected this with the message:
"Design Preamble Your app includes an update button or alerts the user to update the app. To avoid user confusion, app version updates
must utilize the iOS built-in update mechanism. ... Next Steps Please remove the update
feature from your app. "
In other words they want this to be a forced upgrade.
We are thinking of just removing the previous iPAD App from the Appstore, but it may cause confusion. Would appreciate any smart solution to this problem, which will prompt users to switch from the old iPAD app to the new Universal App with the least friction. Perhaps push notification is the answer? (but if so then how)?
FOLLOWING onnoweb 's answer below, I got this from a friend who saw the way Dunkin Donut's had implemented this. Just in the messaging (not a tech fix)
Maybe it's a matter of terminology in the foobariPad app?
I've done something similar (EOL-ing one app and asking users to switch to the new one) without any complaint from Apple. We did it by showing an alert to the user saying something like "We are ending support for this app. Please use this new app with the same and better functionality." and then a button that took them to the AppStore if they didn't have the new app installed, or if they did then we did an openURL() to the new app after tapping the button.
Maybe it's not clear to Apple that you're redirecting users to a new and different app rather than a newer version of the app the user is in?

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

iOS - transferring in-apps between apps

I am working on a project that was not initially developed by me and this project is an iphone application with a lot of in-app purchases and these in-app purchases are large images stored inside the app. These images make the app big in size (~ 70 Mb). This app is compatible with iOS 4.x and up.
With the launch of iPhone 5 and iOS 6, the company wants to create a brand new application, just compatible with iOS 6 and leave behind all legacy support of the previous version. This new version will store the in-app purchase images on Apple servers and this will make the app size drop to 3 Mb. But, on the other hand they don't want to abandon those who bought the in-app purchases, they want to create a scheme where users could transfer the purchases from the old version to the new one.
I know this can be accomplished by having a server on our side and setting up an application and a database, but their limited budget right now is prohibiting this. So, is there a way to do that using exclusively the application and iCloud (or whatever on Apple side)?
I was wondering if this could be used to do this. I mean, can I use the key-value store stuff to do this? Or in other words: can two apps have the same com.apple.developer.ubiquity-kvstore-identifier?
thanks.
It's possible to transfer data from one app to another quite easily if your users have both apps installed, however it's not possible to transfer in app purchases from one app to another.
What you'll have to do is update your legacy app to support some kind of action or link to the new app, then open the new app from within the old app with UIApplication openURL: and pass through some meta data about the upgrade.
Then from within the new app your app delegate will receive didFinishLaunchingWithOptions: with the URL used to launch the app, you can then download their purchase.
This functionality is supported by registering URL scheme for you new app, which is an info.plist setting.
A problem you're going to have with the above transfer of purchase meta data between the old app and the new one will be the fact that restoring their purchase will not be possible via StoreKit/Apple (as noted above, transfers are not possible).
You could get around this issue and provide your existing customers with the ability to restore their purchases if you had two in app purchase SKUs for your new app.
One item is the usual item that new customers will need to pay for, the other is identical but $0 for existing customers to 'buy' so they have a purchase registered with StoreKit/Apple for them to restore in the future without the old app.
The new app can conditionally display this $0 option for existing customers if they've upgraded via the method above.

App is "Developer Rejected",but previously downloaded from the App Store, will it work?

I'am wondering what will happen if my App which was previously available on the AppStore and has been downloaded by some users, but now I REJECT MY APP and put it down from the AppStore.
My Question is, Will the previous users who have the app on their devices will work or not???
Yes, every user who downloaded the app will be able to keep using it.
There is no way to pull it from there devices.

Iphone: Application feasibility

I am very new to developing apps on the Iphone (In-fact I am new to application development all together). I would like to know what the feasibility for an idea for a app on the iphone is.
1)The application would allow users to download content (audio or if possible video files) onto the device.
2)Each of these files will need to be purchased before downloading, at a fixed price.
3)The user can then play the downloaded files on the device.
Is such an app possible to be made on the Iphone?
If so can anyone give me pointers on how the payment procedure should be, and how revenue will be shared with apple?
From what you described, that sounds very possible.The users would pay you directly through a credit card for the files.
If you are already a registered apple-Developer, have a look at the InAppPurchase(IAP) ProgrammingGuide in the iOS-Devcenter.
The purchase of any content must be handled through IAP.
This is written in the App Store Review Guidelines, Item 11.2 (Because I'm new, I can't provide a link. Sorry for that)
It is not possible that users pay you directly.