Hello, dear community!
We are developing an NFTs marketplace where users can create, buy, and sell NFTs. Additionally, our app is intended to transfer and purchase our cryptocurrency like any other crypto wallet.
When users create their own NFT using our app, they can set the price (in our cryptocurrency) of the asset they create. However, Apple's review team rejected our app submission due to in-app purchases that we don't have.
.
OUR ACTION PLAN:
We are planning to develop "Packages" for buying our cryptocurrency, like gems in a game, to buy any other NFT within the app, but we are not sure if this strategy can help us pass the app review.
.
Do you know if we have to add any other configuration in the app store connect to attend the wallet functionality, to buy and transfer our cryptocurrency?
Do you have any recommendations for passing the app review?
Our app is designed to work like:
Metamask (for buying our crypto currency and transfer).
Coinbase (for buying our crypto currency).
Jump.trade (for NFTs Marketplace and create NFTs).
Bitso (for buying our crypto currency).
NFT GO (for NFTs Marketplace and create NFTs).
Thanks in advance! ❤️
Post not yet marked as solved
App Store kept rejecting my app because the Manage Subscriptions Page says Cannot Connect when it's run on a Sandbox account. I'm using the manageSubscriptionsSheet(isPresented:) API, and I don't know how to fix this.
There are others dealing with the same issue and everything I found so far is saying it's iOS issue.
I responded to the App Store saying it's an iOS issue and included the following links:
Apple Developer Forums
Apple Developer Forums
Apple Support Communities
Apple Support Communities
They replied with the following generic message:
During our review, we found that your app displayed an error message when we tapped on "manage subscription". While we cannot provide technical assistance with the reported issues, we have put together the following resources which discuss common issues seen in apps during review.
To start, please see Testing a Release Build, which gives an overview of how to test your app to minimize the chances of issues occurring during review.
You may also want to review Designing for Real-World Networks, as all apps are reviewed on-device and in an environment that replicates real-world use of your app.
Is there a way to fix this? How should I respond back? Also, can I just take out the Manage Subscription functionality?
Post not yet marked as solved
I've read several topics on cancelling subscriptions in sandbox environment, but it seems to me that it could not be applied to TestFlight.
I can cancel sandbox subscriptions through Settings > App Store > Sandbox account
But since TestFlight does not use sandbox account I cannot cancel a sub from there.
Also, TF purchase does not appear in the list of regular subscriptions (Settings > Profile > Media & Purchases).
So my question is: is there any way to manually cancel auto-renewable subscription bought in TestFlight build of the app?
Post not yet marked as solved
We've implemented subscriptions in our app, but a few users are reporting that the payment sheet isn't opening its keep loading, we also checked with them that the permission for in app purchases is allowed in device settings and in all other apps purchases working fine only facing issue in our app side. This issue isn't replicable on our end, and we're unable to debug it. Can you please assist us in resolving this?
Post not yet marked as solved
The sample code provided in https://developer.apple.com/wwdc21/10114 doesn't appear to call finish() on unverified transactions, and I haven't been able to find any documentation regarding what to do with unfinished transactions. However, Apple has always emphasized the importance of finishing transactions, and since a transaction object is provided even with the unverified state, I'd love some guidance!
Post not yet marked as solved
Dear All,
I have a paid app which has in-app purchases to unlock additional content. In my App Store screenshots and preview videos, I used to indicate which content was paid and which was free with labels superimposed over the screen captures.
App store review guideline 2.3.2 supports doing this - in fact, it seems to require it:
2.3.2 If your app includes in-app purchases, make sure your app description, screenshots, and previews clearly indicate whether any featured items, levels, subscriptions, etc. require additional purchases.
But App Review don't like it. Some years ago they complained about the labels on the screenshots, which I removed. Now they are complaining about the preview videos. They cite guideline 2.3.7, which says (in part, my emphasis):
2.3.7 ... Metadata such as app names, subtitles, screenshots, and previews should not include prices, terms, or descriptions that are not specific to the metadata type. ...
So these guidelines seem to be contradictory. If I label a screenshot as "free" or "paid", they consider that to violate 2.3.7. (I'm not showing an actual "$1.23" price, just "free" or "paid".) But I need to indicate whether the content shown is "free" or "paid" in order to comply with 2.3.2. (And I want to label it as such, because I don't want users to misunderstand what is included with their initial purchase.)
Has anyone else had this problem? I wonder if there is some particular wording that they require, e.g. "Requires in-app purchase" rather than "Paid". Or something rather than "free". There is a limit to how much text I can legibly add without obscuring the actual content, so I have tried to keep it brief.
I did refer to 2.3.2 in my reply to App Review, but they haven't addressed that; they've accepted the update as a bug fix.
Ultimately I'll just do what they want - it always seems easiest - but I do have real concern that my customers are worse off without these annotations.
Post not yet marked as solved
Payment completed with error:Error Domain=ASDServerErrorDomain Code=3539,UserInfo={storefront-country-code=CHN,client-environment-type=Sanbox,AMSServerErrorCode=3539,NSLocalizedDescription=No information about in-app purchases is provided. Please try again later}
Post not yet marked as solved
I created an offer code within the subscription in App Store Connect, and on the Flutter side, I want to send the code entered by the user to Apple and start the user's subscription.
Can I do this on the flutter(client) side? Or do I need to connect it from the backend?
Post not yet marked as solved
Why, in the list of displayed prices, I want to select 10480, but I can't find it. However, there is 9840. I have entered all the books, but it still doesn't exist.
Post not yet marked as solved
Hi Team,
When offering services involving one-on-one consultations conducted outside the app (e.g., via phone calls or Zoom), is it required to implement Apple's in-app purchase system as a consumable for these services, or can we utilize a third-party payment method compliant with current App Store guidelines?
Post not yet marked as solved
Hello.
We used App Store Server Notifications V1 for purchase notifications.
And we decided to switch to version 2.
We got a problem.
If we use v2 and make a test purchase, the callback will receive a call with an empty requestBody.
If we use v1, then a call comes with data.
If we use https://api.storekit-sandbox.itunes.apple.com/inApps/v1/notifications/test for simulate notification, when version 2 is enabled, callback receive call with correct requestBody.
What could be the problem? Thank you.
My In-App purchases are actually JSON files which provide metadata for my app. I am required to provide a "screenshot" for each of these IAPs before they can be accepted. What is the common practice for screenshots when it is just a JSON file of structured data to be used within the app. Surely someone else has run into this issue by now. What are we supposed to do?
Post not yet marked as solved
Hello,
id like to know if there is a Fee for User to User Payments in an Application.
The Application owner doesnt want to make any money from the purchases or through ads. So its basicly non profit.
Post not yet marked as solved
Hi,
I currently have an introductory offer set up in App Store Connect, which is in the 'Ready to Submit' state. When testing with the StoreKit configuration testing for Xcode, the introductory offer appears correctly, and I can successfully make and cancel purchases. However, when testing on a device without the StoreKit configuration, using a new sandbox account, the introductory offer does not appear, though the introductory price is visible for subscription. Could you advise on how to ensure the introductory offer is displayed in this scenario?
Using Storekit 2
Post not yet marked as solved
I have a production app (since Feb 2023) that has in-app subscriptions (working fine). Now I want to give offer codes to my new users so they can get free trials (2 months free trial + annual subscription).
The offer code is set up like this: https://photos.app.goo.gl/V42fZWRpECnbUQsv6
I waited for 2 days for it to be available. When I redeem this code, it shows error "The code you entered could not be found". See https://photos.app.goo.gl/sGKvuw9thFFkoJWv5, https://photos.app.goo.gl/kctoWPbNu6k4JkZp6
Please help!
Post not yet marked as solved
In the sandbox environment, when purchasing goods, I found that the payment pop-up window was very slow every time. It takes about 9 seconds. Is Apple’s server responding slowly? How to optimize speed?
This is my code snippet.
let payment: SKMutablePayment = SKMutablePayment(product: product)
SKPaymentQueue.default().add(payment)
Post not yet marked as solved
I would like to understand the restrictions that apple apply to apps that offer external payment methods for services that are not part of iOS app IAP system.
There are companies that sell vouchers for PSN, Steam and XBOX that are not related to IAP purchases, and are used in consoles external to the iOS environment.
But it seems that a payment app cannot offers such services inside iOS.
Could someone give me an explanation why is that so?
thanks in advacne,
Post not yet marked as solved
Hi community:
When I try to access subscription settings, after filling in my sandbox user's password, a message "cannot connect" appears, just like below. Does someone know about a workaround to cancel or reset the subscription from the iPhone?
Thanks in advance
Post not yet marked as solved
We're having problems with the Sandbox Server URL for the App Store Server Notifications. Unfortunately, we're not getting any callbacks from Apple Server while making in app purchase(Non-Renewing Subscription).
Post not yet marked as solved
Hi, I'm receiving an incorrect returning state from SKPaymentTransaction.
I have a subscription plan that users can purchase and have access to new features in my app, but, for some reason, even if it's a new app account or new appstore account, when it reaches the SKPaymentTransaction.TransactionState, it always says that the state is SKPaymentTransactionStatePurchased.
This code haven't been changed since 2018 and this error started about 1 week ago.
This is the full code:
- (void)createPaymentWithProduct:(SKProduct *)product {
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product];
payment.quantity = 1;
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
// Call the appropriate custom method for the transaction state.
case SKPaymentTransactionStatePurchasing:
[self purchasingTransaction:transaction];
break;
case SKPaymentTransactionStateDeferred:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStatePurchased: {
//It reaches this case but never reaches Purchasing
[self purchasedTransaction:transaction];
break;
}
case SKPaymentTransactionStateRestored:
[self restoredTransaction:transaction];
break;
default:
// For debugging
NSLog(@"Unexpected transaction state %@", @(transaction.transactionState));
[self failedTransaction:transaction];
break;
}
}
}
After the queue, it calls this functions that ask for the payment receipt, which returns me an error because it's not purchased, so it doesn't have a receipt.
- (void)purchasedTransaction:(SKPaymentTransaction *)transaction {
[self sendReceiptToServerForTransaction:transaction];
if (self.purchasedNotification) {
self.purchasedNotification();
}
}