您的位置:首页 > 移动开发

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

2015-06-10 11:22 483 查看
闲来没事看了篇文章 应用内创建应用商店环境,不跳转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 <StoreKit/StoreKit.h>

@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];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: