Question: If I offer an in-app Non-consumable purchase (say a book, or a song) within my app and then 2-3 months after it has been released I realize that there is something wrong with my digital content, Can I do an update of the digital content? So if I had a digital article as an in-app purchases for $1.99 and sold 1,000 copies, then I realized that I have a spelling error on page 3. Would I be able to upload an updated article that would go out to all the people who bought the article and prevent people from downloading the old copy? If not, how is this situation handled in the real world? I have looked in apples doc, but cannot find an answer. 

Edit: Assume I am using the new io6 feature of hosting the content through apple.

Answer: 
**About AppStore Hosted Content**

I have not tried, but browsing inside Apple doc, I've found [this](https://developer.apple.com/library/ios/#documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/13_ManagingIn-AppPurchases/ManagingIn-AppPurchases.html#//apple_ref/doc/uid/TP40011225-CH4-SW37) which confirms that you can upload multiple versions of a digital content hosted by Apple.

> 
> "You can have multiple versions of hosted content, but each one needs to be approved by Apple before it can be purchased by users."
> 
> 
> 

Also, you can check [this](http://www.absoluteripple.com/1/post/2013/01/apple-in-app-purchase-creating-app-store-hosted-content.html) and [this](http://www.techotopia.com/index.php/Configuring_and_Creating_App_Store_Hosted_Content_for_iOS_6_In-App_Purchases) tutorials, that shows that you have to specify the `Content Version` and `IAP ProductIdentifier` in the `ContentInfo.plist` when you create an App Store Hosted Content with Xcode.

![IAPHostedContentPlist](https://i.stack.imgur.com/nRSSM.png)

**How to notify the users that content has changed**

This depends of how you implement your purchase system, the content delivery, and how you keep track of the "state of your purchased products". Usually we keep track of the version of the purchased products, thats means, we save the product\_id with the content version when the purchased content is downloaded. We can save this data in files or inside a DB locally. Also, you don't have to worry about non downloaded (and non purchased) products, those do not need an update. When you update your in-app store with the last information of your available products (via update button, or app launch, or whatever you implemented) you should compare the last content versions with those you have downloaded, then you can notify the user that an update of his purchased product is available. Finally, you have to enable the download for that product.
For the above problem:
please have a look at the following urls for separate things:

**Following link is the link to the SKDownload API:**
<http://developer.apple.com/library/ios/#documentation/StoreKit/Reference/SKDownload_Ref/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011851>

**Following link is the link to a great post which explains the working of SKDownload API:**
[How to download In-App hosted content?](https://stackoverflow.com/questions/12994550/how-to-download-in-app-hosted-content)

Now in your position we can follow the following steps:

1. Push another package on the Apple Account which is to be hosted (with corrections).
2. Push an update the app on the App store with the following changes: (**This handles any new download from the new users.**)
 a. Update your code of the InAppPurchase with the new identifier of the file
3. Now we have to handle the old users, we can consider the following two approaches:
 a. We can show the user a **restore** button, by tapping which the user would be downloading the article again.

b. In iOS for things to go automatically to all existing users we do have a mechanism of push notifications, on the receiving of this the user would be triggering the event to again download the data from the Apple Hosting.