آموزش خرید درون برنامه ای در برنامه نویسی iOS
آموزش خرید درون برنامه ای در برنامه نویسی iOS
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش خرید درون برنامه ای در برنامه نویسی iOS خواهیم پرداخت.
خرید درون برنامه ای برای خرید محتوای اضافی یا ارتقا ویژگی های مربوط به یک برنامه کاربرد دارد.
مرحله 1 – به iTunes متصل شوید، اطمینان حاصل کنید که یک شناسه برنامه منحصر به فرد دارید و هنگامی که ما به روزرسانی برنامه را با شناسه بسته و ورود کد در Xcode با مشخصات تهیه کننده مربوطه ایجاد می کنیم.
مرحله 2 – یک برنامه جدید ایجاد کنید و اطلاعات برنامه را به روز کنید. درباره اسناد افزودن برنامه های جدید در apple می توانید اطلاعات بیشتری در این مورد کسب کنید.
مرحله 3 – محصول جدیدی را برای خرید درون برنامه ای در مدیریت خرید درون برنامه ای صفحه برنامه خود اضافه کنید.
مرحله 4 – اطمینان حاصل کنید که جزئیات بانک برنامه خود را تنظیم کرده اید. برای کار با خرید این برنامه باید تنظیم شود. همچنین با استفاده از گزینه Manage Users در صفحه اتصال iTunes برنامه خود ، یک حساب کاربری آزمایشی ایجاد کنید.
مرحله 5 – مراحل بعدی مربوط به مدیریت کد و ایجاد UI برای خرید درون برنامه ای ما است.
مرحله 6 – یک برنامه نمایشی ایجاد کنید و شناسه بسته را وارد کنید شناسه مشخص شده در اتصال iTunes است.
مرحله 7 – ViewController.xib را همانطور که در زیر نشان داده شده به روز کنید –
مرحله 8 – به ترتیب IBOutlets برای سه برچسب و دکمه نامگذاری آنها به ترتیب ProductTitleLabel ، ProductDescriptionLabel ، ProductPriceLabel و BuyButton.
مرحله 9 – فایل پروژه خود را انتخاب کنید، سپس اهداف را انتخاب کنید و سپس StoreKit.framework را اضافه کنید.
مرحله 10 – ViewController.h را به صورت زیر به روز کنید –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#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 |
مرحله 11 – ViewController.m را به صورت زیر به روز کنید –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
#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 می توانید بیش از یک محصول اضافه کنید. مشابه اقدامات مربوط به خرید را برای شناسه محصولاتی که اضافه می کنید انجام دهید.
خروجی
وقتی برنامه را اجرا می کنیم، خروجی زیر را خواهیم گرفت –
اطمینان حاصل کنید که از حساب خود در صفحه تنظیمات خارج شده اید. با کلیک بر روی خرید اولیه، استفاده از Apple ID موجود را انتخاب کنید. نام کاربری و رمز ورود حساب معتبر خود را وارد کنید. در عرض چند ثانیه هشدار زیر به شما نشان داده می شود.
هنگامی که محصول شما با موفقیت خریداری شد، هشدار زیر را دریافت خواهید کرد. می توانید کدهای مربوطه را برای به روزرسانی ویژگی های برنامه در جایی که این هشدار را نشان می دهیم مشاهده کنید.
منبع.
لیست جلسات قبل آموزش برنامه نویسی iOS
- آموزش برنامه نویسی iOS
- شروع آموزش برنامه نویسی iOS
- آموزش تنظیمات محیطی iOS
- آموزش objective C در بزنامه نویسی iOS
- آموزش ایجاد برنامه آیفون در برنامه نویسی iOS
- آموزش اکشن و خروجی در برنامه نویسی iOS
- آموزش Delegate در iOS
- آموزش عناصر UI در برنامه نویسی iOS
- آموزش ایجاد شتاب سنج در برنامه نویسی iOS
- برنامه های جهانی در برنامه نویسی iOS
- آموزش مدیریت دوربین در برنامه نویسی iOS
- آموزش مدیریت مکان در برنامه نویسی iOS
- آموزش پایگاه داده SQLite در برنامه نویسی iOS
- آموزش ارسال ایمیل در برنامه نویسی iOS
- آموزش صدا و تصویر در برنامه نویسی iOS
- آموزش مدیریت فایل در برنامه نویسی iOS
- آموزش دسترسی به نقشه ها در برنامه نویسی iOS
دیدگاه شما