New iOS target as an in app purchase - ios

Is it possible technically to provide a 'Today Extension' as an in app purchase?. As far as i can see, soon after you install the main target, the extension target is also getting deployed. I dont see a way to limit that. My idea is to provide one extension for free and other two remaining extensions as in app purchase. Since each extension lives as a seperate target in the xcode, am not sure how to proceed. Any insight will be really helpful
Regards,
Kesava

Because extensions must be delivered with the app and you will need to include all 3 extensions when you build and submit your app + extensions to Apple, I think your best option is to provide all 3, but in the two "premium" extensions, check if the user has made the in-app purchase. If not, provide an overlay that explains that the extension requires an in-app purchase and provide a button to take them to the app to make the purchase.
You might even be able to request the in-app purchase from within the extension, if that's an experience you think would be good.

Related

How does downloadable content work in a react-native app for iOS?

I'm making a simple puzzle game using react-native. I intend to offer it for free while providing paid Downloadable Content (DLC) that adds more puzzles. Puzzles are described using JSON, and the base game will bundle a .json file with the free content.
How does DLC work? I know this is a very broad question. If you can point me to a primer that explains the basic ecosystem, without requiring expertise in C# or Swift, that is a good start. (I'm only targeting iOS right now.)
Here are some examples of the kind of information I'm looking for:
is a DLC pack technically a separate app that I must create & publish through the App Store?
what is actually downloaded to the device when a user purchases DLC?
is the base app somehow notified that DLC has been downloaded?
does DLC just add files to the base app bundle, or does it exist as a separate bundle?
how can I tell, from within the app, whether a piece of DLC has been downloaded?
do I need to maintain records indicating which users have paid for DLC, or does the App Store handle that through the user's AppleID?
I am aware that one strategy is to bundle all free and paid content with the base app, "unlocking" paid content if and when the user buys. I think that's fine, but I don't know what "unlocking" could look like at the implementation level.
is a DLC pack technically a separate app that I must create & publish
through the App Store?
No. It's called an In App Purchase (IAP) and you must create and publish it thru AppStore Connect (aka iTunes Connect).
what is actually downloaded to the device when
a user purchases DLC?
A receipt for purchase and optionally more content
is the base app somehow notified that DLC has
been downloaded?
Yes.
All other questions could be answered by reading the In App Purchase Programming guide (still more or less valid: https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html)

iOS Switching from paid to free app, how does one know who previously purchased the app?

I have a paid app that was released on iOS 4. It hasn't been updated and I'm now reworking it to work with iOS 10. Since in app purchasing was not a thing, I made a free (lite) and paid version of the app. I would like to update the paid version to iOS 10 and change it from paid to free with ads and an in app purchase to remove ads.
I tried researching various methods and I have not found a fool proof way or evidence that one will work in all cases. The two most prevelant methods I found:
Use an existing UserDefaults key value to determine if they opened the old app and then grant them no ads in the new version.
I don't think this method will work, as if the app was uninstalled or the user redownloads it after the update they would not have that value.
I believe iOS 7 offered receipt checking. Use receipt checking to determine if the user has paid for the app and check if the date is before the new version date.
I'm not sure if this would work either. I saw in the documentation to verify locally. Would everything I need exist if the app was an iOS 4 app originally? Would this work for users who had the app through a promo code? What if they don't have an internet connection at the time they open the app? I had trouble finding sample code for this option to test.
How would I go about doing this? Are any of the methods above the only way or are there others?
Out of all the resources I found on this subject, checking the receipt seems to be your only feasible choice. If you have an account where you purchased your app, you can run the new version of the app via Xcode with that account and see if the receipt validation gives you the expected information. Though installing the app via Xcode may alter the receipt that the account has, you may want to check on that.
NSUserDefaults option could work if you were setting any value to NSUserDefaults on the iOS 4 version.

Why iTunes Connect reject my app?

I got the following error message from iTunes Connect.
Performance - 2.3.10
We noticed that your app or its metadata includes irrelevant third-party platform information.
Specifically, your app icon still contains imagery of an Android device.
Referencing third-party platforms in your app or its metadata is not permitted on the App Store unless there is specific interactive functionality.
We've attached screenshot(s) for your reference.
Next Steps
Please remove all instances of this information from your app and its metadata, including the app description, What's New info, previews, and screenshots.
Since your iTunes Connect status is Rejected, a new binary will be required. Make the desired metadata changes when you upload the new binary.
NOTE: Please be sure to make any metadata changes to all app localizations by selecting each specific localization and making appropriate changes.
But I didn't modify anything since previous version.
So, I have no idea what is wrong of my app. I can't believe icons have problems.
Please let me know how can I fix the problem?
Apple keeps improving review rules, so its not necessary that if review passed last time it should also pass this time.
It seems there are 2 problems.
1)Problem with app icon
2)Reference to third party library.

inapp purchase inside extensions in iOS 8

Would it be possible to add inapp purchase inside extensions in iOS 8?
For example, a custom keyboard may have free and pro versions based on inapp purchase.
Thanks a lot in advance.
The custom keyboard requires a container app anyhow, it would probably be a good idea to do it there. You could likely have UI on your keyboard interface to link to the app via openURL: directing users on how to purchase the "Pro" version. With that said, you can tell which APIs are not accessible if they are annotated with the NS_EXTENSION_UNAVAILABLE_IOS macro. You can see this on [UIApplication sharedApplication] as an example. If none of the StoreKit APIs you need to perform the purchase are marked as unavailable, it's likely that you'll be able to get it done within the extension.

App with iAd and App without ad should in different projects?

here is my question, i made an app and put on appstore, but i wish to charge the version without any iAd for 69p ...and the version WITH iad built in for free...
so, should I make two separte projects for each version?
and how do i make the free version with iAd should a pop up alert recommend user to go to appstore buy the ad free version?
is it just a normal UIAlertView with delegate method to call the App Store or open it as UIWeb in browser? how do i implement that?
any suggestions ?thank you very much
You can use compiler flags to wrap around your code so that you can have one source, and create multiple targets from the same project and build multiple apps (with different app identifiers and everything).
However, this causes you do have to manage two different apps in the app store (entering the same meta data twice), and deal with the review process on two different apps.
Also, people might skip over your paid version, whereas they would have installed your free version, and upgraded later.
I recommend that you have one source, one project, one target, and one app in the app store and use in app purchases (IAP) to turn off advertisements.

Resources