Post

Replies

Boosts

Views

Activity

Reply to Expired intermediate certificates in StoreKit 2 JWS
checking the signedDate field I can see that the specific example transaction I am looking at was signed 2023-09-12. So I guess technically the certificate was valid when it was signed. I would need some more time to investigate signed dates of other transactions that were failing. The problem is that this is for an annual subscription that is valid for 10 more months so the server may very likely re-check the transaction again if it is sent up from the client. I just assumed that either transactions would get re-signed or that the certificate expiry would be far enough in the future that this wouldn't be an issue. If I am understanding correctly it seems like we need to be checking that the signedDate is within the window of certificate validity rather than the current date. Does that sound right?
Topic: App & System Services SubTopic: StoreKit Tags:
Sep ’23
Reply to StoreKit 2 transactions listener not working
We also are seeing something similar to this. On macOS it seems like for some customers that the Transaction.updates sequence returns immediately. The result of this is that they must then restore purchases to regain access. Using code similar to the below: Task.detached(priority: .background) { logger.log("starting listening for transaction updates") defer { logger.warning("stopped listening for transaction updates") } for await verificationResult in Transaction.updates { logger.log("processing transaction update") ... } } } I can see this in logs from some customers that "stopped listening for transaction updates" gets logged almost immediately after "starting listening for transaction updates". I can't see any errors thrown so I'm still unable to to figure out under what conditions this happens. My first guess was maybe them being signed out of the App Store but I was unable to reproduce this at all in testing.
Topic: App & System Services SubTopic: StoreKit Tags:
Jul ’23
Reply to Is it possible to share an app group between Catalyst and AppKit Apps?
Thanks Quinn, this helped me get it working. Just to note two additional things that I found confusing in the process. The defaults command line tool doesn't really help here, as far as I can work out it can't be used with App groups. When using defaults read group.UUU myKey I get The domain/default pair of (group.UUU, myKey) does not exist Is that expected? The Mac Native side logs a scary message when trying to access values, but does in-fact seem to find the value still. Not sure how concerned I should be able this. [User Defaults] Couldn't read values in CFPrefsPlistSource<0x600003978680> (Domain: group.UUU, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
Topic: Code Signing SubTopic: Entitlements Tags:
Jun ’22
Reply to Expired intermediate certificates in StoreKit 2 JWS
checking the signedDate field I can see that the specific example transaction I am looking at was signed 2023-09-12. So I guess technically the certificate was valid when it was signed. I would need some more time to investigate signed dates of other transactions that were failing. The problem is that this is for an annual subscription that is valid for 10 more months so the server may very likely re-check the transaction again if it is sent up from the client. I just assumed that either transactions would get re-signed or that the certificate expiry would be far enough in the future that this wouldn't be an issue. If I am understanding correctly it seems like we need to be checking that the signedDate is within the window of certificate validity rather than the current date. Does that sound right?
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Sep ’23
Reply to StoreKit 2 transactions listener not working
We also are seeing something similar to this. On macOS it seems like for some customers that the Transaction.updates sequence returns immediately. The result of this is that they must then restore purchases to regain access. Using code similar to the below: Task.detached(priority: .background) { logger.log("starting listening for transaction updates") defer { logger.warning("stopped listening for transaction updates") } for await verificationResult in Transaction.updates { logger.log("processing transaction update") ... } } } I can see this in logs from some customers that "stopped listening for transaction updates" gets logged almost immediately after "starting listening for transaction updates". I can't see any errors thrown so I'm still unable to to figure out under what conditions this happens. My first guess was maybe them being signed out of the App Store but I was unable to reproduce this at all in testing.
Topic: App & System Services SubTopic: StoreKit Tags:
Replies
Boosts
Views
Activity
Jul ’23
Reply to Is it possible to share an app group between Catalyst and AppKit Apps?
Thanks Quinn, this helped me get it working. Just to note two additional things that I found confusing in the process. The defaults command line tool doesn't really help here, as far as I can work out it can't be used with App groups. When using defaults read group.UUU myKey I get The domain/default pair of (group.UUU, myKey) does not exist Is that expected? The Mac Native side logs a scary message when trying to access values, but does in-fact seem to find the value still. Not sure how concerned I should be able this. [User Defaults] Couldn't read values in CFPrefsPlistSource<0x600003978680> (Domain: group.UUU, User: kCFPreferencesAnyUser, ByHost: Yes, Container: (null), Contents Need Refresh: Yes): Using kCFPreferencesAnyUser with a container is only allowed for System Containers, detaching from cfprefsd
Topic: Code Signing SubTopic: Entitlements Tags:
Replies
Boosts
Views
Activity
Jun ’22