InSKPaymentTransactionState
はSKPaymentTransactionStateFailed
、リクエストがサーバー キューに追加される前であることを示します。
@class SKPayment;
enum {
SKPaymentTransactionStatePurchasing, // Transaction is being added to the server queue.
SKPaymentTransactionStatePurchased, // Transaction is in queue, user has been charged. Client should complete the transaction.
SKPaymentTransactionStateFailed, // Transaction was cancelled or failed before being added to the server queue.
SKPaymentTransactionStateRestored // Transaction was restored from user's purchase history. Client should complete the transaction.
};
typedef NSInteger SKPaymentTransactionState;
また、SKPaymentTransaction
クラス参照エラーのディスカッションでは、次のように述べています。
error プロパティは、transactionState が に設定されている場合を除き、未定義SKPaymentTransactionStateFailed
です。アプリケーションは error プロパティを読み取って、トランザクションが失敗した理由を判断できます。
したがって、transaction.error.localizedDescription は「iTunes Store に接続できません」です! は一般的なエラー メッセージです。アプリ内購入のテスト中に、このエラー メッセージが定期的に表示されます。
あなたができるいくつかのヒントは、
を使用してアプリ ストアからすべての製品を取得し、要求された が含まれていることSKProductsRequest
を確認します。この使用のために、 response.products
productIdentifier
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]];
//pass product identifier array as argument
[request start];
そして、応答をキャッチします:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray *myProduct = response.products;
}
アプリストアと通信できるかどうかを判断できるようにします。そしてあなたの製品IDはそこにあります。
- テストには、必ずアプリ内テスト ユーザー アカウントを使用してください。
- また、アプリ内購入で構成したのと同じアプリ ID プロビジョニングを使用します。
ありがとう