2013-05-18 3 views
0

내 ios 앱에 앱 구매시 일부를 추가하려고합니다. 모든 것은 끝났지 만 나는이 일을 할 수없는 것처럼 보입니다. 나는 자습서 wedsite의 일부 코드를 해제하고 그것은 그 프로젝트에 내가 무슨 잘못하고 있는지 모르겠지만 작동하는 것 같습니다. 이 iap은 게임 골드 용으로 여러 번 사용할 수 있습니다.인앱 구매 제품 요청이 작동하지 않습니다.

#import "IAP.h" 
#import "Money.h" 

@interface IAP() 

@end 

@implementation IAP; 




#define kStoredData @"com.emirbytes.IAPNoobService" 




+(void)myIAPWithItem:(NSString *)Item{ 
    if ([SKPaymentQueue canMakePayments]) { 
     NSString *PurchaseAddress = [[NSString alloc] initWithString:[NSString stringWithFormat:@"TTE_%@kGold" , Item]]; 

PurchaseAddress이 인앱 구매의에 대한 itunesconnect의 APPID는 .H

#import <UIKit/UIKit.h> 
#import <StoreKit/StoreKit.h> 

@interface IAP : UIViewController <SKProductsRequestDelegate, SKPaymentTransactionObserver, UIAlertViewDelegate> 




+(void)myIAPWithItem:(NSString *)Item; 

@end 

하는 .m

.

 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:PurchaseAddress]]; 

     request.delegate = self; 
     [request start]; 


    } else { 
     UIAlertView *tmp = [[UIAlertView alloc] 
          initWithTitle:@"Prohibited" 
          message:@"Parental Control is enabled, cannot make a purchase!" 
          delegate:self 
          cancelButtonTitle:nil 
          otherButtonTitles:@"Ok", nil]; 
     [tmp show]; 

    } 



} 


#pragma mark StoreKit Delegate 

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

       // show wait view here 

       break; 
      } 
      case SKPaymentTransactionStatePurchased:{ 

       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       // remove wait view and unlock feature 2 

       UIAlertView *tmp = [[UIAlertView alloc] 
            initWithTitle:@"Complete" 
            message:@"You have unlocked Feature 2!" 
            delegate:self 
            cancelButtonTitle:nil 
            otherButtonTitles:@"Ok", nil]; 
       [tmp show]; 





       // apply purchase action - hide lock overlay and 
       NSLog(@"It worked!"); 

       // do other thing to enable the features 

       break; 
      } 
      case SKPaymentTransactionStateRestored:{ 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       // remove wait view here 
           break; 
      } 
      case SKPaymentTransactionStateFailed:{ 

       if (transaction.error.code != SKErrorPaymentCancelled) { 
        NSLog(@"Error payment cancelled"); 
       } 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       // remove wait view here 
           break; 
      } 
      default:{ 
       break; 
      } 
     } 
    } 
} 

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 
{ 

    // remove wait view here 


    SKProduct *validProduct = nil; 
    int count = [response.products count]; 

    if (count>0) { 
     validProduct = [response.products objectAtIndex:0]; 

     SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.emirbytes.IAPNoob.01"]; 
     [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
     [[SKPaymentQueue defaultQueue] addPayment:payment]; 


    } else { 
     UIAlertView *tmp = [[UIAlertView alloc] 
          initWithTitle:@"Not Available" 
          message:@"No products to purchase" 
          delegate:self 
          cancelButtonTitle:nil 
          otherButtonTitles:@"Ok", nil]; 
     [tmp show]; 

    } 


} 

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

} 

-(void)request:(SKRequest *)request didFailWithError:(NSError *)error 
{ 
    NSLog(@"Failed to connect with error: %@", [error localizedDescription]); 
} 



#pragma mark AlertView Delegate 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

@end 

그래서 실행할 때 아무 일도 발생하지 않습니다. 제품 요청을 보냈지 만 그 이후에는 아무 것도 볼 수 없습니다. 아무도 내가 뭘 잘못하고 있는지 알아?

답변

0

response.products 개수가 nil인지 확인 했습니까? 실수로 제품을 구입하지 않으시겠습니까? 몇 가지 추가 정보를 제공해 주시면 도움이 될 수 있습니다. 또한 구매 상품이 아닌 것으로 생각합니다.

SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.emirbytes.IAPNoob.01"]; 
+1

문제가 무엇인지 잘 모르겠습니다. 오늘 밤 늦게 코드를 게시하십시오. –