In-App Purchase / On-Demand Resources - xcode

Using on-demand resources in conjuction with iOS in-app purchases is understandable when resources are included with the application. But how do I add additional in-app purchases after the application is on the store? I'm not referring to the process of creating a new in-app purchase in iTunesConnect.
I'm trying to understand if I create a target for a new in-app purchase on the original app and upload the target to the app store if that data will be available for use as an in-app purchase. The WWDC videos indicate there two ways to host in-app purchases: on-demand resources and hosted content. Is the process for uploading the same for both?

There are several ways you could do this.
1) You could use the SKProductRequest to check for some programatically generated product identifiers (ex: com.company.app.inappItem1, ''2, ''3). The response will include the products you've actually defined in itunes connect. Usually though your app will have to do something with those purchases so you will need to know about all the available products ahead of time anyways. I guess you don't necessarily need to expose them all immediately.
2) You expose a web service somewhere (could just be a website that lists the product id's) that could tell your application what the currently available products ids are. Your application could then check with your backend for the list of product ids to use in the SKProductRequest.
In either case you need to keep in mind that you will probably update your app with new functionality at some time. Old versions of the app may not be able to handle your newer data assets, so you will need to handle this somehow.
You will need to resubmit your app to the store if your in app purchase requires new code to work. If it just a data asset they are buying (not executable code), however, the in app purchase can trigger a download to get that data.

Related

How to handle in app purchases with Dynamic Products

We have scenario where user needs to pay for every videos that are uploaded in backend/admin.
To achieve this we have to use Non-Consumable product by default but the limitation is to have the product created manually on appstore/playstore.
Consumable
Provide different types of consumables, such as lives or gems used to further progress in a game, boosts in a dating app to increase profile visibility, or digital tips for creators within a social media app. Consumable in‑app purchases are depleted as they’re used and can be purchased again. They’re frequently offered in apps and games that use the freemium business model.
Non-consumable
Provide non-consumable, premium features that are purchased once and don’t expire. Examples include additional filters in a photo app, extra brushes in an illustration app, or cosmetic items in a game. Non-consumable in-app purchases can offer Family Sharing.
My question is, according to business need we have to choose the Non-Consumeable product because it gives lifetime access to the item, but on appstore we have to create consumable product because it allows you to purchase again. i am confuse between consumable or non-consumable with the business requirement.
Pricing of the videos are same 25$
First of all, Non-consumable purchased once is based on AppleID, which means if you have multi-user and use same AppleID, it will restore automatically without buying again. In other words, it may become a risk to your business model. (Underground economy may use one AppleID to buy all movies and share the AppleID at a good price)
For your case, you may implement your requirements with followings steps:
Use Consumable product to buy for some coins(your server managed)
When user buy movie, consume their coins and provide movies
Your movies should be related with your app accounts instead of AppleID, so your server should sync the movies with app accounts
You may also use Consumable product to buy movies directly(description maybe like "25$ movies"), but it maybe contains an audit risk, for Apple may reject with reason "Using common product for purchase and product description is not detailed enough"

How to work with Xamarin.Forms cross-platform subscription when using in-app billing?

I am developing Xamarin.Forms application which will be used for Android and iOS. It will have access to full functionality with a paid subscription.
I researched about subscriptions policy for Play Market and App Store and they require to use their in-app billing if an application gives access to some of its functionality only with a subscription.
But if, for example, user buys the subscription in Android app and then wants to use iOS app - what is the best way to handle this? Since subscriptions are created separately on Play Market and App Store side they need to be somehow synced?
That's probably a problem that was solved a ton of times, but I can't find how to do it
This is explicitly allowed on the platforms, e.g., here's an excerpt from Apple's App Review Guidelines:
3.1.3(b) Multiplatform Services: Apps that operate across multiple platforms may allow users to access content, subscriptions, or
features they have acquired in your app on other platforms or your web
site, including consumable items in multi-platform games, provided
those items are also available as in-app purchases within the app.
As to how to do this: Basically you have to have user authentication and a backend that ties a subscription status to a user ID. Also, the backend needs to keep the subscription status up to date by refreshing the subscriptions with the stores (Apple App Store, Google Play Store).
(If you weren't using Xamarin, I'd recommend using RevenueCat for this (disclaimer: I work there), but we don't have a Xamarin SDK so I don't think
that that's a possibility)

How are collections used in the Android Management API - Managed Play Store?

Within the Android Management API - Managed Play Store, there are collections which can contain specific applications. How are these collections supposed to be used? I felt like the documentation was lacking in this area. I am trying to figure out how these collections work in comparison to putting applications into a policy. With a managed device, is it expected that these collections show up in the device's Play Store?
The Organize apps page lets IT admins organize apps into collections (also called clusters). For example, an IT admin can create an Essentials collection for frequently used apps or an Expenses collection for apps related to tracking expenses, logging travel, etc. Collections are displayed in the Play Store homepage on user's devices.
On user's devices, the Play Store app only displays apps from a collection that are available for the user (or device), which means that if an app is not included in your policy, it will not appear on the user’s device
To integrate IFrame into your console please check this (documentation)[https://developers.google.com/android/management/apps#add_the_iframe_to_your_console]
I try to explain it better:
Firstly, set your playstoremode to WHITELIST
Then, in your policy include all the apps as AVAILABLE or FORCE_INSTALLED which you selected in your cluster (collections)

Android and iOS billing for multi-platform saas

Just wondering if someone can clear this up for me as its kind of a grey area and not sure what to do.
I have a website that is split into frontend and api and has a subscription service provided by stripe on the api. I am now making apps in ionic for both apple and google stores but Im unsure of how the payments will work on the platforms, ideally i would like to just stick to using stripe but Ive been reading about both stores and this is where I need guidance.
From what I have read it seems to be that I have to use google play billing and apples alternative. Do I have to use these for the apps going into their respective stores or can I continue to use stripe within the apps? As i see it its a multi platform saas. So why cant I just send the card info to my api for charging?(I know theres alot of security involved and its not as trivial as I make it out to be)
Ive been reading conflicting statements from multiple sites and Im just not sure which is correct and the docs on google play billing make no reference to this. Its a multiplatform service so can I just send on the card details to my api
But what I have found is that apple have this
3.1.3(b) Multiplatform Services: Apps that operate across multiple platforms may allow users to access content, subscriptions, or features they have acquired elsewhere, including consumable items in multi-platform games, provided those items are also available as in-app purchases within the app. You must not directly or indirectly target iOS users to use a purchasing method other than in-app purchase, and your general communications about other purchasing methods must not discourage use of in-app purchase.
Which to me states that I have to use Apple Pay and make no reference to my other payment methods for fear of being refused from the store.
I can't comment for Apple. For Google Play the best place to answer this sort of question is the Developer policy center. In the Monetization and Ads section it says
Developers offering products within another category of app downloaded on Google Play must use Google Play In-app Billing as the method of payment, except for the following cases:
Payment is solely for physical products
Payment is for digital content that may be consumed outside of the app itself (e.g. songs that can be played on other music players).
You should read all of the linked page and decide what category the stuff you are selling falls into.

Instant payments options in Android and iOS app

I have payoneer account and i'd like to receive payments from app into this account.
Payments are not for physical goods. They are more like app content-unblockers.
Let's focus on Android and Google Play distribution case.
I suppose, payoneer is not designed for processing quick small payments, right?
I need these:
App should be able to set price according to misc factors.
Payments should be instant without credit card entering - i guess it called "Payments from Google Wallet". E.g. if i (app user) have google account and i have payment method in Google Play, then i do not need to enter my credit card number again.
Payments should be possible independently of user location (country)
So, can I use, say, Braintree to process payments with those requirements?
Will it violate any kind of Google Play policies (the fact, that i'm processing payments not through Google)?
The same questions about iOS
For Android : You can use third party payment seamless/non-seamless as long as their sdk supports Android platform. Google doesn't stop you from choosing any payment service.
For iOS : : It's million dollar question. Always refer to latest app store review guidelines https://developer.apple.com/app-store/review/guidelines/#purchasing-currencies
You can use third party payment gateway in iOS if you are selling physical goods/services outside of the app. For any in-app purchases you must use IAP.
For any in-app purchases if you use other purhasing mechanisms your app will be rejected.
Refer to section 3.1.1
If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than IAP.

Resources