2012-08-30 217 views
2

在我的应用程序,我必须在应用程序purchse实施下面的scenerio: - 应用程序是免费的所有用户,即每个人都可以免费下载。 我已经为此实现了易耗品类型。 在应用程序中有一个选项购买$ 1.99.once 10个硬币用户购买它完成交易成功 但是当再次用户点击购买到10个硬币时,它提示“您已经下载了这个应用程序”。 我想在该应用程序购买实施该笏,以便用户可以购买10个硬币的多种类型? 这将是什么类型和场景。在应用购买实施

请建议?

+0

即用户可以多次购买10个硬币? – yadav

+0

你确定这个类型是_consumable_? – holex

+0

是类型是消耗品。 – yadav

回答

0
- (void)requestProductData { 
    // NSLog(@"%@",strCheck); 
if ([strCheck isEqualToString:@"inApp"]) { 
    myString = strCheck; 
    SKProductsRequest *request= [[SKProductsRequest alloc] initWithProductIdentifiers:   [NSSet setWithObject:@"All_labelling"]]; 
    request.delegate = self; 

    [request start]; 
} 

    } 
    - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
     NSArray *myProduct = response.products; 

    SKPayment *payment = [SKPayment paymentWithProduct:[myProduct objectAtIndex:0]]; 
    [[SKPaymentQueue defaultQueue] addPayment:payment]; 

     [request autorelease]; 
    } 


    - (void)inAppPurchase { 

     reachability = [Reachability reachabilityForInternetConnection]; 

     NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 



     if(remoteHostStatus == NotReachable) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"LeaderFollow!" message:@"Network is not found" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil]; 
     [alert show]; 
     [progInd stopAnimating]; 
      [progInd setHidden:YES]; 
     } 

else if ([SKPaymentQueue canMakePayments]) { 
    [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
    [self requestProductData]; 


} 
else { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please enable the ability to make purchases." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
    } 
    } 


    - (void)finishMyTransaction:(SKPaymentTransaction *)transaction { 
[[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
self.view.userInteractionEnabled=YES; 
[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 
    [progInd stopAnimating]; 
    [progInd setHidden:YES]; 

    } 

    #pragma mark Payment Delegate 
    #pragma mark - 

    - (void)recordTransaction:(SKPaymentTransaction *)transaction { 
    } 


    - (void)provideContent:(NSString *)productIdentifier { 


    if([productIdentifier isEqualToString:@"All_labelling"]){ 
    [email protected]"inApp"; 
    myString=strCheck; 

    } 
    if ([strCheck isEqualToString:@"inApp"]){ 
    [prefs setBool:YES forKey:@"inApp"]; 
    if(!isTapped){ 

     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Congratulations!" message:@"You Have Successfully Purchased All Objects Pack" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
    } 
    [self viewWillAppear:YES]; 
    } 



//} 


    [progInd stopAnimating]; 
    [progInd setHidden:YES]; 


    } 

    - (void)completeTransaction:(SKPaymentTransaction *)transaction { 

[self recordTransaction:transaction]; 
    [self provideContent:transaction.payment.productIdentifier]; 

    [self finishMyTransaction:transaction]; 
    } 

    -(IBAction)btnRestoreTapped{ 
    [progInd setHidden:NO]; 
    [progInd startAnimating]; 
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 
    [[UIApplication sharedApplication]beginIgnoringInteractionEvents]; 



    } 



    - (void)restoreTransaction: (SKPaymentTransaction *)transaction { 

[self recordTransaction:transaction]; 
    [self provideContent:transaction.originalTransaction.payment.productIdentifier]; 

    [self finishMyTransaction:transaction]; 

    } 


    - (void)failedTransaction: (SKPaymentTransaction *)transaction { 

if (transaction.error.code != SKErrorPaymentCancelled) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                 message:[transaction.error localizedDescription] 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
     } 

    [self finishMyTransaction:transaction]; 
     } 


     - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { 
for (SKPaymentTransaction *transaction in transactions) { 
    switch (transaction.transactionState) { 

     case SKPaymentTransactionStatePurchased: 
      [self completeTransaction:transaction]; 

      break; 

     case SKPaymentTransactionStateFailed: 
      [self failedTransaction:transaction]; 

      break; 

     case SKPaymentTransactionStateRestored: 

      [self restoreTransaction:transaction]; 

      break; 

     default: 
      break; 
     } 

    } 

    } 
     - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue{ 
     [progInd stopAnimating]; 
     [progInd setHidden:YES]; 
     [[UIApplication sharedApplication]endIgnoringInteractionEvents]; 
     if([prefs boolForKey:@"inApp"]){ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"LeaderFollow!" message:@"You Have Successfully Restored Pack(s)" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
     [prefs setObject:@"YES" forKey:@"Restore"]; 
     } 
     else{ 
      UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"LeaderFollow!" message:@"No purchases to restore" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
      [alert show]; 
      [alert release]; 
    } 
     isTapped=NO; 
     } 

    - (void)paymentQueue:(SKPaymentQueue*)queue restoreCompletedTransactionsFailedWithError:(NSError*)error 
    { 
     [[UIApplication sharedApplication]endIgnoringInteractionEvents]; 
     [progInd stopAnimating]; 
     isTapped=NO; 
     self.view.userInteractionEnabled=YES; 
     [progInd setHidden:YES]; 
    } 
+3

在没有任何形式的评论的情况下发布这么多的代码并不是真的有用,它也没有正确缩进。 – doge