IAP是 In-App Purchases的缩写,是程序内部购买的意思。有四种类型:Consumable,Non-Consumable,Auto-RenewableSubscriptions,Non-RenewingSubscription。现在以第一种Consumable(消费品)为例。
步骤如下:在itunesconnect里的manage yourapplication,点击对应的App的图标,进入到App里,在右上角会有好几个蓝色按钮,其中有一个是Manage In-AppPurchases的按钮,点击进来,然后会出现Create New按钮,点击创建新的IAP,点击后,会出现所需IAP类型,选择Consumable,点击 choose后,先输入referencename,这个是参考名字(没多大讲究,相当于标识符),然后输入Product ID(这个有讲究,在程序里会用到),必须是app的bundle ID加上后缀,比如:
com.xxx.ooo.aaa,com.xxx.ooo是App bundleID,aaa是iap的标识符,输入完成后,点击add language 添加语言,displayname就是显示的名字,以及下面的现实描述,点击下面PriceTier选择售价,然后点击save,在itunesconnect的第一步就完成
- //一、导入MKStore的包
- 在需要触发下载的地方写一个 弹出提示框
- UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"网络连接异常,下载失败"
- message:@"请重新点击下载"
- delegate:self
- cancelButtonTitle:@"确定"
- otherButtonTitles:nil, nil];
- [alertView show];
- [alertView release];
- alertView = nil;
- //点击确定的时候就会回调 实现代理的方法,触发buyAction 这个方法。
- /** 购买操作 */
- - (void) buyAction{
- NSString *pid = PRODUCT_ID;
- NSMutableArray * array = [NSMutableArray arrayWithCapacity:0];
- [array addObject:pid];
- [[MKStoreManager sharedManager] requestProductData:array];
- [MKStoreManager sharedManager].delegate = self;
- }
- #pragma mark MKStoreManager Delegate Method
- - (void)didRequestProductData:(NSArray *)skProducts {
- //NSLog(@"paying......0 ");
- if (skProducts == nil || [skProducts count] == 0) {
- return;
- }
- SKProduct *product = [skProducts objectAtIndex:0];
- NSLog(@"product is %@",product);
- SKPayment *pay = [SKPayment paymentWithProductIdentifier:[product productIdentifier]];
- [[SKPaymentQueue defaultQueue] addPayment:pay];
- //NSLog(@"paying......");
- }
- /** 验证AppStore数据信息 */
- - (void)finishedTransactionWithState:(TransactionState)state {
- NSString *message = nil; //提示信息
- switch (state) {
- case TransactionPurchasing:
- message = [NSString stringWithString: @"支付操作进行中...!"];
- break;
- case TransactionCompleted:
- message = [NSString stringWithString: @"支付成功...!"];
- NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
- [ud setObject:@"1" forKey:@"isbuy"];
- break;
- case TransactionRestored:
- message = [NSString stringWithString: @"恢复支付操作!"];
- break;
- case TransactionFailed:
- message = [NSString stringWithString: @"支付失败!"];
- break;
- default:
- break;
- }
- //[Utils alertWithTitle: @"支付" message: message];
- }
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
- if(buttonIndex == 1){
- [self buyAction];
- }
- }