闲来没事看了篇文章 应用内创建应用商店环境,不跳转AppStore. 先武断的想一句:放屁。然后好奇的进去看看,原来是IOS6.0的新特性,顿感惭愧。研究下

 

SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话,那SKStoreProductViewController使用起来也非常简单了。当你希望向用户展示App Store中产品时,你需要:

1.实例化一个SKStoreProductViewController类

2.设置它的delegate

3.把sotre product视图控制器显示给消费者

 

剩下的就交给操作系统来处理了。需要记住一点的是SKStoreProductViewController只能以模态的方式显示。SKStoreProductViewControllerDelegate协议定义了一个单独的方法—productViewControllerDidFinish:,当消费者离开App Store时会调用这个方法—一般是通过点击左上角画面中的取消按钮。通过给代理发送productViewControllerDidFinish:消息,操作系统就会把控制权返回到你的程序。当然你不能忘了 只支持IOS6.0及其以上~~

 

步骤:

1.添加 storeKit.framework

2.头文件里 加上  

#import 

@interface ViewController : UIViewController<</span>SKStoreProductViewControllerDelegate>

3.直接在m中实现

- (IBAction)doAction:(UIButton *)sender {

      [self showAppInApp:@"xxxxxx"];//此处xxxxx需要替换为需要的appID

}

- (void)showAppInApp:(NSString *)_appId {

  Class isAllow = NSClassFromString(@"SKStoreProductViewController");

  if (isAllow != nil) {

    SKStoreProductViewController *sKStoreProductViewController = [[SKStoreProductViewController alloc] init];

    sKStoreProductViewController.delegate = self;

    [sKStoreProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier: _appId}

                      completionBlock:^(BOOL result, NSError *error) {

                        if (result) {

                          [self presentViewController:_SKSVC

                                             animated:YES

                                           completion:nil];

                        }

                        else{

                          NSLog(@"%@",error);

                        }

                      }];

  }

  else{

    //低于iOS6没有这个类

    NSString *string = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/us/app/id%@?mt=8",_appId];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];

  }

}

#pragma mark - SKStoreProductViewControllerDelegate 

//对视图消失的处理

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {

  [viewController dismissViewControllerAnimated:YES

                                     completion:nil];

}