2014-01-06 32 views
0

我已將In App Purchasing添加到我的iOS應用程序,現在正在嘗試添加if語句,該語句通知應用程序根據產品是否已購買顯示不同的內容如果根據In App Purchase顯示內容的聲明

我在viewDidLoad中的代碼是這樣的:

SKProduct * product = (SKProduct *) [_products self]; 
[_priceFormatter setLocale:product.priceLocale]; 


if ([[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier]) { 


    labelPrice.text = @"Purchased"; 


} else { 


    labelPrice.text = @"Not Purchased"; 


} 

的問題是每當應用程序被加載,不管項目是否購買或不它顯示「未購買」

是否有另簡單的方法來檢查用戶是否有ma購買?

+0

看來相關的代碼是在'productPurchased:'方法,如果你需要幫助,你需要提供有關該方法的相關細節 – rmaddy

+0

順便說一句 - 你有沒有實際採取調試時間你代碼並查看爲什麼'productPurchased:'總是返回'NO'? – rmaddy

回答

0

productPurchased:(如果您使用教程中的IAPHelper)只是簡單地檢查產品是否包含在數組中。

你是如何填充該數組的? (即:[RageIAPHelper sharedInstance]是如何實現的

當我用它,我填充我的產品,並與它inited IAPHelper(如下圖所示),然後將其初始化通過NSUserDefaults的購買的產品:

- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers { 

    if ((self = [super init])) { 

     // Store product identifiers 
     _productIdentifiers = productIdentifiers; 

     // Check for previously purchased products 
     _purchasedProductIdentifiers = [NSMutableSet set]; 
     for (NSString * productIdentifier in _productIdentifiers) { 
      BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier]; 
      if (productPurchased) { 
       [_purchasedProductIdentifiers addObject:productIdentifier]; 
       NSLog(@"Previously purchased: %@", productIdentifier); 
      } else { 
       NSLog(@"Not purchased: %@", productIdentifier); 
      } 
     } 

     // Add self as transaction observer 
     [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

    } 
    return self; 

} 

然後,只需productPurchased檢查該數組:

- (BOOL)productPurchased:(NSString *)productIdentifier { 
    return [_purchasedProductIdentifiers containsObject:productIdentifier]; 
} 
+0

謝謝,我明白,但想象我有另一個視圖控制器,我想要在購買後顯示內容,如果我要在那裏添加聲明怎麼辦? – Omar

+0

你在VC中正確地做到這一點。那不是重點。如果購買的產品返回NO,則表示該陣列尚未包含您的購買。嘗試調試我顯示的代碼,以確保產品得到適當添加。 – valheru