从iOS6以后苹果提供了在应用内部打开App Store中某一个应用下载页面的方式,提供了一个SKStoreProductViewController的类对该功能进行支持。
首先,需要导入#import <StoreKit/StoreKit.h>。
其次,需要遵守<SKStoreProductViewControllerDelegate>这个协议。
第三,在该类中插入如下代码即可。
- - (void)showStoreProductInApp:(NSString *)appID{
- Class isAllow = NSClassFromString(@"SKStoreProductViewController");
- if (isAllow != nil) {
- SKStoreProductViewController *sKStoreProductViewController = [[SKStoreProductViewController alloc] init];
- [sKStoreProductViewController.view setFrame:CGRectMake(0, 200, 320, 200)];
- [sKStoreProductViewController setDelegate:self];
- [sKStoreProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier: appID}
- completionBlock:^(BOOL result, NSError *error) {
- if (result) {
- [self presentViewController:sKStoreProductViewController
- animated:YES
- completion:nil];
- [self removeNotice];
- }else{
- NSLog(@"error:%@",error);
- }
- }];
- }else{
- //低于iOS6的系统版本没有这个类,不支持这个功能
- NSString *string = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/xxxxxxx/app/id%@?mt=8",appID];
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];
- }
- }
- [sKStoreProductViewController loadProductWithParameters:(NSDictionary *) completionBlock:^(BOOL result, NSError *error) {}];
- NSString * const SKStoreProductParameterITunesItemIdentifier ;
- NSString * const SKStoreProductParameterAffiliateToken ;
- NSString * const SKStoreProductParameterCampaignToken;
SKStoreProductParameterITunesItemIdentifier是希望展示App的AppID,该Key所关联的值是一个NSNumber类型。支持iOS6以后的系统版本。
SKStoreProductParameterAffiliateToken是附属令牌,该Key所关联的值是NSString类型。例如在iBook中app的ID,是iOS8中新添加的,支持iOS8以后的系统版本。
SKStoreProductParameterCampaignToken是混合令牌,该Key所关联的值是一个40byte的NSString类型,使用这个令牌,你能看到点击和销售的数据报告。支持iOS8以后的系统版本。