9

We keep getting this warning message in Itunes connect after implementation and test of the delegate method:

These in-app purchases can’t be promoted on the App Store because your latest app binary doesn’t include the SKPaymentTransactionObserver method.

We implemented the delegate method for the new App Store purchase from iOS 11 in a dedicated object that manages our payments and other SKPaymentTRansactionObserver.

func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
    let isProUser = userDataService.isUserPro
    let isUserLoggedIn = userDataService.isUserLoggedIn

    if isUserLoggedIn && !isProUser {
        return true
    } else if isUserLoggedIn && isProUser {
        return false
    }
    paymentFromAppStore = payment
    return false
}

We tested it with:

itms-services://?action=purchaseIntent&bundleId=[add your bundleID]&productIdentifier=[Add your productID]

And everything worked fine during tests. The delegate is called and payment processing for sandbox users. We submitted our app and we've been approved but nothing happened on Itunes connect.

Are we the only one facing this issue? Does anyone have an answer and solution?

Thanks in advance for any answer!

EDIT: Yellow message disapear on its own. I created a radar that we foward to apple. And now it seams that the message disapear. So we will see with our next release if if works in production. I will update this post again to give a final answer.

SOLUTION: Problem was from Apple side on Itunes connect. After my radar our app has now App Store purchase available and visible on the App Store. If someone has the same issue that we had, don't hesitate to create a Radar for it.

Sarah Wood
  • 131
  • 1
  • 8
  • Do you have your app already working with In-App purchases ? – Jad Oct 10 '17 at 17:42
  • Yes, our app has a couple of In-App purchases it works fine for that. – Sarah Wood Oct 11 '17 at 09:36
  • can you share your code, specifically how you're implementing your Store kit ? – Jad Oct 11 '17 at 15:10
  • Sorry for not answering sooner. Yellow message disapear on its own. I created a radar that we foward to apple. And now it seams that the message disapear. Thanks for your help, I will update the post to give a final answer. – Sarah Wood Nov 14 '17 at 13:24

2 Answers2

4

SOLUTION: Problem was from Apple side on Itunes connect. After the radar I created, our app has now App Store purchase available and visible on the App Store. If someone has the same issue that we had, don't hesitate to create a Radar for it.

Sarah Wood
  • 131
  • 1
  • 8
  • Thanks for following up on this. I have created a standalone store helper object that implements the protocol and am seeing the same warning as you've seen. However, I'm wondering if I need to instantiate the shared object from the App Delegate instead of the store ViewController in order to have it be able to respond to the App Store message when the store ViewController isn't displayed? Where do you first instantiate your shared helper object? – joshd Jul 24 '18 at 00:23
  • For us we have an singleton that is setup in `application:didFinishLaunchingWithOptions` in our AppDelegate. This singleton implemented the `SKPaymentTransactionObserver` that contains `paymentQueue:shouldAddStorePayment`. Did you managed to test it locally with `itms-services://?action=purchaseIntent&bundleId=[add your bundleID]&productIdentifier=[Add your productID]`? If so and if it's working I will say to fire a radar to ask for more infomation. If not and that it's not working, check if from your appDelegate you settedup your store helper and that you implemented the observer and method. – Sarah Wood Jul 24 '18 at 09:50
  • Ok. Yeah I actually did the same (first called setup on the singleton from the AppDelegate). So the singleton should be observing from launch and not just after the store view has been opened. I was wondering how to test locally! Will give it a try. – joshd Jul 25 '18 at 23:04
  • 1
    To test it locally you need to send the link: `itms-services://?action=purchaseIntent&bundleId=[add your bundleID]&productIdentifier=[Add your productID]` via email or message. You can only test it on real device it won't work on simulator. And a press on the link will simulate like if you tried to buy from the appStore. – Sarah Wood Jul 26 '18 at 08:24
0

You will get this problem using Xcode 8 (iOS10 SDK) and, if that is the cause of your problem, it will be fixed by upgrading to Xcode 9 (iOS11 SDK)

Martin Lockett
  • 2,275
  • 27
  • 31
  • We were already using Xcode 9, our problem has been solved after contacting Apple. The issue was on Itunes connect side. :) – Sarah Wood Nov 23 '17 at 12:03