IPhone Store Kit returns invalid product identifier errors

I am trying to test the Application Shopping app on my iPhone and run into a problem when the product identifiers I request ultimately return to me as invalid product identifiers in the didRecieveResponse method.

I have:

  • A product has been created in the store related to this application. It associates the identifier with everything else. It has been cleaned for sale and approved by the developer.
  • Make sure that in my new settings profile there is access to in-app purchases and it has the full name of the application: "com.domain.appname"
  • Make sure that this is the provisioning profile that is used to sign the application on my iPhone.
  • Ensure that "com.domain.appname" is the application identifier used to create the provisioning profile.
  • Make sure that "com.domain.appname" is used in my plist file as the package identifier.

Everything seems to be in place, however, I still get that my products come back to me as invalid identifiers.

This is the code I'm using:

- (void)requestProductData { SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]]; request.delegate = self; [request start]; } - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSArray *myProducts = response.products; NSArray *myInvalidProducts = response.invalidProductIdentifiers; for(int i = 1; i < myInvalidProducts.count; ++i) { std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl; } for(int i = 0; i < myProducts.count; ++i) { SKProduct * myProduct = [myProducts objectAtIndex:i]; std::cout << "Product Info:" << std::endl; std::cout << "\tlocalizedTitle = " << [[myProduct localizedTitle] UTF8String] << std::endl; std::cout << "\tlocalizedDescription = " << [[myProduct localizedDescription] UTF8String] << std::endl; std::cout << "\tproductIdentifier = " << [[myProduct productIdentifier] UTF8String] << std::endl; std::cout << "\tprice = " << [[myProduct price] doubleValue] << std::endl; std::cout << "\tpriceLocale = " << [myProduct priceLocale] << std::endl; } [request autorelease]; } 

All my product identifiers appear in invalid printouts, and none of them appear in printouts of "Product Information:".

Any suggestions would be greatly appreciated ...

PS Yes, it is built as Objective-c / C ++.

+4
source share
8 answers

Well, therefore, doing everything I could think of, and reading every forum there, this is what worked:

Repeat ALL.

  • Remove ALL training profiles from the Xcode organizer.
  • Close Xcode.
  • Create a new application identifier.
  • Create a new Provisioning profile with a new application identifier.
  • Create a new Provisioning Distribution profile with a new application identifier.
  • Create a new app in iTunes Connect
  • Launch Xcode, install two new training profiles. Update yoru package id to match. Also make sure your identifier strings, that application requests are updated to reflect your package identifier.
  • Create your project in distribution mode with a new distribution profile.
  • Upload a new binary file. (Leave him unassailable)
  • Set up a test purchase in the app.
  • Create a project in debug mode with the new Provisioning profile.
  • Request for verification.

This is what my store needs to work. My best guess is that Apple's back servers are sometimes screwed in and you just need to start from scratch.

Hope this helps everyone!

0
source

I tried everything that was offered on the Apple forums, and here, and still could not get it to work. Solution found - your application must be passed to Xcode to include the sandbox.

Obviously yes? Well, if you are working with updating an existing account, the device will still consider it as an application installed in the App Store.

Remove it, then move it again. Now it should work :)

+6
source

Uninstall the application to test the iPhone and reinstall it. In addition, I also waited 8 hours from the moment of submitting the application for purchase in the application.

+4
source

Please follow these steps:

  • Sign in to iTunes using your developer account ( https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/ ).

  • Go to the tab - "Contracts, taxes and banking"

  • Check the "Request Contracts and Contracts in Progress" sections.

  • Check out β€œiOS Paid Applications,” and there you need to set up contact information, bank information, and tax information.

  • When the iOS Paid Applications cell moves to the Contracts in Effect section, I can use the products to buy applications.

Please follow the link below for more information: http://developer.apple.com/library/ios/#technotes/tn2259/_index.html

+3
source

Please note that when the iPhone is cracked, the AppSync package completely disables in-app testing . AppSync installs with Install0us as a dependency.

You do not need to completely restore iOS, just uninstall AppSync in Cydia to successfully test in-app purchases .

All tips from all forums, tutorials, and comments about the invalid fixind product did not work for me until I uninstalled AppSync.

+2
source

I had a similar problem with a new application (v1.0 has not yet been released in the store), which I also tried to add to application purchases. I configured everything, added products, etc., And my products ALWAYS returned as invalid when I did SKProductsRequest.

I was about to abandon the whole process when I saw a message on the Apple developer forums on a tangent page. He suggested removing the application from the test device and performing a new build + installation. It did the trick.

To be sure, I tried this on another device that gave me the same problem, and it also fixed it.

This is just an assumption, but I think that if the device has a built-in profile on it that was created before you added IAP, you need to remove this assembly and install a new one using the IAP profile. (That is, simply replacing the application in place will not do the trick.)

+1
source

If there is nothing wrong with the code, sometime it returns an invalid productId simply because you may need more than 10 hours to get your information. entry into force. Or, productId is invalid because something is left on your device, so you can try uninstalling your application again and building it again. with my experience, hope this helps.

+1
source

The iTunes Connect interface for IAP has recently been updated, which may cause an invalid: <Product Identifier> error.

Now you can add IAP to iTunes connect without setting a default price of USD 0, and this will allow you to save this entry.

The old version of the user interface will complain when you click "Save" if you have not changed the price field in advance.

It is very easy to skip this field completely, and any attempt to obtain information using this product identifier using any iOS call will result in the inadmissibility of: <Product Identifier> instead of notifying you that it was found, Product Identifier> at a price of USD 0.

0
source

All Articles