Views 11758 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

실제 코드에 IAP 삽입 방법.

일단 cocos2d cclayer로 store.h/m을 만든다.


store.h 파일 내용

#import <StoreKit/StoreKit.h>

/*
아래 delegate를 지정해야 함.
SKProductsRequestDelegate : 상품정보 획득에 사용
SKPaymentTransactionObserver : 상품 구매에 관련(구입성공,실패,재구입 등 구매 트랜잭션)
*/
//@interface store : CCLayer
@interface store : UIViewController
    <SKProductsRequestDelegate, SKPaymentTransactionObserver> {
    SKProductsRequest *request;
    SKPayment *payment;
    NSMutableArray *productDetailsList;
    NSMutableArray *productIdentifierList;
}
...



store.m 파일 내용

-(id) init{
    if( (self=[super init])) {
    
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
        //이게 없으면 작동안함
        
        productDetailsList    = [[NSMutableArray alloc] init];
        productIdentifierList = [[NSMutableArray alloc] init];
        
        [productIdentifierList addObject:@"인앱ID1"];
        [productIdentifierList addObject:@"인앱ID2"];
        [productIdentifierList addObject:@"인앱ID3"];
        [productIdentifierList addObject:@"인앱ID4"];
        [productIdentifierList addObject:@"인앱ID5"]; 
        [productIdentifierList addObject:@"인앱ID6"];
        //인앱ID는 등록하신 ID 그냥 갔다쓰면 됨(그대로쓰면 됨)
        //이부분은 솔직히 넣야되는지 없어도 되는지 잘모르겠..
        
        if ([SKPaymentQueue canMakePayments]) {
            NSLog(@"GOOD");
        }
        else {
            NSLog(@"NOPE");
        }
        //이부분은 인앱 구매사용가능한 상태면 GOOD, 아니면 NOPE
        
        
        //그다음에 메뉴 버튼 만들고 셀렉터를 원하는 것으로 골라서하면 됨.
        //셀렉터를 buy라고 그냥 정하고 진행하겠음.
    }
    return self;
}

-(void)buy{
    request = [[SKProductsRequest alloc]
        initWithProductIdentifiers:
            [NSSet setWithArray:productIdentifierList]];
    request.delegate = self;
    [request start];
    payment = [SKPayment paymentWithProductIdentifier:@"인앱ID1"];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
    [request release];
    //이렇게 하면 인앱ID1에 대하여 결제가 이루어짐.
}

//요기부터 아래는 그냥 넣으세요
-(void)productsRequest:(SKProductsRequest *)request
        didReceiveResponse:(SKProductsResponse *)response
{
    {
        [productDetailsList addObjectsFromArray: response.products];
        //[productDisplayTableView reloadData];
        NSLog(@"products count = %d", [response.products count]);
        NSLog(@"SKProductRequest got response");
        for (SKProduct *product in response.products) {
            NSLog(@"Title : %@", product.localizedTitle);
            NSLog(@"Description : %@", product.localizedDescription);
            NSLog(@"Price : %@", product.price);
        }
        
        NSLog(@"response.invalidProductIdentifiers count = %d",
            [response.invalidProductIdentifiers count]);
        for (int i=0; i<[response.invalidProductIdentifiers count]; i++) {
            NSString *invalidString = 
            [response.invalidProductIdentifiers objectAtIndex:i];
            
            NSLog(@"Invalid Identifiers : %@", invalidString);
            //이건뭐 제대로 안된경우에 로그로 알려줌
        }
    }
}

-(void)purchasedTransaction:(SKPaymentTransaction *)transaction{
    
    
    NSLog(@"구매성공"); //구매성공이면 로그로 구매성공이라고 뜨구요
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    //이 부분에 원하는 코드를 넣으면 구매되고 나서 적용되니까 알아서 사용
    
}


-(void)restoreTransaction:(SKPaymentTransaction *)transaction{
    
    NSLog(@"재구매");
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    //이 부분은 재구매 할 때라고 하는데 제대로 작용하는지는 모름
}



-(void)failedTransaction:(SKPaymentTransaction *)transaction{
    
    
    NSLog(@"구매실패");
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    //구매 실패 할 경우를 구현하면 됨.
    
}

//이건 그냥 넣으시구요
- (void)paymentQueue:(SKPaymentQueue *)queue
    updatedTransactions:(NSArray *)transactions{
    
    for(SKPaymentTransaction *transaction in transactions){
        
        switch(transaction.transactionState)
        
        {
                
            case SKPaymentTransactionStatePurchased: //구매완료.
                
                [self purchasedTransaction:transaction];
                
                break;
                
            case SKPaymentTransactionStateFailed: //구매실패.
                
                [self failedTransaction:transaction];
                
                break;
                
            case SKPaymentTransactionStateRestored: //재구매,
                
                [self restoreTransaction:transaction];
                
                break;
                
            default:
                
                break;
                
        }
        
    }
    
}

- (void) dealloc//디얼록하실때 제대로 안해주시면 누수현상나요~
{
    
    [[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
    //이부분부터 꼭 넣어야 함.
    
    [productDetailsList release];//요것도
    [productIdentifierList release];//요것도
    
    [super dealloc];
}


위에 productDetailsList , productIdentifierList 이런 것들은 넣지 않아도 되겠지만 혹시 모르니까..


[출처] http://cafe.naver.com/mcbugi/200626


?

  1. 리팩토링 계획안

    Date2017.05.15 CategoryDevelop Byhooni Views744
    Read More
  2. [windows] 윈도우즈 콘솔에서 정품인증 하는 방법

    Date2017.05.24 CategorySystem/OS Byhooni Views5301
    Read More
  3. 사이버보안실무 발표자료 (2017.06.08)

    Date2017.06.05 CategoryDevelop Byhooni Views1197
    Read More
  4. 캘리포니아 운전면허 족보

    Date2017.06.12 CategoryDevelop Byhooni Views732
    Read More
  5. [android] 간단한 SQLIite 예제

    Date2017.06.14 CategoryDevelop Byhooni Views1319
    Read More
  6. [android] SQLiteOpenHelper를 이용한 DBManager

    Date2017.06.14 CategoryDevelop Byhooni Views2056
    Read More
  7. IT감사 기법 시험

    Date2017.06.14 CategoryEtc Byhooni Views1414
    Read More
  8. [coding] Find all anagrams in a string

    Date2017.06.27 CategoryDevelop Byhooni Views1136
    Read More
  9. [coding] 공부해야 하는거 ㅋㅋ

    Date2017.06.27 CategoryDevelop Byhooni Views0
    Read More
  10. [android] 안드로이드 앱 문서 샘플 - NCComix

    Date2017.07.11 CategoryDevelop Byhooni Views2101
    Read More
  11. 캘리포니아 운전면허 문제

    Date2017.07.22 CategoryEtc Byhooni Views974
    Read More
  12. [mac] Homebrew/rvm/cocoapod setting

    Date2017.07.29 CategorySystem/OS Byhooni Views995
    Read More
  13. [ios] VIN Scanner (VIN barcode) 스캐너

    Date2017.09.16 CategoryDevelop Byhooni Views642
    Read More
  14. [linux] iptables 초간단 세팅 스크립트

    Date2017.09.26 CategorySystem/OS Byhooni Views1235
    Read More
  15. 영어. 불규칙 동사 정리

    Date2017.10.04 CategoryEtc Byhooni Views3498
    Read More
  16. How to completely Uninstall Coda

    Date2017.10.24 CategoryEtc Byhooni Views2132
    Read More
Board Pagination Prev 1 ... 66 67 68 69 70 ... 74 Next
/ 74