iPhone でアプリ内購入をテストしようとしていますが、情報を要求した製品 ID が「didRecieveResponse」メソッドで無効な製品 ID として返されるという問題が発生しています。
私は持っている:
- このアプリに関連付けられたストア製品を作成しました。バンドル ID は他のすべてと一致します。販売が許可され、開発者によって承認されました。
- 新しいプロビジョニング プロファイルでストア アプリの購入が有効になっていて、アプリの完全な名前が「com.domain.appname」であることを確認しました。
- これが、アプリを iPhone に署名するために使用されているプロビジョニング プロファイルであることを確認しました。
- 「com.domain.appname」がプロビジョニング プロファイルの作成に使用されるアプリ ID であることを確認しました。
- 「com.domain.appname」がバンドル識別子として plist ファイルで使用されていることを確認しました。
すべてが整っているように見えますが、製品が無効な ID として返されます。
これは私が使用しているコードです:
- (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];
}
すべての製品 ID が無効なプリントアウトに表示され、"Product Info:" プリントアウトにはどれも表示されません。
どんな提案でも大歓迎です...
PS はい、これは Objective-c/c++ としてビルドされています。