آموزش خرید درون برنامه ای در برنامه نویسی iOS 

3 سال پیش
آموزش خرید درون برنامه ای در برنامه نویسی iOS

آموزش خرید درون برنامه ای در برنامه نویسی iOS 

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش خرید درون برنامه ای در برنامه نویسی iOS خواهیم پرداخت.

خرید درون برنامه ای برای خرید محتوای اضافی یا ارتقا ویژگی های مربوط به یک برنامه کاربرد دارد.

مرحله ۱ – به iTunes متصل شوید، اطمینان حاصل کنید که یک شناسه برنامه منحصر به فرد دارید و هنگامی که ما به روزرسانی برنامه را با شناسه بسته و ورود کد در Xcode با مشخصات تهیه کننده مربوطه ایجاد می کنیم.

مرحله ۲ – یک برنامه جدید ایجاد کنید و اطلاعات برنامه را به روز کنید. درباره اسناد افزودن برنامه های جدید در apple می توانید اطلاعات بیشتری در این مورد کسب کنید.

مرحله ۳ – محصول جدیدی را برای خرید درون برنامه ای در مدیریت خرید درون برنامه ای صفحه برنامه خود اضافه کنید.

مرحله ۴ – اطمینان حاصل کنید که جزئیات بانک برنامه خود را تنظیم کرده اید. برای کار با خرید این برنامه باید تنظیم شود. همچنین با استفاده از گزینه Manage Users در صفحه اتصال iTunes برنامه خود ، یک حساب کاربری آزمایشی ایجاد کنید.

مرحله ۵ – مراحل بعدی مربوط به مدیریت کد و ایجاد UI برای خرید درون برنامه ای ما است.

مرحله ۶ – یک برنامه نمایشی ایجاد کنید و شناسه بسته را وارد کنید شناسه مشخص شده در اتصال iTunes است.

مرحله ۷ – ViewController.xib را همانطور که در زیر نشان داده شده به روز کنید –

iOS Tutorial
مرحله ۸ – به ترتیب IBOutlets برای سه برچسب و دکمه نامگذاری آنها به ترتیب ProductTitleLabel ، ProductDescriptionLabel ، ProductPriceLabel و BuyButton.

مرحله ۹ – فایل پروژه خود را انتخاب کنید، سپس اهداف را انتخاب کنید و سپس StoreKit.framework را اضافه کنید.

مرحله ۱۰ – ViewController.h را به صورت زیر به روز کنید –

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

@interface ViewController : UIViewController<
SKProductsRequestDelegate,SKPaymentTransactionObserver> {
   SKProductsRequest *productsRequest;
   NSArray *validProducts;
   UIActivityIndicatorView *activityIndicatorView;
   IBOutlet UILabel *productTitleLabel;
   IBOutlet UILabel *productDescriptionLabel;
   IBOutlet UILabel *productPriceLabel;
   IBOutlet UIButton *purchaseButton;
}

- (void)fetchAvailableProducts;
- (BOOL)canMakePurchases;
- (void)purchaseMyProduct:(SKProduct*)product;
- (IBAction)purchase:(id)sender;

@end

 

مرحله ۱۱ – ViewController.m را به صورت زیر به روز کنید –

#import "ViewController.h"
#define kTutorialPointProductID 
@"com.tutorialPoints.testApp.testProduct"

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad {
   [super viewDidLoad];
   
   // Adding activity indicator
   activityIndicatorView = [[UIActivityIndicatorView alloc]
   initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
   activityIndicatorView.center = self.view.center;
   [activityIndicatorView hidesWhenStopped];
   [self.view addSubview:activityIndicatorView];
   [activityIndicatorView startAnimating];
   
   //Hide purchase button initially
   purchaseButton.hidden = YES;
   [self fetchAvailableProducts];
}

- (void)didReceiveMemoryWarning {
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}

-(void)fetchAvailableProducts {
   NSSet *productIdentifiers = [NSSet 
   setWithObjects:kTutorialPointProductID,nil];
   productsRequest = [[SKProductsRequest alloc] 
   initWithProductIdentifiers:productIdentifiers];
   productsRequest.delegate = self;
   [productsRequest start];
}

- (BOOL)canMakePurchases {
   return [SKPaymentQueue canMakePayments];
}

- (void)purchaseMyProduct:(SKProduct*)product {
   if ([self canMakePurchases]) {
      SKPayment *payment = [SKPayment paymentWithProduct:product];
      [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
      [[SKPaymentQueue defaultQueue] addPayment:payment];
   } else {
      UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
      @"Purchases are disabled in your device" message:nil delegate:
      self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
      [alertView show];
   }
}
-(IBAction)purchase:(id)sender {
   [self purchaseMyProduct:[validProducts objectAtIndex:0]];
   purchaseButton.enabled = NO; 
}

#pragma mark StoreKit Delegate

-(void)paymentQueue:(SKPaymentQueue *)queue 
updatedTransactions:(NSArray *)transactions {
   for (SKPaymentTransaction *transaction in transactions) {
      switch (transaction.transactionState) {
         case SKPaymentTransactionStatePurchasing:
            NSLog(@"Purchasing");
         break;
         
         case SKPaymentTransactionStatePurchased:
            if ([transaction.payment.productIdentifier 
            isEqualToString:kTutorialPointProductID]) {
               NSLog(@"Purchased ");
               UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
               @"Purchase is completed succesfully" message:nil delegate:
               self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
               [alertView show];
            }
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
         break;
            
         case SKPaymentTransactionStateRestored:
            NSLog(@"Restored ");
            [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
         break;
            
         case SKPaymentTransactionStateFailed:
            NSLog(@"Purchase failed ");
         break
         default:
         break;
      }
   }
}

-(void)productsRequest:(SKProductsRequest *)request 
didReceiveResponse:(SKProductsResponse *)response {
   SKProduct *validProduct = nil;
   int count = [response.products count];
   
   if (count>0) {
      validProducts = response.products;
      validProduct = [response.products objectAtIndex:0];
      
      if ([validProduct.productIdentifier 
         isEqualToString:kTutorialPointProductID]) {
         [productTitleLabel setText:[NSString stringWithFormat:
            @"Product Title: %@",validProduct.localizedTitle]];
         [productDescriptionLabel setText:[NSString stringWithFormat:
            @"Product Desc: %@",validProduct.localizedDescription]];
         [productPriceLabel setText:[NSString stringWithFormat:
            @"Product Price: %@",validProduct.price]];
      }
   } else {
      UIAlertView *tmp = [[UIAlertView alloc]
         initWithTitle:@"Not Available"
         message:@"No products to purchase"
         delegate:self
         cancelButtonTitle:nil
         otherButtonTitles:@"Ok", nil];
         [tmp show];
   }
   
   [activityIndicatorView stopAnimating];
   purchaseButton.hidden = NO;
}
@end

 

توجه: شما باید kTutorialPointProductID را به ProductID ای که برای خرید درون برنامه ای خود ایجاد کرده اید به روز کنید. با به روزرسانی NSSet ProductIdentifiers در fetchAvailableProducts می توانید بیش از یک محصول اضافه کنید. مشابه  اقدامات مربوط به خرید را برای شناسه محصولاتی که اضافه می کنید انجام دهید.

خروجی

وقتی برنامه را اجرا می کنیم، خروجی زیر را خواهیم گرفت –

iOS Tutorial

اطمینان حاصل کنید که از حساب خود در صفحه تنظیمات خارج شده اید. با کلیک بر روی خرید اولیه، استفاده از Apple ID موجود را انتخاب کنید. نام کاربری و رمز ورود حساب معتبر خود را وارد کنید. در عرض چند ثانیه هشدار زیر به شما نشان داده می شود.

iOS Tutorial

هنگامی که محصول شما با موفقیت خریداری شد، هشدار زیر را دریافت خواهید کرد. می توانید کدهای مربوطه را برای به روزرسانی ویژگی های برنامه در جایی که این هشدار را نشان می دهیم مشاهده کنید.

 

iOS Tutorial

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی iOS

  1. آموزش برنامه نویسی iOS
  2.  شروع آموزش برنامه نویسی iOS 
  3.  آموزش تنظیمات محیطی iOS 
  4. آموزش objective C در بزنامه نویسی iOS 
  5. آموزش ایجاد برنامه آیفون در برنامه نویسی iOS
  6. آموزش اکشن و خروجی در برنامه نویسی iOS
  7. آموزش Delegate در iOS 
  8.  آموزش عناصر UI در برنامه نویسی iOS 
  9. آموزش ایجاد شتاب سنج در برنامه نویسی iOS
  10.  برنامه های جهانی در برنامه نویسی iOS
  11. آموزش مدیریت دوربین در برنامه نویسی iOS 
  12. آموزش مدیریت مکان در برنامه نویسی iOS 
  13. آموزش پایگاه داده SQLite در برنامه نویسی iOS 
  14. آموزش ارسال ایمیل در برنامه نویسی iOS 
  15. آموزش صدا و تصویر در برنامه نویسی iOS 
  16. آموزش مدیریت فایل در برنامه نویسی iOS 
  17. آموزش دسترسی به نقشه ها در برنامه نویسی iOS 
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه