Post

Replies

Boosts

Views

Activity

Bug: Active Paid Subscriptions plummeted on March 19th
I assume this is just some temporary error that will resolve itself but in App Store Connect > Trends > Subscriptions > Summary my number of Active Paid Subscriptions just tanked, so March 19th # is 74% less than March 18th # of subscribers. More than half of my subscribers are on an annual basis not renewing for a long time so no way it could drop like that. The breakdown on subscription type (1m, 3m, 6m and 1y) also shows a massive drop in subscriber numbers across all time lengths. All other numbers look normal, i.e. I should have added subscribers on the 19th, not lost them, based on the events tab. Just posting to make sure this gets noticed and resolved quickly. About to go through due diligence with a venture capital company so don't want due diligence process to have a negative result since the numbers suddenly don't add up!!! Thanks!
2
1
96
Mar ’25
Discrepancies for payment Period 9 (June 2-29) August 1st payment
For the periods of time covered by the previous two payment periods (#7 and #8), everything is looking close enough (# of units sold don’t match up and proceeds off by a few % points even when using Apple’s exchange rate but nothing to worry about). For the August 1st payment though (period 9 covering June 2nd - June 29th), there is a larger discrepancy between units sold and proceeds during that time period and the estimated payment coming tomorrow (August 1st). Anyone else experiencing this? Did it get resolved with the actual payment (I'll see mine in my account in a few days). My proceeds for period 9 (based on data from App Store Connect > Trends > Proceeds with date range June 2nd - June 29th) were $1,227.83 USD. Under Trends > Units > Transaction Type I have 100 units “Paid” and 2 units “Refund”, so 98 units counting towards proceeds I would assume. In Payments and Financial Reports for the month of June though (which I assume matches Period 9 June 2-29), I am seeing only 65 total units sold (not 98) and the total estimated proceeds are $1,203.29 Canadian or roughly $872 USD. So $355 USD less than my proceeds would indicate and 33 units less. Note that I have two apps with multiple time periods for subscriptions so the dollar value of each unit is all over the place. I was expecting $1,668 Canadian or so (using the 1.36 exchange rate Apple shows in the estimated payment * the proceeds shown of $1,227.83 USD), not $1,203 Canadian. There weren't a flood of sales on June 1st/2nd or June 29th/30th so I don't think this is caused by timezone differences or anything like that. I’m using https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wa/jumpTo?page=fiscalcalendar to determine dates for August 1st payment. Perhaps the payment tomorrow will be 38% higher than the estimate but that would seem way off. Period 7 “April” Mar 31 - May 4: Trends > Proceeds indicates 13 units for $107 USD * 1.37 Apple exchange rate = $146 Canadian Actual payment: $135.46 Canadian with 8 units Period 8 “May” May 5 - June 1: Trends > Proceeds indicates 55 units for $640 USD * 1.37 Apple exchange rate = $876 Canadian Actual payment: $855.59 CAD with 49 units
14
3
1.7k
Aug ’24
StoreKit2: .purchase() not working after expiry of subscription in app, but renewing in AppStore sandbox does...
Hi, thanks for reading my question. I need help with some odd behaviour with product.purchase() not triggering a confirmation dialog after a subscription has expired and trying to purchase it again. Seeing this in iOS 16.2 and 15.7.2 (haven't tried any other versions) on actual devices, not in simulator. I'm using a sandbox user on the sandbox environment (not using the local store kit config file testing option). Using a newly created sandbox user, first subscription purchase goes through just fine, dialog box pops up, login with sandbox user, get confirmation of purchase and then Transaction.currentEntitlements has one item as expected. It auto renews for 12 times (each time Transaction.currentEntitlements contains the correct results) and then expires, as expected for sandbox. Transaction.currentEntitlements is then also empty, as expected. All good so far. Now I want to test purchasing it again...Call product.purchase() again to renew/start a new subscription and nothing happens, no confirm purchase dialog box pops up at all. The purchase function simply exits BUT returns success (as in the following gets called) but in self.updatePurchasedProducts(), Transaction.currentEntitlements is empty. case let .success(.verified(transaction)):      // Successful purchase       await transaction.finish()      await self.updatePurchasedProducts() if I instead go to Settings->App Store->Sandbox User-> Manage Subscriptions and renew the subscription there, instead of in my app, then Transaction.currentEntitlements has a new entry and all is good again. Alternatively, if I create yet another new sandbox user and logout of the old one I was using, I am once again able to purchase from within the app, so .purchase() once again works as normal. Is there something I am missing about expired subscriptions and trying to purchase them again in the app? Is this a sandbox issue and in production I'll have no problem? The sandbox user has purchasing enabled in Settings->App Store. I've also tried calling AppStore.sync() (which is in my "Restore Purchase" button) before calling product.purchase() after the subscription stops renewing, expires and this issue comes up, doesn't resolve it. Also have a less important question, the initial call to product.purchase(), the one that works as expected, has a bit of a delay before the confirmation dialog pops up, a few seconds, which will probably result in the user clicking the buy button again thinking it didn't work. Is a bit of a delay normal for sandbox? Will it be ok in production? When it fails, and I have to renew in Settings->AppStore->Sandbox user, there's also a bit of a delay after I return to my app, 5-15 or so seconds, before the transaction observer fires and currentEntitlements is checked again, is there a way to reduce this delay? Thank you! Colin @MainActor class IAPManager: NSObject, ObservableObject {  // removed other functions.....   func purchase(_ product: Product) async throws {    let result = try await product.purchase()     switch result {    case let .success(.verified(transaction)):      // Successful purchase       await transaction.finish()      await self.updatePurchasedProducts()    case let .success(.unverified(_, error)):       break     case .pending:       break     case .userCancelled:       break     @unknown default:       break   } }  func updatePurchasedProducts() async {     for await result in Transaction.currentEntitlements {       guard case .verified(let transaction) = result else {         continue       }       if transaction.revocationDate == nil {         self.purchasedProductIDs.insert(transaction.productID)       } else {         self.purchasedProductIDs.remove(transaction.productID)       }     }   } }
14
8
11k
Apr ’25