首页 > IOS6.0 应用内直接下载程序 不需跳转AppStore

IOS6.0 应用内直接下载程序 不需跳转AppStore

闲来没事看了篇文章 应用内创建应用商店环境,不跳转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<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];



}

 

转载于:https://www.cnblogs.com/superhappy/archive/2013/05/09/3069210.html

更多相关:

  • //检查更新页面- (void)Renew{        NSDictionary *infoDic = [[NSBundle mainBundle]infoDictionary];        NSString *version = [infoDic valueForKey:@"CFBundleShortVersionStrin...

  • * 苹果的"生态圈",钥匙串访问,使用 AES 256 加密算法,能够保证用户密码的安全 * 钥匙串访问SDK,是苹果在 `iOS 7.0.3` 版本以后公布的 * 钥匙串访问的接口是纯 C 语言的,但是,网络上有框架把它封装成 OC 的,使用相当简单! * 钥匙串访问的密码保存在哪里?     * 只有苹果知道!是为了进一步保障...

  • IOS开发数据库篇—SQLite模糊查询 一、示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 1 // 2 // YYPerson.h 3 // 03-模糊查询 4 // 5 // Created by apple on 14-7-27. 6 // C...