5 Replies
      Latest reply on Nov 1, 2019 12:51 AM by wulilio
      futile Level 1 Level 1 (0 points)

        Up until recently it seemed reasonable to assume that all StoreKit observer and delegate methods were called on the main thread.  I'm not sure if this was documented, but I had ASSERTs in the relevant methods to check this was the case and they never fired.

         

        Since updating to iPadOS 13.1 I have discovered that the productsRequest:didReceiveResponse: and requestDidFinish: methods of SKProductsRequestDelegate are no longer called from the main thread. It's best to assume that request:didFailWithError: is also affected, although I haven't tested it.

         

        Given that these methods are typically used to update application state, it's now necessary to ensure this is performed in a thread-safe manner.  I think the least intrusive solution would be to schedule the work to be performed on the main thead using dispatch_async(dispatch_get_main_queue(), ...).

         

        I'd be interested to know if anyone else can confirm this.