I am using PaywallView to present the subscription page. Here is the complete code:
.sheet(isPresented: $showPaywall) {
PaywallView()
.onPurchaseCompleted { customerInfo in
if customerInfo.isUnlimitedAccessAllowed {
navigateToFeature()
}
}
.onRestoreCompleted { customerInfo in
if customerInfo.isUnlimitedAccessAllowed {
navigateToFeature()
}
}
}
Please let me know what do I need to do?
Here is the App submission rejection feedback:
We found that your in-app purchase products exhibited one or more bugs which create a poor user experience. Specifically, your app was loading indefinitely on the purchase page. Please review the details and resources below and complete the next steps.
Review device details:
- Device type: iPad Air (5th generation)
- OS version: iOS 17.4
Next Steps
When validating receipts on your server, your server needs to be able to handle a production-signed app getting its receipts from Apple’s test environment. The recommended approach is for your production server to always validate receipts against the production App Store first. If validation fails with the error code "Sandbox receipt used in production," you should validate against the test environment instead.
Resources
- Learn how to set up and test in-app purchase products in the sandbox environment.
- For more information on receipt validation, see the In-App Purchase FAQ.
- If your app makes a SKReceiptRefreshRequest call and fails, do not retry the call. Assume the user does not have access. Continue by making the addPayment call.
- If your app makes a SKReceiptRefreshRequest call to restore previously purchased in-app purchases, make sure the app calls restoreCompletedTransactions when the user selects the "Restore" button.
Please see attached screenshot for details.