I am working on an app that'll be available to specific customers, after figuring out that this approach does not work, I am switching to pushing it to the public as a free app but give login credentials to specific users. Would that violate any of the subscription rules by android? would the app be taken down if people can't sign up, knowing I will charge for the account personally?
You can do this easily using Firebase Authentication. Here is the documentation for it.
Just connect your app to Firebase, create login screen with Activity and create accounts with the usernames and passwords for your users and give them the credentials.
As for the Google Play billing policies, I believe this violates their rule that you should only get paid through Google Play so they get 30% of the income, however, if it all happens outside of the app, and there are no platforms to get paid through (like PayPal) integrated in the app itself, it shouldn't be a problem as far as I know.
Related
I am fully aware of Google rules regarding in app payments, but I am still not sure if my case pass these rules or it violate them, so I wanted to make sure and see if anyone have a better answer.
Basically I have a website where people register and buy a subscription for a X service, recently I built an Android app to correspond to the service of the website, my Android app shows a message to the users saying that if they want to buy premium subscription they have to go to my website, register and buy it there, the question is does it violate Google rules?
Thank you for any help.
Yes it does.
You are not allowed to hint that users can spend money somewhere else. Its also not allowed to link to external resources where the user can spend money.
Netflix is an example for this.
Netflix users can use the App with the account they created on the website.
Users that create an account from the App are forced to go through in app purchases.
Netflix App is not allowed to hint that users can get it cheaper through the Netflix website.
I am in the process of migrating two separate free/paid apps to an In-App-Purchase based payment model. I have 4000 existing paid users, and so I would need a way to know if they already bought the old paid app, and if so they should have access to the same functionality that newer users who paid via the new in-app-purchase model do.
I could ask existing users to register something like their email, store that on some server and make it possible to use that to validate their purchase if they reinstall the app. But I would ideally want to make the transition seamless for existing users, so I'm wondering if there are any methods that don't require any user interaction?
I was thinking that maybe I can get some kind of UID that is tied to their Google account (they must have one since they bought the paid app on Google Play). Can I for example use Firebase to retrieve such a UID without having to ask the user to sign in? Looking at the guide for Authenticating users with Firebase and Flutter, it seems that it's necessary to call SignInWithGoogle()
to get a UID, which I assume prompts the user to sign in with their Google account and password?
I have considered using the device ID, but that is not really an option since the purchase of an app should be tied to a user and not a specific device which will eventually be replaced.
In my android application I want to let users to authenticate with google or facebook account.
I've implemented sign-in with google already.
I'll try to implement sign-in with facebook soon.
I've read about IAP in android:
https://developer.android.com/google/play/billing/billing_overview
https://droidmentor.com/inapppurchase-subscription/
at least what I understand it is about google account authentication.
So I wonder is it possible to make IAP in android application if the user is authenticated with facebook account ?
I cant find examples or explanations by now.
Any good examples/explanations about IAP with google is also very appreciated because I still don't have a clear vision on IAP.
fyi: In my app user will be able to buy "virtual tickets pack" (e.g.: 10, 15, 20 tickets) and to add them to their profile. and later they will "consume" tickets one by one.
Best Regards
My understanding is that you already have a user system that you are using to provide a Google login to your customers. When you add Facebook login, you'll probably want to match both Google and Facebook logins with your own custom user ID. It's always a good idea to have a custom ID of your own so that you can map it to different types of logins.
When purchasing through Google Play Billing, the purchase gets associated with the user's phone Google account and you can also provide an optional way of associating a purchase with your own user account system. In order to do that, when building the BillingFlowParams, call setAccountId and pass your account's system custom ID.
To provide the best experience persisting purchases during installs or across devices you should also be saving the purchases on your server's database. In order to do that in a secure manner, you will also have to implement server-side receipt validation. If you want to avoid most of these headaches, I recommend you to use a service like RevenueCat.
IAP can only be done through the user's google account, as that is what one needs to use any part of the Play Store. The user's google account is also where the credit card/other payment methods are stored for each user.
In spite of the above, the way users log into your app has nothing to do with them using the IAP system. When a user will choose to use an IAP, the google account data will be provided by the android device/Play Store, not by your app (Off subject:the process is similar on iOS if you ever get to try there).
What your app needs to do, is receive the confirmation of purchase from the IAP sdk and then mark on your server that this particular user has purchased this item. Basically for any purchases (no matter the payment provider) you would usually mark in your DB the following:
what the user has purchased
how much did he pay
when did he pay
provider's id of the purchase, so you can later match the accounting reports with the payment provider's report
where he payed from (IP can be a good indicator, although in the age of VPNs not necessarily 100% acurate)(this can be useful for your marketing decisions)
mark that this user now has access to the item he purchased and if it is a time limited item, mark when it expires, so you are able to later check if he still has the right to access it.
Disclaimer:
I have not used the android IAP system directly before. I have implemented mobile app payment systems before using iOS IAP and on android Braintree payments. But the process is most likely very similar with android IAPs as well.
I have a webservice that requiers accounts. As a complement I have built an app that can be used with the account on the website.
Do I have to provide the possibility to create an account through the app or is it enough to reference to the website?
If you have to be registered to use the application, you must allow:
users to register in the app
users to log in in the app
allow the users to use the application without any account (maybe with less functionnalities).
If not, the app may be rejected.
there's no Google enforced practices of banning app or anything like this. You can release your app however you prefer.
But be warned that apps with a Login button, but if you want to Sign up you have to go to the web are usually not very successful apps and have very poor ratings on the Google Play.
Say a company would like to purchase my app for each of its employees. Each employee has their own Google account. But, in order for the company to pay for the app for their account, they need to log in with their account, and have access to the company's credit card information. Is there any convenient way for a company to purchase an app for its employees?
You may have to implement a licencing system. Have the market version of the app require a key be entered before it starts working. You'll need a backend system to manage the creation and usage of these keys that will also provision the app on the phones.
There may be a better way but I've never heard of a "gifting" mechanism for the Android market.