following is code... In coding,there is two objective C class "InappPurchaseManager.h/InappPurchaseManager.h" and "InAppRageIAPHelper.h/InAppRageIAPHelper.m" Under "Inapppurchasemanger.h" #import #import #define kProductsLoadedNotification @"ProductsLoaded" #define kProductPurchasedNotification @"ProductPurchased" #define kProductPurchaseFailedNotification @"ProductPurchaseFailed" @interface InAppPurchaseManager : NSObject { NSSet * _productIdentifiers; NSArray * _products; NSMutableSet * _purchasedProducts; SKProductsRequest * _request; } @property (retain) NSSet *productIdentifiers; @property (retain) NSArray * products; @property (retain) NSMutableSet *purchasedProducts; @property (retain) SKProductsRequest *request; - (void)requestProducts; - (id)initWithProductIdentifiers:(NSSet *)productIdentifiers; - (void)buyProductIdentifier:(NSString *)productIdentifier; @end Under "Inapppurchasemanger.m" @implementation InAppPurchaseManager @synthesize productIdentifiers = _productIdentifiers; @synthesize products = _products; @synthesize purchasedProducts = _purchasedProducts; @synthesize request = _request; - (id)initWithProductIdentifiers:(NSSet *)productIdentifiers { if ((self = [super init])) { // Store product identifiers _productIdentifiers = [productIdentifiers retain]; // Check for previously purchased products NSMutableSet * purchasedProducts = [NSMutableSet set]; for (NSString * productIdentifier in _productIdentifiers) { BOOL productPurchased = [[NSUserDefaults standardUserDefaults] boolForKey:productIdentifier]; if (productPurchased) { [purchasedProducts addObject:productIdentifier]; NSLog(@"Previously purchased: %@", productIdentifier); } NSLog(@"Not purchased: %@", productIdentifier); } self.purchasedProducts = purchasedProducts; } return self; } - (void)requestProducts { self.request = [[[SKProductsRequest alloc] initWithProductIdentifiers:_productIdentifiers] autorelease]; _request.delegate = self; [_request start]; } - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { NSLog(@"Received products results..."); self.products = response.products; self.request = nil; [[NSNotificationCenter defaultCenter] postNotificationName:kProductsLoadedNotification object:_products]; } - (void)recordTransaction:(SKPaymentTransaction *)transaction { // Optional: Record the transaction on the server side... } - (void)provideContent:(NSString *)productIdentifier { NSLog(@"Toggling flag for: %@", productIdentifier); [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:productIdentifier]; [[NSUserDefaults standardUserDefaults] synchronize]; [_purchasedProducts addObject:productIdentifier]; [[NSNotificationCenter defaultCenter] postNotificationName:kProductPurchasedNotification object:productIdentifier]; } - (void)completeTransaction:(SKPaymentTransaction *)transaction { NSLog(@"completeTransaction..."); [self recordTransaction: transaction]; [self provideContent: transaction.payment.productIdentifier]; [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; } - (void)restoreTransaction:(SKPaymentTransaction *)transaction { NSLog(@"restoreTransaction..."); [self recordTransaction: transaction]; [self provideContent: transaction.originalTransaction.payment.productIdentifier]; [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; } - (void)failedTransaction:(SKPaymentTransaction *)transaction { if (transaction.error.code != SKErrorPaymentCancelled) { NSLog(@"Transaction error: %@", transaction.error.localizedDescription); } [[NSNotificationCenter defaultCenter] postNotificationName:kProductPurchaseFailedNotification object:transaction]; [[SKPaymentQueue defaultQueue] finishTransaction: 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]; default: break; } } } - (void)dealloc { [_productIdentifiers release]; _productIdentifiers = nil; [_products release]; _products = nil; [_purchasedProducts release]; _purchasedProducts = nil; [_request release]; _request = nil; [super dealloc]; } under "InAppRageIAPHelper.h" #import #import "InAppPurchaseManager.h" @interface InAppRageIAPHelper : InAppPurchaseManager { } +(InAppRageIAPHelper *) sharedHelper; @end under "InAppRageIAPHelper.h" #import "InAppRageIAPHelper.h" @implementation InAppRageIAPHelper static InAppRageIAPHelper * _sharedHelper; + (InAppRageIAPHelper *) sharedHelper { if (_sharedHelper != nil) { return _sharedHelper; } _sharedHelper = [[InAppRageIAPHelper alloc] init]; return _sharedHelper; } - (id)init { NSSet *productIdentifiers = [NSSet setWithObject:@"com.phoenixsports.Ats80Club.ATSStats1" ]; //// NSSet *productIdentifiers = [NSSet setWithObjects: // "com.phoenixsports.Ats80Club.ATSStats1"]; // if ((self = [super initWithProductIdentifiers:productIdentifiers])) { } return self; } @end and i want to display that Auto-renewble-Subscription on my login view controller for that i write following code in may login view controller - (void)viewWillAppear:(BOOL)animated { txt_UserName.text=@""; txt_Password.text=@""; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productsLoaded:) name:kProductsLoadedNotification object:nil]; // Reachability *reach = [Reachability reachabilityForInternetConnection]; // NetworkStatus netStatus = [reach currentReachabilityStatus]; // if (netStatus == NotReachable) Connection=[[NetworkConnection alloc]initConnection]; if (Connection.isReachable) { if ([InAppRageIAPHelper sharedHelper].products == nil) { [[InAppRageIAPHelper sharedHelper] requestProducts]; self.hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES]; _hud.labelText = @"Loading"; [self performSelector:@selector(timeout:) withObject:nil afterDelay:30.0]; } } else { NSLog(@"No internet connection!"); } [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(productPurchased:) name:kProductPurchasedNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(productPurchaseFailed:) name:kProductPurchaseFailedNotification object: nil]; } - (void)dismissHUD:(id)arg { [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES]; self.hud = nil; } - (void)productsLoaded:(NSNotification *)notification { [NSObject cancelPreviousPerformRequestsWithTarget:self]; [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES]; } - (void)timeout:(id)arg { _hud.labelText = @"Timeout!"; _hud.detailsLabelText = @"Please try again later."; // _hud.customView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.jpg"]] autorelease]; _hud.mode = MBProgressHUDModeCustomView; [self performSelector:@selector(dismissHUD:) withObject:nil afterDelay:3.0]; } - (void)productPurchased:(NSNotification *)notification { [NSObject cancelPreviousPerformRequestsWithTarget:self]; [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES]; NSString *productIdentifier = (NSString *) notification.object; NSLog(@"Purchased: %@", productIdentifier); } - (void)productPurchaseFailed:(NSNotification *)notification { [NSObject cancelPreviousPerformRequestsWithTarget:self]; [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES]; SKPaymentTransaction * transaction = (SKPaymentTransaction *) notification.object; if (transaction.error.code != SKErrorPaymentCancelled) { UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Error!" message:transaction.error.localizedDescription delegate:nil cancelButtonTitle:nil otherButtonTitles:@"OK", nil] autorelease]; [alert show]; } } // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { // NSLog(@"Buying %@...", productIdentifier); SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.phoenixsports.Ats80Club.ATSStats1"]; [[SKPaymentQueue defaultQueue] addPayment:payment]; [super viewDidLoad]; } - (void)purchaseProUpgrade { NSLog(@"purchaseProUpgrade"); SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"com.phoenixsports.Ats80Club.ATSStats1"]; //SKPayment *payment = [SKPayment paymentWithProductIdentifier:product.identifier]; [[SKPaymentQueue defaultQueue] addPayment:payment]; } // // saves a record of the transaction by storing the receipt to disk // - (void)recordTransaction:(SKPaymentTransaction *)transaction { NSLog(@"recordTransaction"); if ([transaction.payment.productIdentifier isEqualToString:@"com.phoenixsports.Ats80Club.ATSStats1"]) { // save the transaction receipt to disk } } // // enable pro features // - (void)provideContent:(NSString *)productId { NSLog(@"provideContent"); if ([productId isEqualToString:@"com.phoenixsports.Ats80Club.ATSStats1"]) { // enable the pro features /* [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isProUpgradePurchased" ]; [[NSUserDefaults standardUserDefaults] synchronize];*/ } } // // removes the transaction from the queue and posts a notification with the transaction result // - (void)finishTransaction:(SKPaymentTransaction *)transaction wasSuccessful:(BOOL)wasSuccessful { NSLog(@"finishTransaction"); // remove the transaction from the payment queue. [[SKPaymentQueue defaultQueue]finishTransaction:transaction]; NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:transaction, @"transaction" , nil]; if (wasSuccessful) { // send out a notification that we’ve finished the transaction [[NSNotificationCenter defaultCenter] postNotificationName:@"InAppPurchaseManagerTransactionSucceededNotification" object:self userInfo:userInfo]; } else { // send out a notification for the failed transaction UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" message:@"Transation falied. Please try again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; [[NSNotificationCenter defaultCenter] postNotificationName:@"InAppPurchaseManagerTransactionFailedNotification" object:self userInfo:userInfo]; } } // // called when the transaction was successful // - (void)completeTransaction:(SKPaymentTransaction *)transaction { NSLog(@"completeTransaction"); [self recordTransaction:transaction]; //[self provideContent:transaction.payment.productIdentifier]; [self finishTransaction:transaction wasSuccessful:YES]; } // // called when a transaction has been restored and and successfully completed // - (void)restoreTransaction:(SKPaymentTransaction *)transaction { NSLog(@"restoreTransaction"); [self recordTransaction:transaction.originalTransaction]; //[self provideContent:transaction.originalTransaction.payment.productIdentifier]; [self finishTransaction:transaction wasSuccessful:YES]; } // // called when a transaction has failed // - (void)failedTransaction:(SKPaymentTransaction *)transaction { NSLog(@"failedTransaction"); if (transaction.error.code != SKErrorPaymentCancelled) { // error! [self finishTransaction:transaction wasSuccessful:NO]; } else { // this is fine, the user just cancelled, so don’t notify [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; } } - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { NSLog(@"updatedTransactions"); for (SKPaymentTransaction *transaction in transactions) { switch (transaction.transactionState) { case SKPaymentTransactionStatePurchased: NSLog(@"completeTransaction"); [self completeTransaction:transaction]; break; case SKPaymentTransactionStateFailed: NSLog(@"failedTransaction"); [self failedTransaction:transaction]; break; case SKPaymentTransactionStateRestored: NSLog(@"restoreTransaction"); [self restoreTransaction:transaction]; break; default: break; } } } And in my AppDelegate.m i write following line of code in " didFinishLaunchingWithOptions" method [[SKPaymentQueue defaultQueue] addTransactionObserver:[InAppRageIAPHelper sharedHelper]]; With the help of following Link :- http://www.raywenderlich.com/2797/introduction-to-in-app-purchases