应用内跳转下载页
使用StoreKit中的SKStoreProductViewController类
- 需要导入StoreKit.framework,#import <StoreKit/StoreKit.h>
- 实例化一个SKStoreProductViewController类
- 设置它的delegate
- 把sotre product视图控制器显示给消费者
注意: SKStoreProductViewController只能以模态的方式弹出
- 示例代码
//pId 是APP在AppleStore上的id
- (void)presentProductInfoWithId:(NSString *)pId
{
SKStoreProductViewController *spCtrl = [[SKStoreProductViewController alloc] init];
//有一个代理方法,在完成/取消购买操作的时候调用,可以用于返回之前的页面
spCtrl.delegate = self;
[spCtrl loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier:pId}
completionBlock:^(BOOL result, NSError *error) {
if (result)
{
} else
{
NSLog(@"%@", error);
}
}];
//In most cases, you should load the product information and then present the view controller. However, if you load new product information while the view controller is presented, the contents of the view controller are replaced after the new product data is loaded. -- 摘自官方文档
//由于loadProductWithParameters是同步的,有时候需要等很久才会block回调,所以直接弹出控制器,等到信息获取到之后,会自动刷新弹出的控制器界面内容
[self presentViewController:spCtrl
animated:YES
completion:nil];
}
#pragma mark - SKStoreProductViewControllerDelegate
//在代理方法中,将视图dismiss
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
[viewController dismissViewControllerAnimated:YES completion:nil];
}
应用内评分
在10.3系统,苹果终于支持在APP内直接评分了,而不是跳转到商店去,这样让很多APP的用户都失去了想去评分的想法(吐槽的可能例外)
- 我们可以直接使用SKStoreReviewController这个类,调用起来很简单 [SKStoreReviewController requestReview]
注意:不是正式的release版本,评分弹出框无法进行提交;一年只允许弹出3次
- 示例代码
//__IPHONE_10_3
- (void)rateAction
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100300
[SKStoreReviewController requestReview];
#else
{
NSString *appId = @"yourAppId";
NSString *urlStr = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?action=write-review", appId];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
}
#endif
}
网友评论