Posts

Post not yet marked as solved
17 Replies
HI, thanks for responding.I don't know if the machine came with the supplemental update or not, I know that I didn't install it.A week after I received this 16" MBP (which showed the problems on day 1), my 12" MacBook (running macOS 10.15.4) also started to show the same behavior, without the supplemental update being installed (I am pretty sure that auto update is switched off).On Day 11 (of having this machine), DTS confirmed that there is a issue or two (after taking lots and lots of logging information). I have now returned the 16" MacBook Pro, and arranged for ACS to redirect this machine to DTS, as it constantly reproduces both of these issues.As my app continues to work correctly on macOS 10.14.6 and below, I am now in the process of submitting it for review.
Post not yet marked as solved
17 Replies
Thank you for your response.> If the 'for free' is in there it is either an App Store bug or a code bug in which you are issuing a paymentRequest for a non-consumable without realizing it.I have verified each time I attempt the purchase that it is purchasing the non-renewing subscription. I only added the non-consumable to test with later, once the issue first started appearing. With the log files that I have supplied to DTS, they have confirmed that the failure (I am expereincing) is occurring for the non-renewing subscription.> You cannot do a restoreCompletedTransactions for a non-renewing subscription. If there are no non-consumable IAPs or autorenewable IAPs to restore, the receipt is not refreshed. You must either do a receipt referesh and decode the receipt (although I wonder if this really works on new devices - I have not tried it) or you can use your own technique for restoring the subscription to other devices owned by the user (and iCloud key-value is easy).So far in my testing, I have not been experiencing this behavior. When ignoring any receipt verification on startup, and calling restoreCompletedTransactions the non-renewable subscriptions appear in the receipt that is then inserted by (I assume) StoreKit.Right now, my guess is that it's combination of issues that have to be lined up. I am assuming it's an issue within macOS 10.15.4 (or maybe broader) and potentially an issue with the App Store servers. As indicated by it working correctly on older OS versions, but failing on different machines running 10.15.4 (albeit taking a week for the issue to progate to start occuring on an existing machine).I realize that you may be skeptical because I am experiencing different behaviors to you, and this may actually be a clue, so I will forward this information on to DTS.
Post not yet marked as solved
17 Replies
Thank you for your response.I have only been dealing with non-renewing subscriptions since Apple informed me to do so on March the 28th 2020, until then I had only experience with non-consumables and auto-renewing subscriptions.> Your app is responsible for restoring non-renewing subscriptions. The easiest way to do that is through the user's iCloud key-value file.This is not the behavior that I have been experiencing, nor have I been recommended to do so by DTS. Non-renewing subscriptions have been appearing in the receipt, since I started working with them.> Another approach is to refresh the receipt and use that information.I have attempted this to see if it would help. Sadly it didn't, neither did restoreCompletedTransactions.> You wrote "extend a non-renewing subscription" - what does 'extend' mean???? restoreCompletedTransactions? No such thing for a non-renewing subscription.In my expereince; when a user attempts to purchase a non-renewing subscription item for the subsequent time (on macOS 10.14.6 & 10.11.6), they are given the option to "Extend" the subscription, upon accepting, a new item is transferred with the current date & time. The new item is also written to the receipt. Since the day this 16" MBP arrived, it has not offered to extend the subscription, instead only offering to restore the previous item for FREE. Also when the 16" MBP first arrived, t'other 10.15.4 machine was working like the 10.14.6 & 10.11.6 machines, but that changed this weekend and now it is also not able to "extend" a non-renewing subscription.> It is unlikely this is the response you get from a purchaseRequest for a non-renewing subscription. I suspect this is from a purchaseRequest for a non-consumable IAP - is that possible?In attempts to gather further information to help narrow down the cause the of the issue, I have tested with a non-consumable item, and this is how they appear to work. As 75% of the machines **were** offering to extend the non-renewing subscription, I believed that this is the correct behavior.I have been in touch with ACS since last monday and finally got through to DTS later in the week. I am continuing to perform various tests and providing logging information to DTS. The exact cause of the issue has yet to be determined.Today I am going to see if ACS will extend the return period on this machine as I have been unable to use its intended purpose (macOS app development, specifically for this latest round of changes to IAP handling). Apple can see that I am working with their various departments in regards to this problem.
Post not yet marked as solved
17 Replies
Update.1. I have created and tested with a new testing account [no change].2. 2015 12" MacBook running macOS 10.15.4 continues to extend non-renewing subscriptions, but has now started showing the endless log-in loop when calling finishTransaction.3. 2020 16" MacBook Pro will still not extend an non-renewing subscription (returns an existing item) and continues to show endless log-in loop after calling finishTransaction.4. When the endless log-in loop in going, it does not display the application icon, meanwhile the first request to log-in does.5. 2012 15" MacBook Pro with macOS 10.14.6 extends the non-renewing subscription and DOES NOT fall into the endless log-in loop after calling finishTransaction.I now believe that the endless log-in loop is an issue in the macOS, especially as it's started occurring on a second machine running 10.15.4. Because the log-in loop doesn't appear to actually affect purchases, and looking in this forums, appears quite wide spread, I do not consider it a major issue. However the problem that's preventing purchases from occurring is still present and that IMHO is a major issue.Problem:Attempting to extend a non-renewing subscription fails on this brand new 16" MacBook Pro running macOS 10.15.4What should happen:The user should be asked to extend the non-renewing subscription, and a new item is then issued through the App Store IAP API.What actually happens:The user is informed that the item has already been purchased and it will be restored for FREE. An existing item is then issued through the App Store IAP API.Reproduction steps:1. Download the sample code from https://developer.apple.com/documentation/storekit/in-app_purchase/offering_completing_and_restoring_in-app_purchases?language=objc2. Make sure you have an IAP item configured in App Store connect, that is a non-renewing subscription.3. Add your product identifier to the project and the IAP item identifiers to the productIDs.plist file.4. Run the project and purchase the non-renewable subscription.5. Attempt to purchase the non-renewing subscription a second time, if you are told that you've already purchased this item and it will be restored for FREE, this is the show stopping issue with this 16" MacBook Pro.
Post not yet marked as solved
7 Replies
I've been facing a similar problem, whereby when I call finishTransaction it sends my app into an endless log-in loop, but only on a brand new 16" MacBook Pro running macOS 10.15.4. I also cannot extend a non-rewable subscription on this machine, while other machines do not exhibit this behavior, including one which is also running macOS 10.15.4.I have spent over a week trying to debug this issue, working with Apple's DTS & Customer Support (because this 16" MBP arrived on the 4th of April). The last message I received from DTS indicates that they think this may be a hardware issue with the machine.I see many others who're having similar issues, I can't help but wonder if this problem is either at their server or maybe with the last few OS updates, or maybe even both.I hope that this gets resolved shortly, if our customers encounter these problems, they'll instantly blame us developers, and we'll lose business over this.
Post not yet marked as solved
7 Replies
This is Apple's sample code for IAP.https://developer.apple.com/documentation/storekit/in-app_purchase/offering_completing_and_restoring_in-app_purchases?language=objc
Post not yet marked as solved
17 Replies
For me personally, the problems only started when I received this 16" MacBook Pro running macOS 10.15.4 on April the 4th. I spent the entire weekend trying various things to resolve it myself (see above).The problem doesn't occur on the following machines.* 2015 12" MacBook running macOS 10.15.4.* 2012 15" MacBook Pro running macOS 10.14.6.* 2009 17" MacBook Pro running macOS 10.11.6.For one of the tests, I added a new non-consumable product and attempted to purchase it on the 16". The first time worked, the second time it got stuck in the endless loop. Again performing the same test on t'other 3 machines works.Feedback report: FB7657917DTS case # 101060342886As it's a brand new machine I also have an AppleCare case # 101060171758
Post not yet marked as solved
17 Replies
Further information:I have now tested this on a 2009 17" MacBook Pro running macOS 10.11.6, this fault doesn't occur there either.I have added a non-consumable IAP item and was able to purchase this item on the 16" MacBook Pro without a problem. The IAP item that I'm having problems with is a non-renewing subscription.In a final test, I tried to repurchase the non-consumable item again. As expected it offered to restore the item for FREE, then it got stuck in the log-in loop.Attempting to re-purchase the non-consumable item on the other machines, works as expected.Another thing that I've noticed, is that IAP transactions or at least the display of dialogs are much slower on the 16" MacBook Pro than other machines. Running speedtest.net in a browser, shows that download speed is 4x times faster than a 2012 MacBook Pro, while upload speed is about the same, the speedtest.net upload indicator would hesitate for a few seconds, while the other machines would continue to animate. I realize that this is not an actual indicator of an issue with the MacBook as it could be a lot of things.I now beleive this problem is actually two issues.1. Trying to extend a non-renewing subscription (on the 16" MacBook Pro), returns an existing IAP transaction instead of a new one.2. Trying to call finishTransaction on an SKPaymentTransaction that is being purchased a subsequent time, sends the machine into a log-in loop.
Post not yet marked as solved
1 Replies
I am having a similar problem with finishTransaction, but only on a brand new 16" MacBook Pro. I've now tested it on 3 other machines and it works on those. I am awaiting a response from Apple's DTS.In my case, the 16" MacBook Pro is returning an existing transaction to the queueUpdated event, the other machines are return new transactions.Are you using a 16" MacBook Pro?Below is a link to my thread.https://forums.developer.apple.com/thread/131110
Post not yet marked as solved
6 Replies
Not that I can help you with this, except to say that there's others reporting the same issue, just using non-Apple channels to do so.Check out https://twitter.com/stroughtonsmith
Post marked as solved
12 Replies
When developing for Auto-Renewal; this was a common problem that I ran into. I wouldn't always receive all 6 transactions. More often I'd receive just the first one, then nothing else. Sometimes it would 3 or 4.In the end I re-wrote my whole system with the aim of capturing enough information to try to determine if this was my problem or Apple's. I stored the date and time of the last unexpected restored transaction, (you know when the user has tried a restoredCompletedPurchases as you request that, so when you get a restoredTransaction that wasn't trigger by this, then it's highly likely it's a Auto-Renewal).I then displayed a screen to the user, showing this information and when the receipt was last updated. I then offered the user a series of numbered options.1. Restore Purchases.2. Refresh Recipt.3. Manually Renew.4. Contact us.When the user clicked on Contact Us, it provided all this information and a human readable version of IAP transactions in the receipt, also what steps the user had tried to get this to work. I used a mailto: url, which would then create an e-mail in the users prefered e-mail client, allowing the user see exactly what information is being shared with us.I never got to see how this performed in the real world as Apple rejected my usage of Auto-Renwal and told me I need to make it non-Renewal Subscriptions, to which I'm currently stuck as on a brand new 16" MacBook Pro I can't renew a subscription.> When exactly should the renewal transaction arrive on the SKPaymentQueue?I found when it works, the only time I received a transaction was on application launch. But it can take several minutes to proogate.Hope that this helps.
Post not yet marked as solved
17 Replies
Thanks for responding to my post.In my SKPaymentTransactionObserver delegate,I receive the event "paymentQueue:updatedTransactions:".I process the array of transactions and read their status.If it encounters the status "purchased", I then unlock the application.I call transactionFinished for everything but "purchasing" and "deffered" transactions.On t'other two machines.After calling paymentWithProduct on the defaultQueue, the second dialog asks me if I want to extend the subscription. Click "OK".On quitting and relaunching the application, the app reads the new item from the receipt and carries on.On this 16" MacBook Pro.After calling paymentWithProduct on the defaultQueue, the second dialog tells me that I've already purchased this item and it will be restored for free. Click "OK".Moments after calling "finishTransaction", I get asked to login, it's auto populated the account e-mail, so I enter the password and click Login. The dialog goes away, only to re-appear shortly after. The most # of times I tried this was 30, before clicking on Cancel.On quitting and relauching the application, there's no new item in the receipt, so the application reverts back to it's "Subscription Expired" state. Once again asking the user to Renew their subscription.Now one time on Sunday night (after clearing all the App Store caches I could find), the 16" MacBook Pro did *almost* work correctly, I got the dialog asking if I wanted to extend the subscription. Clicked "OK" and still got stuck in the Log-in loop, but on cancelling the loop, the new transaction was written to to the receipt.In both cases the "paymentQueue:removedTransactions:" event fires with the transaction.I hope that this all makes sense. I have several concerns.1. Why does this only happen for this one machine out of three (same account) even same OS?2. Does this mean that this 16" MacBook Pro is somehow faulty, I have until the 18th of April to swap it for another one?3. If this happened to me, I must assume it can happen to a customer, so I need to prepare for it somehow and hopefully offer a suggestion to the user to help resolve it.
Post not yet marked as solved
17 Replies
I've now obliterated the SSD & performed a clean installed macOS 10.15.4. Reset NVRAM & PRAM.The problem continues to occur on a clean factory default setup.Just to be sure, I've also tested it on a different network and no change.I suspect now that I have a dud MacBook Pro.
Post not yet marked as solved
8 Replies
Thanks Frank,I'll have a play with it as soon as I can get back into working on this project.Any ideas (apart from Tiling) for what I can try if this doesn't solve the problem? I am thinking that there's potentially something wrong with the install of macOS 10.14.6 on this customers machine and that his GPU driver is borked.However I am very hesitant to ask the customer to re-install his OS, incase it's not or for it to cause the customer more problems. Which is why for this function, I've been gradually replacing the Core Image with C++ via GCD, the conversion to the sRGB Tone Curve is the last function that I have to convert.