Search results for

“restore purchases”

22,005 results found

Post

Replies

Boosts

Views

Activity

Correct Filepaths for Restoring Apple-Hosted Content
Greetings folks, I'm implementing logic for restoring my app's non-consumable purchases, but I seem to be hitting a roadblock. It seems my app is looking for the original .zip file that was downloaded from Apple's hosted content servers in the first transaction. But of course, I'm deleting this file after the initial download is completed and the files are transferred out of the Caches directory. So now when this function is called upon trying to restore purchases, the content is not restored. Here's my processDownload function that gets called when active downloads polled in paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) are updated to SKDownloadState.finished language public func paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) { for download in downloads { switch download.state { case SKDownloadState.active: let p = downloadProgress_ + download.contentIdentifier NotificationCenter.default.post(name: NSNotifi
0
0
347
Mar ’21
How to resolve an unknown error for restoring subscriptions on macOS Monterey?
While reviewing our app to prepare for macOS Monterey, I noticed an error when restoring purchased subscriptions. The error is issued via the following log method: - (void)paymentQueue:(SKPaymentQueue*)queue restoreCompletedTransactionsFailedWithError:(NSError*)error The error is the following: Error Domain=SKErrorDomain Code=0 UNKNOWN_ERROR UserInfo={NSLocalizedDescription=UNKNOWN_ERROR, NSUnderlyingError=0x600003c9b690 {Error Domain=ASDErrorDomain Code=950 Unhandled exception UserInfo={NSLocalizedDescription=Unhandled exception, NSLocalizedFailureReason=An unknown error occurred}}} Is this error known? Has the API for macOS Monterey changed? How can we solve that issue?
1
0
1.2k
Jun ’21
Using iCloud to restore non renewing subscription
Hi everyone!I'm developing my app and I have one doubt about using iCloud for restoring non renewing subscriptions.I was reading about restoration on this document (https://developer.apple.com/in-app-purchase/In-App-Purchase-Guidelines.pdf) and on the 7th page it says:Use iCloud or your own server to track purchases and allow user to restore purchased subscriptions to all iOS devices owned by a single userIn my case is much more convenient to use iCloud, but that document does not say anything else about iCloud.Searching for more references, I found this video, which is a bit old(https://developer.apple.com/videos/wwdc/2012/?id=308) and around the 30th minute it says that iCloud is a very convenient way to store the in-app purchase receipts to make the restoration. The video explains a flow on how to make the purchase and the restoration with iCloud. User makes an non renewing in-app purchase, then the app store
1
0
725
Aug ’15
Reply to Proper way to integrate IAP when you can buy non-consumables with virtual currency?
This is not the optimal approach since it involves two purchases by the user and, further, if the user doesn't do the second purchase they lose the restore function. Also, a free IAP is avialable only if you download content for that IAP (I think).It is starightforward to store the 'consumable purchase' information in the user's iCloud key-value file. Then the app can restore itself automatically.
Topic: App & System Services SubTopic: StoreKit Tags:
Oct ’17
Reply to Receipt missing older non-consumable IAPs
I have the same issue but with either non-comsumable or subscription when trying to restore products. I have been through Apples sample code here - https://developer.apple.com/documentation/storekit/in-app_purchase/offering_completing_and_restoring_in-app_purchases . This sample project works fine except when restoring it only identifies the original purchase, so if there is an upgrade in the subscription it cannot be restored. I can only get one transaction out of it which contains the latest transaction number, latest transaction date, original purchased item ID and original purchase date (nothing in between). I am simulating it on xcode StoreKit only. Any help would be appreciated. I can't get the app on the store without a Restore button.
Topic: App & System Services SubTopic: StoreKit Tags:
Jan ’21
Reply to The restore button with non-consumable In-App Purchases
That is great, therefore anytime they login to your app account system you will have a record of that purchase and can essentially auto-restore it. And if an Apple ID attempts to associate that purchase with multiple app accounts you will have the logic to enforce your business policy (ie: if that purchase is allowed to be associated with 1 or more app accounts at a time). As for restoring past purchases, there are cases where this is a great last resort where users may forget their app account and the app receipt may not contain that purchase (could be signed in with different Apple ID, etc.). Thus the App Review requirement still applies as this gives users a safe and consistent way to manually restore any past purchases regardless if they are signed in to your app or not.
Topic: App & System Services SubTopic: StoreKit Tags:
Sep ’21
Reply to Can we use consumable IAP for our use case?
Yes, you can sell packages of a consumable 'credit' or 'currency' or 'tokens' that the user can consume as they purchase a camera feed. You can track it on your server or on the user's iCloud account and use that to restore the purchase to BOTH the original device and ALL OTHER DEVICES owned by that user. Be sure to tell App Review that your condumable IAP enables the purchase of a restore able and permanent feed managed by your server (or iCloud).
Topic: App & System Services SubTopic: StoreKit Tags:
Aug ’16
Reply to Receipts suddenly failing validation
Yesterday, I handled an incident similar to all of yours. One question - do each of your apps validate the receipt locally and on each launch of the app. It would seem coincindental that this failure appeared the same time as that for the Mac App Store application security certifcate problem occurred. My contacts tell me that the Mac App Store issue pertained only to Mac Apps, and should not have occurred with iOS apps. It would have helped to have a specific failure indication, but unfortunately, most apps disable logging for production apps. From a security point of view, this is desirable, however, from a debugging point of view, log statements to the console can provide one with information about the failure.The two methods I hear that work1. Restore purchases, which would update the receipt and2. Reinstall the app, which would also result in the updated receipt.rich kubota - rkubota@apple.comdeveloper technical support CoreOS/Hardware/MFI
Topic: App & System Services SubTopic: StoreKit Tags:
Nov ’15
Reply to Restored transactions' identifier does not be updated in grand unified receipt
>That means the restored transaction ids cannot be found in the receipt.That is correct, the value for transaction.transactionIdentifier in updatedTransactions will refer to that transaction - the one that is restoring the purchase. The transaction_id in the receipt will refer to the transaction that made the actual purchase. When a device does a restore you need to communicate the transactionIdentifier, or some other id that indicates that device, to your server and associate that id to the receipt. The transactionIdentifier won't work since it will not be in the receipt.
Topic: App & System Services SubTopic: StoreKit Tags:
Sep ’17
Reply to Sandbox parent authorization
The call to restoreCompletedTransactions may not work since there may not be an actual completed purchase or it may work and be redundant! You see, right after (or before) you call restoreCompletedTransactions you add the transaction observer and that will do the trick. So.......change the Restore button to a Get purchases button (since the person who is looking for the deferred purchase isn't looking for a Restore button and a person who is looking for a restore button will tap a Get purchases button) and be careful not to respond inappropriately to a duplicate call to updatedTransactions (i.e. one after the add transaction observer and one associated with teh redundant restoreCompletedTransactions).
Topic: App & System Services SubTopic: StoreKit Tags:
May ’17
Reply to Wait until transaction is finished
Somewhat, I followed some YouTube tutorials. I understand that the purchasing state is while it is being purchased, and I understand failed, purchased, and restored. I just don't know where this fits into it.
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
May ’21
Correct Filepaths for Restoring Apple-Hosted Content
Greetings folks, I'm implementing logic for restoring my app's non-consumable purchases, but I seem to be hitting a roadblock. It seems my app is looking for the original .zip file that was downloaded from Apple's hosted content servers in the first transaction. But of course, I'm deleting this file after the initial download is completed and the files are transferred out of the Caches directory. So now when this function is called upon trying to restore purchases, the content is not restored. Here's my processDownload function that gets called when active downloads polled in paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) are updated to SKDownloadState.finished language public func paymentQueue(_ queue: SKPaymentQueue, updatedDownloads downloads: [SKDownload]) { for download in downloads { switch download.state { case SKDownloadState.active: let p = downloadProgress_ + download.contentIdentifier NotificationCenter.default.post(name: NSNotifi
Replies
0
Boosts
0
Views
347
Activity
Mar ’21
How to resolve an unknown error for restoring subscriptions on macOS Monterey?
While reviewing our app to prepare for macOS Monterey, I noticed an error when restoring purchased subscriptions. The error is issued via the following log method: - (void)paymentQueue:(SKPaymentQueue*)queue restoreCompletedTransactionsFailedWithError:(NSError*)error The error is the following: Error Domain=SKErrorDomain Code=0 UNKNOWN_ERROR UserInfo={NSLocalizedDescription=UNKNOWN_ERROR, NSUnderlyingError=0x600003c9b690 {Error Domain=ASDErrorDomain Code=950 Unhandled exception UserInfo={NSLocalizedDescription=Unhandled exception, NSLocalizedFailureReason=An unknown error occurred}}} Is this error known? Has the API for macOS Monterey changed? How can we solve that issue?
Replies
1
Boosts
0
Views
1.2k
Activity
Jun ’21
Using iCloud to restore non renewing subscription
Hi everyone!I'm developing my app and I have one doubt about using iCloud for restoring non renewing subscriptions.I was reading about restoration on this document (https://developer.apple.com/in-app-purchase/In-App-Purchase-Guidelines.pdf) and on the 7th page it says:Use iCloud or your own server to track purchases and allow user to restore purchased subscriptions to all iOS devices owned by a single userIn my case is much more convenient to use iCloud, but that document does not say anything else about iCloud.Searching for more references, I found this video, which is a bit old(https://developer.apple.com/videos/wwdc/2012/?id=308) and around the 30th minute it says that iCloud is a very convenient way to store the in-app purchase receipts to make the restoration. The video explains a flow on how to make the purchase and the restoration with iCloud. User makes an non renewing in-app purchase, then the app store
Replies
1
Boosts
0
Views
725
Activity
Aug ’15
Reply to Proper way to integrate IAP when you can buy non-consumables with virtual currency?
This is not the optimal approach since it involves two purchases by the user and, further, if the user doesn't do the second purchase they lose the restore function. Also, a free IAP is avialable only if you download content for that IAP (I think).It is starightforward to store the 'consumable purchase' information in the user's iCloud key-value file. Then the app can restore itself automatically.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Oct ’17
Reply to Receipt missing older non-consumable IAPs
I have the same issue but with either non-comsumable or subscription when trying to restore products. I have been through Apples sample code here - https://developer.apple.com/documentation/storekit/in-app_purchase/offering_completing_and_restoring_in-app_purchases . This sample project works fine except when restoring it only identifies the original purchase, so if there is an upgrade in the subscription it cannot be restored. I can only get one transaction out of it which contains the latest transaction number, latest transaction date, original purchased item ID and original purchase date (nothing in between). I am simulating it on xcode StoreKit only. Any help would be appreciated. I can't get the app on the store without a Restore button.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jan ’21
Reply to The restore button with non-consumable In-App Purchases
That is great, therefore anytime they login to your app account system you will have a record of that purchase and can essentially auto-restore it. And if an Apple ID attempts to associate that purchase with multiple app accounts you will have the logic to enforce your business policy (ie: if that purchase is allowed to be associated with 1 or more app accounts at a time). As for restoring past purchases, there are cases where this is a great last resort where users may forget their app account and the app receipt may not contain that purchase (could be signed in with different Apple ID, etc.). Thus the App Review requirement still applies as this gives users a safe and consistent way to manually restore any past purchases regardless if they are signed in to your app or not.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Sep ’21
Reply to Consumables acting as non-consumables
Show your code for checking on/restoring previous purchases...
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Aug ’19
Reply to Can we use consumable IAP for our use case?
Yes, you can sell packages of a consumable 'credit' or 'currency' or 'tokens' that the user can consume as they purchase a camera feed. You can track it on your server or on the user's iCloud account and use that to restore the purchase to BOTH the original device and ALL OTHER DEVICES owned by that user. Be sure to tell App Review that your condumable IAP enables the purchase of a restore able and permanent feed managed by your server (or iCloud).
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Aug ’16
Reply to Receipts suddenly failing validation
Yesterday, I handled an incident similar to all of yours. One question - do each of your apps validate the receipt locally and on each launch of the app. It would seem coincindental that this failure appeared the same time as that for the Mac App Store application security certifcate problem occurred. My contacts tell me that the Mac App Store issue pertained only to Mac Apps, and should not have occurred with iOS apps. It would have helped to have a specific failure indication, but unfortunately, most apps disable logging for production apps. From a security point of view, this is desirable, however, from a debugging point of view, log statements to the console can provide one with information about the failure.The two methods I hear that work1. Restore purchases, which would update the receipt and2. Reinstall the app, which would also result in the updated receipt.rich kubota - rkubota@apple.comdeveloper technical support CoreOS/Hardware/MFI
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Nov ’15
Reply to Restored transactions' identifier does not be updated in grand unified receipt
>That means the restored transaction ids cannot be found in the receipt.That is correct, the value for transaction.transactionIdentifier in updatedTransactions will refer to that transaction - the one that is restoring the purchase. The transaction_id in the receipt will refer to the transaction that made the actual purchase. When a device does a restore you need to communicate the transactionIdentifier, or some other id that indicates that device, to your server and associate that id to the receipt. The transactionIdentifier won't work since it will not be in the receipt.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Sep ’17
Reply to restoreCompletedTransactions not working on real device
So it is reasonable to speculate that the App Store is not restoring the purchase because it has no record of the purchase. Are you sure the currently logged in iTunes Account has actually made a purchase (with or without the redeem code)?
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Apr ’18
Reply to Non Renewing Subscription needs Restore button?
You can use you server to 'restore' the purchase - but there is nothing to 'restore'. You can use your server to allow the user to copy the subscription to other devices owned by that user.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Nov ’16
Reply to Sandbox parent authorization
The call to restoreCompletedTransactions may not work since there may not be an actual completed purchase or it may work and be redundant! You see, right after (or before) you call restoreCompletedTransactions you add the transaction observer and that will do the trick. So.......change the Restore button to a Get purchases button (since the person who is looking for the deferred purchase isn't looking for a Restore button and a person who is looking for a restore button will tap a Get purchases button) and be careful not to respond inappropriately to a duplicate call to updatedTransactions (i.e. one after the add transaction observer and one associated with teh redundant restoreCompletedTransactions).
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
May ’17
Reply to in-app purchase failed on Testflight
Same here, Sandbox restore and purchase works, Testflight not.
Replies
Boosts
Views
Activity
Apr ’20