2012-02-20 4 views
0

私はアプリの購入を構築し、それは正常に動作します。
私は新しい目的のCクラスを作成し、新しいクラスのアプリ購入のためのすべてのコーディングを入れます。
今、メインビューコントローラからアプリ内購入を呼びたいと思っています。どのように可能ですか?おかげInApp購入他のnsobjectから

viewcontroller.m

- (void)viewDidLoad 
{ 
    InAppPurchaseManager *IAPmanager = [[InAppPurchaseManager alloc]init]; 
    if([SKPaymentQueue canMakePayments]) 
     { 
      //sets payment observer to class. 
      [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

      //initializes products array. 
      products = [[NSMutableArray alloc]init]; 
      [IAPmanager loadStore]; 

     } 
      else 
      { 
       NSLog(@"failed"); 
      } 

} 

InAppPurchaseManager.m

-(void)loadStore 
{ 
    //restarts any purchases if they were interupted last time the was open 
    [[SKPaymentQueue defaultQueue]addTransactionObserver:self]; 
    //get the product description 
    ViewController *viewcontroller = [[ViewController alloc]init]; 
    [viewcontroller requestProductData]; 
} 
//request product 
-(void)requestProductData 
{ 
    NSSet *productIdentifiers = [NSSet setWithObjects:@"com.company.myApp.App1",nil ]; 
    SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; 
    productsRequest.delegate = self; 
    [productsRequest start]; 
    NSLog(@"product request start"); 

} 

は、それがこの

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response 
{ 
    myproducts = response.products; 
    for(proUpgradeProduct in myproducts) 
    { 
     //debug log. 
     NSLog(@"Product title: %@" , proUpgradeProduct.localizedTitle); 
     NSLog(@"Product description: %@" , proUpgradeProduct.localizedDescription); 
     NSLog(@"Product price: %@" , proUpgradeProduct.price); 
     NSLog(@"Product id: %@" , proUpgradeProduct.productIdentifier); 
    } 
    // invalid purchase 
    for (NSString *invalidProductId in response.invalidProductIdentifiers) 
    { 
     NSLog(@"Invalid product id: %@" , invalidProductId); 
    } 

    [[NSNotificationCenter defaultCenter] postNotificationName:kInAppPurchaseManagerProductsFetchedNotification object:self userInfo:nil]; 

    NSLog(@"receive respond"); 
} 
+0

それはのような責任が何かストアキットに来たとき、私は、要求の製品データのように、手動ですべてのメソッドを呼び出し、それがgreat.but動作するようにしようとしなかった - (無効)productsRequest:(SKProductsRequest *)要求didReceiveResponse:(SKProductsResponse *)レスポンス、リクエスト製品の開始後にはそれ自体は決して呼び出されません – Albert

答えて

0

コールの前に任意のクラスyからこの方法を実行している停止しましたwant- OU

- (IBAction)購入:(ID)、送信者 {

InAppPurchaseManager * inapp = [[InAppPurchaseManager ALLOC] INIT]。

[inapp loadStore];

if ([inapp canMakePurchases]) { 
    [inapp purchaseProUpgrade]; 

} }

+0

私はロードストアを呼び出し、リクエストdidReceiveResponseの前に停止しました。 – Albert

+0

単語の停止はあなたがその方法に行ったことを意味しませんでしたか? – Rupesh

+0

ええ、私は私のポストにいくつかのコードを追加しました。あなたはそれが "応答を受信"ログに記録されていないことがわかります – Albert