Search results for

“restore purchases”

22,008 results found

Post

Replies

Boosts

Views

Activity

Reply to Non-renew subscription and receipt?
Rich,My understanding is an app using the iCloud Key/Value store can't tell whether the user is logged into iCloud or not. I checked with a test app that is provisioned for the key/value store and syncs correctly with other devices, but the [NSFileManager defaultManager].ubiquityIdentityToken value is nil. The app has Key-Value storage enabled as a capability but not iCloud Documents so I reason this is understandable.So what is the recommended startegy for supporting Apple's requirement to make NRS available on all the users devices?The only bullet proof strategy (beyond providing one's own server/backend to support persistence - adding the hassle of yet another account for the user) would seem to be to refresh the app-receipt and figure out the subscription status from the receipt.Should an app using NRS provide a restore purchases button that utilizes the app store receipt and is this process then going to be accepted by the app review team?ThanksStu
Topic: App & System Services SubTopic: StoreKit Tags:
Oct ’15
In-app purchases are not transferring from Mac to iOS App Stores
Our app is a Catalyst app with a single non-consumable in-app purchase. Over the last few weeks we've had a number of users complaining that they've purchased the app on macOS but when they come to restore the same purchase on their iOS devices, our app tells them that there's No purchase found to restore. This is the code that is giving the message: public func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { guard queue.transactions.count > 0 else { self.setError(text: No purchase found to restore) return } ... So the delegate function is getting called, but the transaction queue is empty. We never have problems with iOS purchasers restoring purchases to iOS devices. Nor do we have issues when macOS purchasers restore to macOS devices. It's only an issue when macOS purchasers restore to iOS devices. We now advise users experiencing this issue to go throu
6
0
1.6k
Oct ’22
Reply to Purchases not always works
And on the iPhone 6s....if you delete the app, reinstall under a specific Apple ID, purchase the IAP under that Apple ID, delete the app, resinstall without changing Apple ID and then restore - does it restore? Perhaps the Apple ID on the 6S is different from the Apple ID used to purchase the IAP on the other devices.
Topic: App & System Services SubTopic: StoreKit Tags:
Dec ’16
Reply to When does Restore button need to appear?
The issue is that you have no way of knowing if a user has already subscribed when that user a) gets a new device and downloads the app to that new device or b) deletes the app and reinstalls it. That user does not want to tap a purchase button and only then receive a you already purchased the subscription, it will be downloaded for free response. They are afraid that if they tap the purchase button they will be told thanks for the $4.99 purchase not you already..... They want to see a restore button next to that purchase button.And yes.....while the subscription is active we don't show either button, neither subscribe nor restore.
Apr ’18
StoreKit returns restored for SKUs marked Consumable (no purchase sheet); Flutter in_app_purchase + SK2
What platform are you targeting? And what version? iOS, testing in Sandbox on a physical device. What version of Xcode are you using? [Xcode __] What version of the OS are you testing on? iOS 18 on iPhone 15 pro. What specific API are you using? StoreKit 2 via Flutter’s in_app_purchase plugin (Dart), which uses in_app_purchase_storekit under the hood. What are the exact steps you took? In App Store Connect, I created several Consumable IAPs (status “Ready to Submit”). Example product IDs: USD3.99TenMinuteCoffeePlan (Consumable) USD24.99OneHourDinnerPlan (Consumable) USD14.99InviteAFriendAsGenie (Consumable) Signed in as a Sandbox tester on device (Settings → App Store → Sandbox Account). App queries products with InAppPurchase.instance.queryProductDetails(ids) — products load successfully. Call buyConsumable(purchaseParam: PurchaseParam(productDetails: ...)). Listen to purchaseStream and log PurchaseDetails. If something failed, what are the symptoms? The purchase sheet often does not appear. The purchase
0
0
187
Sep ’25
Disable restore IAP when same Apple account but different user account in application
In my app I have items to show just for users that are paying subscription. User can log to app by e-mail and password and can logout and on same device can log different users. Just classic custom account system. My problem is that Apple Id in phone is still same. So when different user logged in he could restore purchases even that he didn't buy them. So my question is how can I fix it? How can I connect Apple account to my custom account? Or at least somehow when trying to restore IAP check that this Apple account already have this subscription but different user was logged in. How other apps do this?
1
0
459
Feb ’22
In App Purchase cross platforms
Hello Apple Dev Team, I’m seeking guidance on how to ensure full compliance with the App Store Review Guidelines, specifically section 3.1.1 (In-App Purchase). In-App Purchase Mechanisms: I want to verify that my app is correctly using in-app purchases to unlock premium content, rather than alternative mechanisms. The guidelines outline various restrictions on unlocking content (e.g., license keys, QR codes, cryptocurrency). If I follow all of these restrictions, would Apple require anything else specific to prove compliance? Subscription Handling Across Platforms: Our app plans to offer a subscription service where users could subscribe on Android and then access the content on iOS with the same credentials (similar to Netflix). Users should also have the option to manage (including canceling) their subscription directly from their iOS device. Are there any specific requirements or precautions I should take to facilitate this cross-platform subscription access while remaining compl
0
0
507
Oct ’24
Reply to subscription sandbox
restoreCompletedTransactions will restore any previous purchased IAP.A purchase and a restoreTransactions will each generate a transaction in the queue. These transactions will remain in the queue until you call finishTransaction on each transaction.
Topic: App & System Services SubTopic: StoreKit Tags:
Feb ’20
App crashes after purchasing auto renewable purchase with trial.
Hi All,I have been trying to implement auto renewable subscription(ARS) with trial period. I already had an app with ARS implemented and it was working fine. Now I wanted to add trial period as well in these subscriptions. So for testing purpose I created two new products with trial period of 1 month set in them.Now in sandbox environment, when I try to purchase these two new products from a sandbox Id from which I already had taken the subcription, the process goes smoothly without any issue. But when I try to purchase them with a new sandbox account, app crashes after reaching updatedTransaction observer method. In this method, I have received the receipt of the product purchase and the whole transaction details. But the app crashes after this. Restore purchase for the same product works fine.Below is the crash log and snapshot::Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM removeObjectForKey:]: key cannot be nil'**
1
0
483
Mar ’17
WatchKit - Check in-app purchase made on iOS
Hello,This is a follow up question to another question I asked. I have added a pro version in-app purchase to my iOS that will unlock some features on the Watch app. Currently I sent an updateContext to the Apple Watch to tell it that the pro version was purchased. I also use NSUserDefaults on both devices to save the purchase (as a bool == true)This works fine but has some limitations:- The Watch has to be paired when the purchase is made - Deleting the Watch app will require the user to restore the inapp purchase on his iOS app for the context to get resent- A few more scenarios but I wont go into detailSo I'm thinking to check the in-app purchases on Watch app launch. I can still keep the updateContext functionality as it causes no real harm but I would like to check at launch for in-app purchases.Is the correct way of doing this pretending to restore purchases on Watch app and doing what needs to be done in the paymentQueueRestoreComp
9
0
1.8k
Oct ’15
Reply to StoreKit 2 in-app purchase restore
You recommended watching the video Implementing proactive in-app purchase restore. I've already watched that a few times. I think I'm doing exactly what it recommends and it is not enough to get my app past App Review. My in-app purchase is the simplest possible case. It is a one-time, non-consumable purchase that simply unlocks some functionality in my app. The part of my code that enables making the purchase and unlocking functionality is working perfectly. I just don't have the part to restore previous purchases working. I bet the solution is less than 10 lines of code. It's maddening that I can't find a working example online.
Topic: App & System Services SubTopic: StoreKit Tags:
Sep ’22
Reply to Receiving transaction that is not present in the receipt (auto-renewing subscriptions)
They are not necessarily invalid. They are what you know they are - a repurchase (or restore) of a subscription that was already purchased by that user. Actually, they are a repurchase (or restore) of the subscription on the user's device A of a subscruption that was previously purchased on device B. Focus on the receipt. If the receipt indicates the user has a valid subscription then give it to them. The app also knows whether the call to updatedTransactions that generated your confusing transaction.transactionID is a 'purchase' transaction (i.e. a repurchase for free) or a 'restored' transaction (i.e. restoreCompletedTransactions). If your concern is whether or not you are being scammed then use on board decoding using OpenSSL. Because it uses identifierForVendor as part of the signature block, it is the only secure way of verifying receipts, IMHO.
Topic: App & System Services SubTopic: StoreKit Tags:
Oct ’18
Reply to Non-renew subscription and receipt?
Rich,My understanding is an app using the iCloud Key/Value store can't tell whether the user is logged into iCloud or not. I checked with a test app that is provisioned for the key/value store and syncs correctly with other devices, but the [NSFileManager defaultManager].ubiquityIdentityToken value is nil. The app has Key-Value storage enabled as a capability but not iCloud Documents so I reason this is understandable.So what is the recommended startegy for supporting Apple's requirement to make NRS available on all the users devices?The only bullet proof strategy (beyond providing one's own server/backend to support persistence - adding the hassle of yet another account for the user) would seem to be to refresh the app-receipt and figure out the subscription status from the receipt.Should an app using NRS provide a restore purchases button that utilizes the app store receipt and is this process then going to be accepted by the app review team?ThanksStu
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Oct ’15
In-app purchases are not transferring from Mac to iOS App Stores
Our app is a Catalyst app with a single non-consumable in-app purchase. Over the last few weeks we've had a number of users complaining that they've purchased the app on macOS but when they come to restore the same purchase on their iOS devices, our app tells them that there's No purchase found to restore. This is the code that is giving the message: public func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { guard queue.transactions.count > 0 else { self.setError(text: No purchase found to restore) return } ... So the delegate function is getting called, but the transaction queue is empty. We never have problems with iOS purchasers restoring purchases to iOS devices. Nor do we have issues when macOS purchasers restore to macOS devices. It's only an issue when macOS purchasers restore to iOS devices. We now advise users experiencing this issue to go throu
Replies
6
Boosts
0
Views
1.6k
Activity
Oct ’22
Reply to Purchases not always works
And on the iPhone 6s....if you delete the app, reinstall under a specific Apple ID, purchase the IAP under that Apple ID, delete the app, resinstall without changing Apple ID and then restore - does it restore? Perhaps the Apple ID on the 6S is different from the Apple ID used to purchase the IAP on the other devices.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Dec ’16
Reply to When does Restore button need to appear?
The issue is that you have no way of knowing if a user has already subscribed when that user a) gets a new device and downloads the app to that new device or b) deletes the app and reinstalls it. That user does not want to tap a purchase button and only then receive a you already purchased the subscription, it will be downloaded for free response. They are afraid that if they tap the purchase button they will be told thanks for the $4.99 purchase not you already..... They want to see a restore button next to that purchase button.And yes.....while the subscription is active we don't show either button, neither subscribe nor restore.
Replies
Boosts
Views
Activity
Apr ’18
StoreKit returns restored for SKUs marked Consumable (no purchase sheet); Flutter in_app_purchase + SK2
What platform are you targeting? And what version? iOS, testing in Sandbox on a physical device. What version of Xcode are you using? [Xcode __] What version of the OS are you testing on? iOS 18 on iPhone 15 pro. What specific API are you using? StoreKit 2 via Flutter’s in_app_purchase plugin (Dart), which uses in_app_purchase_storekit under the hood. What are the exact steps you took? In App Store Connect, I created several Consumable IAPs (status “Ready to Submit”). Example product IDs: USD3.99TenMinuteCoffeePlan (Consumable) USD24.99OneHourDinnerPlan (Consumable) USD14.99InviteAFriendAsGenie (Consumable) Signed in as a Sandbox tester on device (Settings → App Store → Sandbox Account). App queries products with InAppPurchase.instance.queryProductDetails(ids) — products load successfully. Call buyConsumable(purchaseParam: PurchaseParam(productDetails: ...)). Listen to purchaseStream and log PurchaseDetails. If something failed, what are the symptoms? The purchase sheet often does not appear. The purchase
Replies
0
Boosts
0
Views
187
Activity
Sep ’25
Disable restore IAP when same Apple account but different user account in application
In my app I have items to show just for users that are paying subscription. User can log to app by e-mail and password and can logout and on same device can log different users. Just classic custom account system. My problem is that Apple Id in phone is still same. So when different user logged in he could restore purchases even that he didn't buy them. So my question is how can I fix it? How can I connect Apple account to my custom account? Or at least somehow when trying to restore IAP check that this Apple account already have this subscription but different user was logged in. How other apps do this?
Replies
1
Boosts
0
Views
459
Activity
Feb ’22
In App Purchase cross platforms
Hello Apple Dev Team, I’m seeking guidance on how to ensure full compliance with the App Store Review Guidelines, specifically section 3.1.1 (In-App Purchase). In-App Purchase Mechanisms: I want to verify that my app is correctly using in-app purchases to unlock premium content, rather than alternative mechanisms. The guidelines outline various restrictions on unlocking content (e.g., license keys, QR codes, cryptocurrency). If I follow all of these restrictions, would Apple require anything else specific to prove compliance? Subscription Handling Across Platforms: Our app plans to offer a subscription service where users could subscribe on Android and then access the content on iOS with the same credentials (similar to Netflix). Users should also have the option to manage (including canceling) their subscription directly from their iOS device. Are there any specific requirements or precautions I should take to facilitate this cross-platform subscription access while remaining compl
Replies
0
Boosts
0
Views
507
Activity
Oct ’24
Reply to subscription sandbox
restoreCompletedTransactions will restore any previous purchased IAP.A purchase and a restoreTransactions will each generate a transaction in the queue. These transactions will remain in the queue until you call finishTransaction on each transaction.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Feb ’20
Reply to Variable trial lengths for the same subscription?
What is supposed to happen if they own multiple devices and try to restore that purchase on a different device?
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Sep ’17
Reply to How can I manage dynamic content with In-App Purcahse ?
You can use the user's iCloud key-value file to record their purchases and restore them to other devices logged into the same iCloud account. A device that needs to 'restore' does not have access to the receipt.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Feb ’17
App crashes after purchasing auto renewable purchase with trial.
Hi All,I have been trying to implement auto renewable subscription(ARS) with trial period. I already had an app with ARS implemented and it was working fine. Now I wanted to add trial period as well in these subscriptions. So for testing purpose I created two new products with trial period of 1 month set in them.Now in sandbox environment, when I try to purchase these two new products from a sandbox Id from which I already had taken the subcription, the process goes smoothly without any issue. But when I try to purchase them with a new sandbox account, app crashes after reaching updatedTransaction observer method. In this method, I have received the receipt of the product purchase and the whole transaction details. But the app crashes after this. Restore purchase for the same product works fine.Below is the crash log and snapshot::Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM removeObjectForKey:]: key cannot be nil'**
Replies
1
Boosts
0
Views
483
Activity
Mar ’17
WatchKit - Check in-app purchase made on iOS
Hello,This is a follow up question to another question I asked. I have added a pro version in-app purchase to my iOS that will unlock some features on the Watch app. Currently I sent an updateContext to the Apple Watch to tell it that the pro version was purchased. I also use NSUserDefaults on both devices to save the purchase (as a bool == true)This works fine but has some limitations:- The Watch has to be paired when the purchase is made - Deleting the Watch app will require the user to restore the inapp purchase on his iOS app for the context to get resent- A few more scenarios but I wont go into detailSo I'm thinking to check the in-app purchases on Watch app launch. I can still keep the updateContext functionality as it causes no real harm but I would like to check at launch for in-app purchases.Is the correct way of doing this pretending to restore purchases on Watch app and doing what needs to be done in the paymentQueueRestoreComp
Replies
9
Boosts
0
Views
1.8k
Activity
Oct ’15
Reply to StoreKit 2 in-app purchase restore
You recommended watching the video Implementing proactive in-app purchase restore. I've already watched that a few times. I think I'm doing exactly what it recommends and it is not enough to get my app past App Review. My in-app purchase is the simplest possible case. It is a one-time, non-consumable purchase that simply unlocks some functionality in my app. The part of my code that enables making the purchase and unlocking functionality is working perfectly. I just don't have the part to restore previous purchases working. I bet the solution is less than 10 lines of code. It's maddening that I can't find a working example online.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Sep ’22
Reply to Is "Restore" button required for apps offering auto renewable subscriptions?
You need a method of restoring the subscription to a new device purchased by the user who has a subscription. If your app requires that the user have a user account, and through that user account they can restore, then you do not need another means.
Replies
Boosts
Views
Activity
Jun ’19
Reply to Receiving transaction that is not present in the receipt (auto-renewing subscriptions)
They are not necessarily invalid. They are what you know they are - a repurchase (or restore) of a subscription that was already purchased by that user. Actually, they are a repurchase (or restore) of the subscription on the user's device A of a subscruption that was previously purchased on device B. Focus on the receipt. If the receipt indicates the user has a valid subscription then give it to them. The app also knows whether the call to updatedTransactions that generated your confusing transaction.transactionID is a 'purchase' transaction (i.e. a repurchase for free) or a 'restored' transaction (i.e. restoreCompletedTransactions). If your concern is whether or not you are being scammed then use on board decoding using OpenSSL. Because it uses identifierForVendor as part of the signature block, it is the only secure way of verifying receipts, IMHO.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Oct ’18