因应用程序购买而导致ios app拒绝

时间:2013-06-17 03:18:44

标签: ios app-store in-app-purchase appstore-approval

我的应用已被iTunes拒绝。他们的理由是:

点击“购买”按钮后,应用程序不启动密码窗口以完成In App Purchase流程,只显示“等待”消息,然后没有任何反应。

他们的意思是有购买对话框,但是当点击购买按钮时,他们不是密码窗口。但是当我测试它时它是可以的。

密码窗口初始化不在我的控制之下,我该怎么办?

这是我的代码:

-(void)buy:(NSString*)type
{
    buyType = type;
    //judge whether can buy product
    if ([SKPaymentQueue canMakePayments]) {
        NSLog(@"can buy");
        [self RequestProductData];
    }else{
        UIAlertView *alerView =  [[UIAlertView alloc] initWithTitle:@"Alert"
                                                            message:@"You can‘t purchase in app store(不允许应用程序内购买)"
                                                           delegate:nil cancelButtonTitle:NSLocalizedString(@"Close(关闭)",nil) otherButtonTitles:nil];

        [alerView show];
        [alerView release];

    }
}

-(bool)CanMakePay
{
    return [SKPaymentQueue canMakePayments];
}

-(void)RequestProductData
{
    NSSet *nsset = [NSSet setWithObject:buyType];
    SKProductsRequest *request=[[SKProductsRequest alloc] initWithProductIdentifiers: nsset];
    request.delegate=self;
    [request start];
}
//<SKProductsRequestDelegate> 
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{

    NSArray *myProduct = response.products;
    // populate UI
    for(SKProduct *product in myProduct){
        SKPayment *payment = [SKPayment paymentWithProduct:product];
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    [request autorelease];   
}

//alert error
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error{
    UIAlertView *alerView =  [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Alert",NULL) message:[error localizedDescription]
                                                       delegate:nil cancelButtonTitle:NSLocalizedString(@"Close",nil) otherButtonTitles:nil];
    [alerView show];
    [alerView release];
}

-(void) requestDidFinish:(SKRequest *)request
{

}

-(void) PurchasedTransaction: (SKPaymentTransaction *)transaction{
    NSArray *transactions =[[NSArray alloc] initWithObjects:transaction, nil];
    [self paymentQueue:[SKPaymentQueue defaultQueue] updatedTransactions:transactions];
    [transactions release];
}

//<SKPaymentTransactionObserver> 
//----listen to the purchase result
//
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased://purchase ok
                [self completeTransaction:transaction];
                [[transaction payment] quantity];
                NSLog(@"%@",[[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding ]);
                NSLog(@"transaction id:%@",[transaction transactionIdentifier]);
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                NSLog(@"-----交易失败 --------");
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
            case SKPaymentTransactionStatePurchasing:  
                break;
            default:
                break;
        }
    }
}
- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

}

-(void)recordTransaction:(NSString *)product{
}

//
-(void)provideContent:(NSString *)product{
}

- (void) failedTransaction: (SKPaymentTransaction *)transaction{
    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];  
}
-(void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentTransaction *)transaction{

}

- (void) restoreTransaction: (SKPaymentTransaction *)transaction

{

}

-(void) paymentQueue:(SKPaymentQueue *) paymentQueue restoreCompletedTransactionsFailedWithError:(NSError *)error{

}

0 个答案:

没有答案