SKStoreProductViewController fails to present on iOS 17 RC

Hello, I experience a serious issue where calling presentViewController: animated: on SKStoreProductViewController is executed and completion is called, but the view controller isn't visible on screen. The system thinks that it's the presentedViewController, and my presentingViewController is frozen. Tapping the screen prints a weird Console log of dismissViewControllerAnimated on SKStoreProductViewController.

The code is executed inside an SDK that is integrated in apps, and the issue occurs only in some of the apps.

Any idea what could cause this issue? Thanks!

Thank you for raising this issue, this doesn't sound like the expected behavior. To help get to the bottom of this issue, could you please provide the smallest sample code you can write which reproduces the issue? Feel free to post a snippet here, or file a feedback report with a sample project attached. If you file a feedback report, please also attach system diagnostics from after reproducing the problem on your own device, and reply to this thread with the feedback ID.

Doesn't present in iOS 17 for me either.

Hi, thanks for the quick reply! I opened a Feedback as well and received a reply: FB13163210 Again thanks for the quick replies.

I also have the same problem, refer to this post https://developer.apple.com/forums/thread/735752

Below is the minimal reproducible code:

var parametersDictionary = [SKStoreProductParameterITunesItemIdentifier: "***"]
let store = SKStoreProductViewController()
store.delegate = self
store.loadProduct(withParameters: parametersDictionary) { (result: Bool, error: Error?) in
    print("Result : \(result), Error: \(error)") // Result : true, Error: nil
}

You only need to fill in a non-existent itunes_id to reproduce this problem.

In fact, if an id that does not exist is passed in, the expected situation should be an error, but now the error will never be returned in the callback function

@wzb indeed I believe we have similar issues, at least visually, both seem to be a regression starting in iOS 17.

I did a test with a playground app: In iOS 16:

  1. When calling presentViewController on SKStoreProductViewController, it always opens, even if there was no call to loadProducts, or the call failed.
  2. When calling loadProducts with bad parameters, the completion returns an error.

In iOS 17 physical device:

  1. When calling presentViewController on SKStoreProductViewController it won’t open if the call to loadProducts was with a bad parameter, or there was no call at all, although the completion of the presentation is called.
  2. When calling loadProducts with bad parameters, the completion returns a successful result.

In iOS 17 simulator:

  1. When calling presentViewController on SKStoreProductViewController it won’t open if there was no call to loadProducts, although the completion of the presentation is called.
  2. When calling loadProducts with bad parameters, the completion returns an error.

The original issue I'm experiencing is with a valid parameter of SKStoreProductParameterITunesItemIdentifier, that for some reason the view controller doesn't present. All of the issues seems related to each other.

Hello, I still encounter the issue. Any solution?

This issue also troubled me for some time. The culprit for my case is due to a 3rd party framework. I integrated Tapjoy SDK for my project, after I removed it, it works just fine. I encourage whoever encounter the same issue, check if any of the frameworks you integrated has caused this issue. After updating Tapjoy SDK to latest version using Swift Package Manager, SKStoreProductViewController shows up for me again.

SKStoreProductViewController fails to present on iOS 17 RC
 
 
Q