Mua trong ứng dụng được sử dụng để mua nội dung bổ sung hoặc nâng cấp các tính năng liên quan đến ứng dụng.
Các bước liên quan
Bước 1 – Trong kết nối iTunes, hãy đảm bảo rằng bạn có một ID ứng dụng duy nhất và khi chúng tôi tạo bản cập nhật ứng dụng bằng ID gói và ký mã trong Xcode với hồ sơ cấp phép tương ứng.
Bước 2 – Tạo ứng dụng mới và cập nhật thông tin ứng dụng. Bạn có thể biết thêm về điều này trong tài liệu Thêm ứng dụng mới của apple .
Bước 3 – Thêm sản phẩm mới để mua trong ứng dụng trong Quản lý mua trong ứng dụng của trang ứng dụng của bạn.
Bước 4 – Đảm bảo bạn thiết lập chi tiết ngân hàng cho ứng dụng của mình. Điều này cần được thiết lập để mua hàng trong ứng dụng hoạt động. Ngoài ra, hãy tạo tài khoản người dùng thử nghiệm bằng cách sử dụng tùy chọn Quản lý người dùng trong trang kết nối iTunes của ứng dụng của bạn.
Bước 5 – Các bước tiếp theo liên quan đến xử lý mã và tạo giao diện người dùng cho giao dịch mua trong ứng dụng của chúng tôi.
Bước 6 – Tạo một ứng dụng xem duy nhất và nhập số nhận dạng gói là số nhận dạng được chỉ định trong kết nối iTunes.
Bước 7 – Cập nhật ViewController.xib như hình dưới đây
Bước 8 – Tạo IBOutlets cho ba nhãn và nút đặt tên cho chúng lần lượt là productTitleLabel, productDescriptionLabel, productPriceLabel và buyButton.
Bước 9 – Chọn tệp dự án của bạn, sau đó chọn mục tiêu và sau đó thêm StoreKit.framework .
Bước 10 – Cập nhật ViewController.h như sau:
#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
Bước 11 – Cập nhật ViewController.m như sau:
#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
Ghi chú
Bạn phải cập nhật kTutorialPointProductID thành productID bạn đã tạo cho Mua hàng trong ứng dụng của mình. Bạn có thể thêm nhiều sản phẩm bằng cách cập nhật NSSet của productIdentifier trong fetchAvailableProducts. Tương tự, xử lý các hành động liên quan đến mua hàng cho các ID sản phẩm bạn thêm.
Đầu ra
Khi chúng tôi chạy ứng dụng, chúng tôi sẽ nhận được kết quả sau:
Đảm bảo bạn đã đăng xuất khỏi tài khoản của mình trong màn hình cài đặt. Khi nhấp vào Bắt đầu mua, hãy chọn Sử dụng ID Apple Hiện tại. Nhập tên người dùng và mật khẩu tài khoản thử nghiệm hợp lệ của bạn. Bạn sẽ được hiển thị cảnh báo sau trong vài giây.
Khi sản phẩm của bạn được mua thành công, bạn sẽ nhận được cảnh báo sau. Bạn có thể thấy mã liên quan để cập nhật các tính năng ứng dụng nơi chúng tôi hiển thị cảnh báo này.