5 Replies
      Latest reply on Aug 29, 2019 5:52 PM by rich
      dutton Level 1 Level 1 (0 points)



        Am currently struggling to get approval for our first version of an app and have hit a brick wall. Am hoping someone might be able to help point us in the right direction - any help would be greatly appreciated.


        Background: One of the first things our app does on startup is call SKProductsRequest to get it's IAP (it only has one). When we or any of our TestFlight users run our app everything works fine - the IAP is returned and when the user reaches the appropriate screen we give them a "Purchase" button along with localised pricing information. This has been 100% reliable.


        The issue: When our app gets run during the Review process it seems as though the SKProductsRequest is not returning any IAPs. If no IAPs are returned we display an error message instead of the "Purchase" button and we've now been rejected twice because the message, rather than the purchase button, is being displayed.


        Question: Is there anything we need to specifically code for when the app is being reviewed? Why might the response during review be different from when we are testing the app ourselves?


        Our initial app binary was submitted along side an IAP and the two were linked in App Store Connect when we submitted the binary. We have asked the Review team whether they have turned-over the IAP to their environment but they have referred us to Developer Support.


        Thanks in advance to to anyone who can give us any pointers!

        • Re: App rejected - linked IAP not returned by SKProductsRequest
          PBK Level 7 Level 7 (3,335 points)

          If you attached the IAP to the binary before submission of the binary then App Review should be seeing the same IAP as you.  It is possible that the following could affect App Review differently:


          1) check 'cleared for sale'

          2) receipts need to be decoded in production first and then in sandbox if they fail with 21007

          3) your banking agreements need to be signed


          But you call SKProductsRequest immediately on launch.  (It is, IMHO, poor form to call SKProductsRequest if the user is not interested in IAPs;  I am not familiar with the problems this might cause.)   Perhaps you are calling it too quickly and the IAPs have not been set up for App Review - that may be another difference between App Review and the sandbox.  You could try a few second delay before downloading this information.

            • Re: App rejected - linked IAP not returned by SKProductsRequest
              dutton Level 1 Level 1 (0 points)

              Many thanks for your reply and pointers @PBK.


              The IAP is "Non-Consumable" and exists to unlock full functionality within the app. We call SKProductsRequest early so that we can display an "Unlock for $X.XX" button with a localised price.


              "Cleared for sale" is checked on the IAP, although I've elected to manually release the App itself. Could that be a conflict? It implies that the IAP would be released before the app but not sure why that would be an issue.


              Re: your other points, receipts are working fine in TestFlight but during the review the app isn't getting that far. And according to Connect our  agreements are in good shape.


              I'm actually considering removing the IAP altogether for the initial release (make it a "lite" version), and then adding the IAP only once the binary is in the app store. Feels like there would be fewer moving parts.