Flutter IAP's not initiating payment popup after being cancelled once - flutter

I am using the official in-app-purchase library to handle billing. I have essentially copied the exact working example for my app. After clicking an In-App-Purchase the App Store pop ups as expected - if the user cancels that purchase for any reason and then goes back and clicks the IAP again, the App Store no longer attempts to pop-up. This is true after reboots, re-installs, new versions, etc. that product is no longer reacting to user input.
The one interesting thing to note - this behavior is not seen whatsoever when testing through TestFlight.

Many flutter developers facing issue in IAP, check this thread:
GitHub: Flutter IAP iOS issue
You can try this alternative solution:
https://pub.dev/packages/flutter_inapp_purchase
https://github.com/dooboolab/flutter_inapp_purchase

Related

Flutter in app purchase iOS not testable in testfly?

I have already an iOS app in production, but I have change a little the purchase part. I don't remember or found if it's normal that I can't test a purchase in testfly or in debug mode/release mode.
The id purchase is detected and the product is display. My purchase test work on Android when I clic on the product, I see pop up to test a purchase. But on iOS when I clic on product I have nothing. In debug the purchase is call but no pop up to validate purchase to test, and no more information about errors.
sandbox is activated
sandboxTesting=true;
On my device setting-> itunes Store and app Store-> I have my app id add in sandbox
In app purchase is add on xcode signing and capabilities
Other observation I remember that before I had pop up to add user id and password to connect, I now I don't know why, I don't have the apple connect pop up.
The only things I did, is to try to upgrade flutter, and downgrade ( because some bug) to return to initiale version who is in production. I even try to return to the initial flutter release ( who expected to work) and I have same problem...
I try to create a new flutter projet to test purchase example from flutter package, and use my current bundle id to display my product. It's display but I have same problem : no connection pop up, no purchase pop up. nothing... but purchase is display, found, and all processus (Xcode, appstore connect, testfly .. is valid.
So I'm little afraid to publish without testing.
Before use time machine to backup all my mac before all this bug, I would have your opinion about this
Thank you

App Store Rejection With Reason: your app requires users to register personal information to purchase non account-based in-app purchase products

For last few days this cat and mouse game is going on between me and App Store Reviewers. And despite searching everywhere, I have not been able to find an answer to this question, so seeking help here.
I have submitted an app with auto-renewable subscriptions in it.
My app requires that users sign-in in order to see additional options, which includes subscription option as well.
App Store Reviewers keep rejecting my app citing this same text every time:
Regarding 5.1.1, we continue to notice that your app requires users to register with personal information to purchase non account-based in-app purchase products, which does not comply with the App Store Review Guidelines.
To resolve this issue, it would be appropriate to make it clear to the user that registering will enable them to access the content from any of their iOS devices and provide them a way to register at any time, if they wish to later extend access to additional iOS devices.
We look forward to reviewing your resubmitted app.
Best regards,
App Store Review
What is non account-based in-app purchase products by the way?
I have also made it clear in my app what App Reviewer have asked above, i.e. make clear to the users that registering will enable them to access the content from any of their iOS devices. I didn't say iOS devices specifically, but said other devices since I'll have the same app on Android devices as well.
While I appreciate App Store Reviewers to help me improve my app, but I am totally lost here. I have submitted two updates to my app but every time it got rejected with the same reason.
Over this period I have also read their guidelines, read many similar cases online, but am still not clear what is required of me here.
Do they want the users to be able to purchase subscriptions even if they are not signed in? If so then technically how does this work? First it'll break the core functionality of the app since without registration I don't have user's info to create an account for them. Secondly how will I know which user purchased the subscription? I have to tie the subscription to the user's account on my backend. This means first I need to create an account for the user before user can purchase a subscription.
Please help me to get this right.
Currently I am waiting App Store's reply and my screens looks like these, with all other options removed when not signed in, and added text bottom of the Sign-In option, and help icon on top right of the screen where there is more information available for the user; and the one when user is signed-in.
If I would be a user of your app, I think I would find this behavior quite odd.
I would expect a login/registration screen when starting your app. If I decide to create an account, the Subscription button would always be visible within the settings.
However, there would also be an option "Continue without registration". If you do not create an account, the settings page could show some info text like "Some features are only available for registered members. Please tap here to create an account". Tapping the corresponding cell would show the registration page that is also shown when starting your app for the first time.
Maybe some users created an account in the past but forgot their passwort? Then they would not be able to restore their purchases, right?
Your login/registration form should also contain a "Forgot Password" option.
My app was eventually approved last year. The change I made was to remove the Subscriptions button from the Settings menu. And move it inside the user profile page. This means that user can see the Subscription option only after signing in and by going to their profile page. While this doesn't make sense to me, but that's how probably Apple wanted it. Subsequent updates to my app were also approved without any problem.

Testing Non-consumable In-App Purchase

I am trying to create my first non-consumable in app purchase for my ios app and I just uploaded the .pkg to iTunes Connect (via XCode) but I still see this warning...
This In-App Purchase is not currently available for testing in the sandbox environment because you have chosen to host your content with Apple, but have not delivered your content. Upload your content to test this In-App Purchase in sandbox.
and the status is still
Waiting for Upload
I have not yet submitted my App's binary yet however.
How do I get rid of the message above and move on with testing in the sandbox env? Do I need to submit my app's binary?
Nevermind! I guess I was just being impatient. I checked back after a couple of hours and now the warning message has changed to
Your first In-App Purchase(s) must be submitted with a new app version. Select them from the In-App Purchases section of the Version Details page and then click Ready to Upload Binary.
For those who also got confused because they did not notify you directly, just make sure that you:
Archive your in app purchase, distribute it through XCode (Open organizer) and wait 1-2 hours.
This error came up for me when I edited an in-app purchase.
I have not received a reply from Apple but found that when I changed the image, I got this on saving.
Instead of being an edit, it turned into an add new.
As I have quite a few apps, I decided to add the in app-purchases to them and found that there was an issue with the graphic. There is no need to change the old one but thought it would be nice.
It is buggy.
I resolved the problem by deleting the new in app purchase and the edits were still saved into the original configuration except for the image.

iOS - App review process rules for disabled features

I have an iPhone app (already in the App Store, free download) which requires the user to enter server and login credentials which are provided on a subscription basis. The app has a built-in 'Demo Mode' for prospective customers to evaluate the app, and so far the Apple app review team have always used this mode to approve each version submitted.
The latest version which I'm about to submit has some new features which are not appropriate for use in the Demo Mode and are disabled in this mode. No buttons are greyed out but an alert message is displayed to inform the user 'Not available in Demo Mode'. My question is will this cause a problem with the Apple review team - will it be rejected because of disabled functionality?
A while ago I showed a very similar message to your 'Not available in Demo Mode'.
Apple rejected the app, saying this would negatively impact the user experience!
I would try another approach - even if it's just in the documentation of the app on the info page.
Yes, you should give out the subscribed user credentials in the review notes of the application metadata you fill in while uploading the application, as they need to test the full application to complete their review process. Until the full app is reviewed don't even think of it getting approved and going live.
IIRC, Apple's review guidelines say that Trial or Demo apps will be rejected.
The opposite might be more acceptable. Don't interrupt the user experience by saying that X is disabled or not available in the demo; but say that the app will be enhanced by the availability of X in your advertisement for customers to buy the full mode.

Unknown App when confirming in-app purchase

I have created a newsstand app and have everything working. The only issues I have now are:
When I click 'subscribe' and the dialogue box pops up to confirm the in app purchase it says
Confirm Subscription
Do you want subscribe to Unknown App for free?
[Environment: Sandbox]
Why does it say Unknown App? Everything else works (receipt validation, completing the transaction & co.)
Also, will the [Environment: Sandbox] go away automatically once I upload it to the app store and download it for real? Is there something in my code that I am missing that sends the in app purchase request to the sandbox? Or is it just because i am using a test device that has the app compiled onto it from XCode.
If your app is not in app store, it shows you the [Environment: Sandbox]. It will automatically go away once you uploaded app and your app is in app store.
For "Unknown App":
You need to add text in inApp purchase section in iTunes connect. If you haven't done that it will show you "Unknown App" on message which comes on iOS pop-up.When you activate in-app purchase by filling all information in inApp purchase section, pop-up will not show you "Unknown App", rather the pop-up will mention your app name.
Hope this will help you.
If your app is not in app store, it shows you the [Environment: Sandbox]. it will automatically will go away once you uploaded and your app is in app store.
If your binary has been rejected by Apple, the IAP products submitted with it should also show up as rejected. When you try and purchase a rejected IAP within the app, the confirmation screen will show the aforementioned "Do you want to buy one Unknown App...".
To correct this you should be able to make a small change to each IAP product in iTunes Connect. Then simply change it back, then the rejected flag should go away (and be replaced by waiting for review. For example, I added an 's' to the Display Name for the English language of each product. Then went right back in and removed the 's'.
This may not be acceptable to Apple if the reason for your rejection centers around your use of In-App Purchases.
I suggest to check your itunesconnect account.
Goto your Specific App "NewStandApp" .-> Manage InAppPurchases. Now check Reference Name you have Added with your ProductID.
Product_Id your are referring in project/app (sandbox environment) might be connected with app name "Unknown app"