Thank you so much for giving this for free to the community, you will save a lot of time for so many devs. I hope you start making more Flutter content
Thanks dude. You match my vibe probably I would start working on my previous abandoned project ABCD Game. I learnt lots from your previous playlist I appreciate you putting this playlist on youtube.
First of all this is some great stuff, this is exactly what I needed. Second, I haven't tried on a simulator, but build for Mac and you can complete in app purchases instead of loading onto a physical phone.
"Thank you so much for this incredibly insightful tutorial! 🚀 Your step-by-step guide on monetizing Flutter apps with ads, in-app purchases, and subscriptions is a game-changer. The clarity in your explanations and the practical examples make the learning process smooth and enjoyable. 🌟 I appreciate the effort you put into breaking down the complexities, truly catering to both beginners and those looking to enhance their skills. Your expertise shines through, and I'm excited to implement these strategies in my Flutter projects. Kudos to you and your fantastic channel! 👏🎉 #FlutterMonetizationMastery"
First of all, very nice guide and everything is so useful to setup IAP in flutter app! very very nice. I have a question : When I setup all the necessary for test how can I do purchases in enviroment production? sorry for the "useless" question, but I wish to know if App store connect do the job changing automatically when on the Store or what else? PS: I'm not using firebase because I have setup another BackEnd
It will happen automatically when it's actually deployed. If you run the app through TestFlight it'll still be the test version and allow all purchases to happen without actual payment. Once it's live on the app store, it'll only ever allow real payments, is that what you mean?
@@1ManStartup man I released as you said but in the testflight version it works very well but in Store doesn't show any purchase to do in list.. I should wait or something to check that you could provide me to check if it everything is fine? Thanks and sorry for bothering you
@@DavideBelardi I don't have a good answer, if it was working in testflight it should also work in production. Maybe there would be a slight delay but no more than a few minutes. Do you get any errors and are the purchases approved in App Store Connect?
@@1ManStartup ok, on the Internet they talk about 24h to 48 hours to wait the approval of the In-App purchase item on store. Maybe is about the approval because I have missed metadata, it can be this one the reason
So you are seeing the paywall & are able to make the payment for the subscription? If that's the case, and you're then still seeing the paywall, either you aren't updating your database (firebase in the video) with the new subscription, or you aren't listening/ checking the subscription status in the app
Thank you, once I launched the app with Xcode the payment process issue was resolved. How can I check whether monthly subscription users are making regular payments every month?@@1ManStartup
hi brother that's every thing is just incredible thanks a-lot great effort but i have question in IOS i implemented everything works fine on testing with storekit. but now i uploaded my app on test flight and products are not coming. I think the issue is might be agreement and bank details. After accepting and adding that the products will come on test flight? please let me correct if any other thing require for that?
Hey, Actually in my apple developer account, in In App Purchases, I have only 2 options Consumable and Non-Consumable but you have Auto renewable and non renewable subscriptions, why so? Please help.
App Store Connect has been updated and now there is In-App Purchases tab for all non subscription purchases (which you are referring to). Now subscriptions, both auto and non renewable are in the tab Subscriptions. Other than the separate tab the rest seems to be about the same.
Hello! I'm really thankful for your lecture! At the 4:07:53 mark, it shows me "There are no upgrades at this time," even though I've definitely updated it on App Store Connect (I've already released the app before). Is there any point that I might have missed? It does say "Drafts"...
Have you tried testing on a physical device? What is saying "Drafts". The no upgrades is meant to show if the product ids you define in the app can't be found in the stores.
I noticed that the Google mobile ads package on the video is from 2021, so my questions is if how much of this is still valid for admob and also for flutter.
There are some differences, you can view the change log here. The video uses version 0.13.4 pub.dev/packages/google_mobile_ads/changelog This is still the package I would recommend using today to add Google ads to an app.
Sir Thanks for this cool video,Need one suggestion In my app their is consumable products .When app uninstall it cant be restore.So how to manage this with our server? like once user buy consumable product then we will update that with our server and when user install app again and do login then we will get that consumable product using user_id. Is it correct way for consumable product?Please help.
Hello sir i am showing banner ad in my app in the bottomnavigation bar but in my app there is a drawer which have items and when user clicks on that then it navigates the user to specific tab view in home screen and in home i am showing banner ad in bottom navigation bar but it shows a errror like adwidget is already in state
would it possible to have dynamic pricing for the in-app purchases? As I have a service which it has different pricing depending on the selection of the user
Yes this should be possible, I haven't set this up myself but the first thought that comes to mind is to have several different products which have the different prices. For example premium_99 premium_299 - then you can filter out the products based on the business logic around which price you want to show. Likely there are better ways, this is just a first thought.
@@1ManStartup Thank you for your reply. Considering that I have multiple selection. For example I have multiple categories: 1) 0 - 100 km 2) 1day to 100 days Selection 1 and 2 are highly dependent, based on the distance and the duration of the selection, we will have dynamic pricing. This mean I will need to create more product on the playstore. I have tried to use 3 product, base-product, distance, and duration, and increment the count of the quantity when offering to user. But apparently the packages only allow to select one product at a time. This is causing some trouble.
@@yap9660 my thinking would still be to create a product for each specific potential outcome. Then maybe you have 10 product ids, in the app's logic the user will make selections which always narrow it down to one id.
Thanks Again Sir, Can you answer my question please, So I’m building an app and the app data is stored locally in sqflite for which I didn’t needed a remote db. But now as I need to implement IAP to implement premium vs free access to the app in which I need to hide some functionalities for free user. For that I see that I need to connect app with Firebase and use annunymous auth . For keeping track of free and paid user. My question is here for my app functionality internet is not necessary but no as I’m dependednt on Firebase for checking IAP purchases to decide if user is free or paid. Is that soo? Or can Implement some mechanism to check for free vs paid user without internet by storing user payement status locally ??? Please guide me (purchase is NON-CONSUMABLE)
Firstly, it will not be possible to make an in-app purchase without internet. So you app will need an internet connection to make successful purchases. However, you don't necessarily need to use firebase or even a backend for that matter. You can instead rely on the "restore purchase" feature. If you went that route, it'll be harder to confirm that a user actually purchased the product because you wouldn't have a backend to confirm the purchases. But if you don't really care about that then you could have them make the purchase on device & save a status locally. Then later if they redownload the app or use a different device they can use the restore purchase feature from google/apple which you would then need to handle the update locally. I wouldn't really recommend this, but it's an option. Alternatively, you can also look at RevenueCat which could handle the backend/ purchase confirmation for you.
@@1ManStartup Firstly thank you so much for replying Sir, It means a lot !!! ❤️ And I think I’ll go without using Firebase and any remote db as when a user make purchase I’ll store the flag locally and will retriev it to give access to him for paid features And when he changes devices he can then use restore which will again saves his paid flag in locally.I think it’s better for now. AndI wanted to know is this matter really serious to confirm purchases for this app. As it’s not that much big app. Just small app with some audio content like 20 files with 2,3 test that user takes.
@@Inandoutpk Yes that's a good idea, you can always switch to the remote db later if you decided to, and basically use your local one as an offline cache. The matter isn't too serious, the worst thing that'll happen is someone can set their version of the app to have the premium feature without paying for it. It's kind of unlikely people will do this, but just know that an on device database can always be changed by the user if they know how. BUT 99.9% won't know how.
@@1ManStartup yeah, that’s why I have used Clean Architecture because I know the client will later ask for Remote db for storing user data,later They just don’t want that now. And thanks for your knowledgeable answers. I’m turning on notifications for this channel now. :))
Hii, can you please tell me in the developer account of app store connect where I can see the total no of subscription transaction being processed each month and related details? I have gone through some answers but I can't find that sales and trends screen and other sub folders
In App Store Connect you can see the subscriptions under state in the Subscriptions trends tab. appstoreconnect.apple.com/trends/states There is also the Summary and Retention with subscription specific info
Hello I am coding an application and I have to submit the user to a subscription, my question is how to check the status of the user when he logs in and direct him to a free user screen otherwise see a screen of premuim user.
The video shows basically how you can do this except instead of showing a different screen it's showing a different widget. But if your keeping track of the user's subscription status on your backend database then you'd simply check that value when the user logs in and show the different screen based on that value.
Hii, actually I have updated the cost of a subscription in app store, and in my debug built it shows the updated amount but when I run the live app from app store it shows the previous amount of the subscription in the pop up which comes from apple but in app it shows the updated amount and also when I pay the updated amount is deducted from my account but the pop up from apple which has subscribe button shows the previous amount only.. why is it happening?
I'm not sure, that doesn't make sense. If your pulling the price from apple and it's showing correctly in some areas but not all, I'd check to make sure you're not hard coding the price. Alternatively, if you just updated it maybe there is a small delay in Apple updating the price, but that seems less likely.
For web you could use google AdSense, I haven't used it myself but I believe they give you a script you embed on your site. If you're site gets a lot of traffic 50k+ monthly sessions I hear other ad networks like Mediavine pay higher CPMs. Is this for flutter web or a different type of website?
Make sure you have setup the purchases in App Store Connect and make sure the app is linked to the app store connect correctly. Are you able to make purchases in the first place? Do you see any specific errors?
hey, what about his error could not verify the purchase because of error GaxiosError: Your request is invalid for this subscription purchase.? Help please
@@1ManStartup message: 'Your request is invalid for this subscription purchase.', domain: 'androidpublisher', reason: 'subscriptionInvalidArgument' status 400. I tried with real device and simulator both.
@afnan9108 Sorry for the delay I didn't get notified about this comment. Are you having a similar issue to what's happening around 4:50:00 in the video?
@@1ManStartup I/zygote ( 4534): Do partial code cache collection, code=122KB, data=90KB I/zygote ( 4534): After code cache collection, code=122KB, data=90KB I/zygote ( 4534): Increasing code cache capacity to 512KB I/flutter ( 4534): Called verify purchase with following result Instance of 'HttpsCallableResult' I/flutter ( 4534): Purchase marked complete but does not create my collection
Thank you so much for giving this for free to the community, you will save a lot of time for so many devs. I hope you start making more Flutter content
More flutter content will be coming soon!
Ah, man..can't thank you enough. Well made, in depth tutorial for BOTH ios and android..thank you, thank you
You're welcome, glad you're finding it useful!
This is Pure Gold :)
Thank you so much..
You're very welcome!
Thank you for making this available
This tutorial saved me. Super loaded. I wish i can subscribe a thousand times. God bless you sir
Glad to hear that
Wow, that was intense to watch thank you very much!
This is Gold ... thanks brother you helped me a lot
Glad to hear it
My fav flutter dev 😇,Greetings from Albania
Thanks dude. You match my vibe probably I would start working on my previous abandoned project ABCD Game. I learnt lots from your previous playlist I appreciate you putting this playlist on youtube.
Nice I remember your game, hopefully this can help you make some $$ from it!
First of all this is some great stuff, this is exactly what I needed.
Second, I haven't tried on a simulator, but build for Mac and you can complete in app purchases instead of loading onto a physical phone.
Good to hear, that will be useful for others testing.
this is the best video on youtube , thank you so much
Wow, thanks!
I did not watch yet but I will use these informations today. Thank you !
You are really doing a great thing.
Thanks for such content.
It's my pleasure
Thank you so much ❤
what a great content, tnx a lot 🙌
Thank you so much, Sir ❤❤❤
Great tutorial! Thanks a lot
Glad you enjoyed it!
Thank you!
"Thank you so much for this incredibly insightful tutorial! 🚀 Your step-by-step guide on monetizing Flutter apps with ads, in-app purchases, and subscriptions is a game-changer. The clarity in your explanations and the practical examples make the learning process smooth and enjoyable. 🌟 I appreciate the effort you put into breaking down the complexities, truly catering to both beginners and those looking to enhance their skills. Your expertise shines through, and I'm excited to implement these strategies in my Flutter projects. Kudos to you and your fantastic channel! 👏🎉 #FlutterMonetizationMastery"
Thank you. it is very useful.
Glad to hear that
Thank you, is awesome!!!!
thank for the great video. when I buy a consumer product, Does Apple send notification to my server?
Yes, the setup for that is covered in part 4
Thank you! Flutter Jesus.
First of all, very nice guide and everything is so useful to setup IAP in flutter app! very very nice.
I have a question : When I setup all the necessary for test how can I do purchases in enviroment production? sorry for the "useless" question, but I wish to know if App store connect do the job changing automatically when on the Store or what else?
PS: I'm not using firebase because I have setup another BackEnd
It will happen automatically when it's actually deployed. If you run the app through TestFlight it'll still be the test version and allow all purchases to happen without actual payment.
Once it's live on the app store, it'll only ever allow real payments, is that what you mean?
@@1ManStartup yes, that's what I mean. Thanks a lot for your answer and very great job for the guide. I love it.
@@1ManStartup man I released as you said but in the testflight version it works very well but in Store doesn't show any purchase to do in list.. I should wait or something to check that you could provide me to check if it everything is fine? Thanks and sorry for bothering you
@@DavideBelardi I don't have a good answer, if it was working in testflight it should also work in production.
Maybe there would be a slight delay but no more than a few minutes. Do you get any errors and are the purchases approved in App Store Connect?
@@1ManStartup ok, on the Internet they talk about 24h to 48 hours to wait the approval of the In-App purchase item on store. Maybe is about the approval because I have missed metadata, it can be this one the reason
Hello sir, I have made the storekit settings, but it keeps sending me to the payment receiving screen, I keep making payments again.
So you are seeing the paywall & are able to make the payment for the subscription? If that's the case, and you're then still seeing the paywall, either you aren't updating your database (firebase in the video) with the new subscription, or you aren't listening/ checking the subscription status in the app
Thank you, once I launched the app with Xcode the payment process issue was resolved. How can I check whether monthly subscription users are making regular payments every month?@@1ManStartup
❤🔥❤🔥❤🔥❤🔥
hi brother that's every thing is just incredible thanks a-lot great effort but i have question in IOS i implemented everything works fine on testing with storekit. but now i uploaded my app on test flight and products are not coming. I think the issue is might be agreement and bank details. After accepting and adding that the products will come on test flight? please let me correct if any other thing require for that?
Yes the agreements and banking are most likely your issue, I know the agreement needs to be accepted to have the In app purchases setup completely.
Hey, Actually in my apple developer account, in In App Purchases, I have only 2 options Consumable and Non-Consumable but you have Auto renewable and non renewable subscriptions, why so? Please help.
App Store Connect has been updated and now there is In-App Purchases tab for all non subscription purchases (which you are referring to). Now subscriptions, both auto and non renewable are in the tab Subscriptions.
Other than the separate tab the rest seems to be about the same.
Hello! I'm really thankful for your lecture! At the 4:07:53 mark, it shows me "There are no upgrades at this time," even though I've definitely updated it on App Store Connect (I've already released the app before). Is there any point that I might have missed? It does say "Drafts"...
Have you tried testing on a physical device? What is saying "Drafts". The no upgrades is meant to show if the product ids you define in the app can't be found in the stores.
@@1ManStartup I just got it! thank you! could I ask you? do you think it's worth using Revenuecat? I don't know if I will decide which one. thank you!
Same problem here, did you manage to solve it?
I noticed that the Google mobile ads package on the video is from 2021, so my questions is if how much of this is still valid for admob and also for flutter.
There are some differences, you can view the change log here. The video uses version 0.13.4 pub.dev/packages/google_mobile_ads/changelog
This is still the package I would recommend using today to add Google ads to an app.
@@1ManStartup sure, it's the official Google package for admob I guess.
Sir Thanks for this cool video,Need one suggestion
In my app their is consumable products .When app uninstall it cant be restore.So how to manage this with our server?
like once user buy consumable product then we will update that with our server and when user install app again and do login then we will get that consumable product using user_id.
Is it correct way for consumable product?Please help.
Yes that's the way to do it, which is what's shown in the video
Since we are not passing user id in flutter code, how does backend script knows the user id of the current subscribing user?
That should all be explained starting at 6:16:48
Hello sir i am showing banner ad in my app in the bottomnavigation bar but in my app there is a drawer which have items and when user clicks on that then it navigates the user to specific tab view in home screen and in home i am showing banner ad in bottom navigation bar but it shows a errror like adwidget is already in state
It sounds like you are trying to load a banner ad when one is already loaded?
would it possible to have dynamic pricing for the in-app purchases? As I have a service which it has different pricing depending on the selection of the user
Yes this should be possible, I haven't set this up myself but the first thought that comes to mind is to have several different products which have the different prices. For example premium_99 premium_299 - then you can filter out the products based on the business logic around which price you want to show.
Likely there are better ways, this is just a first thought.
@@1ManStartup Thank you for your reply.
Considering that I have multiple selection. For example I have multiple categories:
1) 0 - 100 km
2) 1day to 100 days
Selection 1 and 2 are highly dependent, based on the distance and the duration of the selection, we will have dynamic pricing. This mean I will need to create more product on the playstore.
I have tried to use 3 product, base-product, distance, and duration, and increment the count of the quantity when offering to user. But apparently the packages only allow to select one product at a time. This is causing some trouble.
@@yap9660 my thinking would still be to create a product for each specific potential outcome. Then maybe you have 10 product ids, in the app's logic the user will make selections which always narrow it down to one id.
Or simplify the pricing structure, if it's a subscription charging monthly or yearly is more typical than letting the user select an amount of days.
@@1ManStartup Thanks you for your recommendation. It is very helpful
Thanks Again Sir, Can you answer my question please, So I’m building an app and the app data is stored locally in sqflite for which I didn’t needed a remote db.
But now as I need to implement IAP to implement premium vs free access to the app in which I need to hide some functionalities for free user.
For that I see that I need to connect app with Firebase and use annunymous auth . For keeping track of free and paid user.
My question is here for my app functionality internet is not necessary but no as I’m dependednt on Firebase for checking IAP purchases to decide if user is free or paid.
Is that soo? Or can Implement some mechanism to check for free vs paid user without internet by storing user payement status locally ??? Please guide me
(purchase is NON-CONSUMABLE)
Firstly, it will not be possible to make an in-app purchase without internet. So you app will need an internet connection to make successful purchases.
However, you don't necessarily need to use firebase or even a backend for that matter. You can instead rely on the "restore purchase" feature.
If you went that route, it'll be harder to confirm that a user actually purchased the product because you wouldn't have a backend to confirm the purchases. But if you don't really care about that then you could have them make the purchase on device & save a status locally. Then later if they redownload the app or use a different device they can use the restore purchase feature from google/apple which you would then need to handle the update locally.
I wouldn't really recommend this, but it's an option. Alternatively, you can also look at RevenueCat which could handle the backend/ purchase confirmation for you.
@@1ManStartup
Firstly thank you so much for replying Sir, It means a lot !!! ❤️
And I think I’ll go without using Firebase and any remote db as when a user make purchase I’ll store the flag locally and will retriev it to give access to him for paid features
And when he changes devices he can then use restore which will again saves his paid flag in locally.I think it’s better for now.
AndI wanted to know is this matter really serious to confirm purchases for this app. As it’s not that much big app. Just small app with some audio content like 20 files with 2,3 test that user takes.
@@Inandoutpk Yes that's a good idea, you can always switch to the remote db later if you decided to, and basically use your local one as an offline cache.
The matter isn't too serious, the worst thing that'll happen is someone can set their version of the app to have the premium feature without paying for it. It's kind of unlikely people will do this, but just know that an on device database can always be changed by the user if they know how. BUT 99.9% won't know how.
@@1ManStartup yeah, that’s why I have used Clean Architecture because I know the client will later ask for Remote db for storing user data,later
They just don’t want that now.
And thanks for your knowledgeable answers.
I’m turning on notifications for this channel now. :))
Hii, can you please tell me in the developer account of app store connect where I can see the total no of subscription transaction being processed each month and related details? I have gone through some answers but I can't find that sales and trends screen and other sub folders
In App Store Connect you can see the subscriptions under state in the Subscriptions trends tab. appstoreconnect.apple.com/trends/states
There is also the Summary and Retention with subscription specific info
Hello I am coding an application and I have to submit the user to a subscription, my question is how to check the status of the user when he logs in and direct him to a free user screen otherwise see a screen of premuim user.
The video shows basically how you can do this except instead of showing a different screen it's showing a different widget.
But if your keeping track of the user's subscription status on your backend database then you'd simply check that value when the user logs in and show the different screen based on that value.
I'm using Firebase in backend my question is how to see or get the subscription status of a user when they log in.
Hii, actually I have updated the cost of a subscription in app store, and in my debug built it shows the updated amount but when I run the live app from app store it shows the previous amount of the subscription in the pop up which comes from apple but in app it shows the updated amount and also when I pay the updated amount is deducted from my account but the pop up from apple which has subscribe button shows the previous amount only.. why is it happening?
I'm not sure, that doesn't make sense. If your pulling the price from apple and it's showing correctly in some areas but not all, I'd check to make sure you're not hard coding the price. Alternatively, if you just updated it maybe there is a small delay in Apple updating the price, but that seems less likely.
Hello :) Do you know how to run ads on web?
For web you could use google AdSense, I haven't used it myself but I believe they give you a script you embed on your site. If you're site gets a lot of traffic 50k+ monthly sessions I hear other ad networks like Mediavine pay higher CPMs.
Is this for flutter web or a different type of website?
@@1ManStartup of course Flutter :)
I can not return the previously purchased subscription in ios
Make sure you have setup the purchases in App Store Connect and make sure the app is linked to the app store connect correctly.
Are you able to make purchases in the first place?
Do you see any specific errors?
hi im getting xcode environment instead of sandbox why so please help
Have you setup Store kit I think that's what your referring to 4:16:58
hey, what about his error could not verify the purchase because of error GaxiosError: Your request is invalid for this subscription purchase.? Help please
status 400 bad state
This probably means the request data your sending is incorrect. What is throwing the error? Might be as simple as your auth tokens are expired.
@@1ManStartup
message: 'Your request is invalid for this subscription purchase.',
domain: 'androidpublisher',
reason: 'subscriptionInvalidArgument'
status 400. I tried with real device and simulator both.
@@1ManStartup at Gaxios._request (/workspace/node_modules/gaxios/build/src/gaxios.js:129:23)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async JWT.requestAsync (/workspace/node_modules/google-auth-library/build/src/auth/oauth2client.js:368:18)
async GooglePlayPurchaseHandler.handleSubscription (/workspace/lib/google-play.purchase-handler.js:76:30)
async /workspace/lib/google-play.purchase-handler.js:59:21 {
storekit_duplicate_product_object, There is a pending transaction for the same product identifier
What is the reason for this error
It could be that you're trying to create 2 products with the same product id. The product Ids have to be unique. When/ where are you seeing the error?
android works fine but in ios when i make restrore purchase my purchases gets looped and if i make a purchase again i get duplicate error@@1ManStartup
@afnan9108 Sorry for the delay I didn't get notified about this comment. Are you having a similar issue to what's happening around 4:50:00 in the video?
Please update with new videos
I don't have plans to make an updated series, if you have specific issues comment and I or someone maybe able to help
on listenUpdatePurchased on vlaue serverVerification is base64 or any?
Hmmm
🧐
Thanks for hating nodejs and otherjss early :D
🤣
@@1ManStartup My functions does not change or create anything on firestore database please help
@@CarpeNoctem-y3m Which functions? what part of the video are you at? Have you looked at the linked code in the description as a reference?
@@1ManStartup I did all functions and verify is working but others are not working. I think problem is that I did not use provider to read?
@@1ManStartup
I/zygote ( 4534): Do partial code cache collection, code=122KB, data=90KB
I/zygote ( 4534): After code cache collection, code=122KB, data=90KB
I/zygote ( 4534): Increasing code cache capacity to 512KB
I/flutter ( 4534): Called verify purchase with following result Instance of 'HttpsCallableResult'
I/flutter ( 4534): Purchase marked complete
but does not create my collection
Thanks!
Thank you too!