I've implemented a simple non-consumable in-app purchase mechanism by following the Ray Wenderlich tutorial book.
When my app starts, I initiate a product info request:
self.productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
_productsRequest.delegate = self;
[_productsRequest start];
The SKProductRequest gets created. It has a memory address but nothing else happens. None of the delegate methods gets called:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSLog(@"Product info received...");
NSArray *products = response.products;
for (SKProduct *product in products) {
NSLog(@"ID: %@, title:%@, (%f)", product.productIdentifier, product.localizedTitle, product.price.floatValue);
}
self.productsRequest = nil;
}
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
NSLog(@"Failed to load list of products");
self.productsRequest = nil;
}
I checked twice:
The Ray Wenderlich book doesn't mention I must do anything else besides this.
Only once I saw a -didFailWithError: call to my delegate on the Device, but it never again appeared. My delegate doesn't get called both on device or simulator. I let it run for minutes with no response at all.
iTunes Connect gives this confusing warning:
Your first In-App Purchase(s) must be submitted with a new app version. Select them from the In-App Purchases section of the Version Details page and then click Ready to Upload Binary.
Is this required prior to being able to test In-App Purchases?
In the current version of Xcode 5.0 (5A1413), In-App purchases will not work in the iOS simulator.
StoreKit (In-App purchases) will not work in the Simulator. 13962338
Source: Xcode 5.0 Release Notes > Known issues > iOS Simulator https://developer.apple.com/library/ios/releasenotes/DeveloperTools/RN-Xcode/xc5_release_notes/xc5_release_notes.html#//apple_ref/doc/uid/TP40001051-CH2-SW303