应用内打开app 的APPStore页面
StoreKit 在ios 6 及以上版本可用,或者不在app内打开用openurl的形式
- 导入
#import <StoreKit/StoreKit.h>
- 实现代理 SKStoreProductViewControllerDelegate
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
NSLog(@" 评价完成");
[self dismissViewControllerAnimated:YES completion:nil];
}
- 代码如下
- (void)showAppStoreReviewId:(NSString *)appId
{
NSLog(@"--------show");
SKStoreProductViewController *storeProductVC = [[SKStoreProductViewController alloc]init];
storeProductVC.delegate = self;
NSDictionary *dict = [NSDictionary dictionaryWithObject:appId forKey:SKStoreProductParameterITunesItemIdentifier];
[storeProductVC loadProductWithParameters:dict completionBlock:^(BOOL result, NSError * _Nullable error) {
NSLog(@"-----%d---%@",result,error);
if (!error) {
[self presentViewController:storeProductVC animated:YES completion:nil];
}
}];
}
结果如图所示:
这里需要注意:模拟器上面block没反应,在真机上可用。
网上所必须登录的app账号和app发布的账号在同一个国家,这个没有测试,不知道真假。我在真机上直接测试就成功了
应用内评分
- (void)addAppReview{
UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:@"亲喜欢**APP么?给个五星好评吧!" message:nil preferredStyle:UIAlertControllerStyleAlert];
//跳转APPStore 中应用的撰写评价页面
UIAlertAction *review = [UIAlertAction actionWithTitle:@"我要吐槽" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSURL *appReviewUrl = [NSURL URLWithString:[NSString stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",@"1309438537"]];//换成应用的 APPID
CGFloat version = [[[UIDevice currentDevice]systemVersion]floatValue];
if (version >= 10.0) {
/// 大于等于10.0系统使用此openURL方法
[[UIApplication sharedApplication] openURL:appReviewUrl options:@{} completionHandler:nil];
}else{
[[UIApplication sharedApplication] openURL:appReviewUrl];
}
}];
//不做任何操作
UIAlertAction *noReview = [UIAlertAction actionWithTitle:@"用用再说" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[alertVC removeFromParentViewController];
}];
[alertVC addAction:review];
[alertVC addAction:noReview];
//判断系统,是否添加五星好评的入口
if([SKStoreReviewController respondsToSelector:@selector(requestReview)]){
UIAlertAction *fiveStar = [UIAlertAction actionWithTitle:@"五星好评" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[[UIApplication sharedApplication].keyWindow endEditing:YES];
// 五星好评
[SKStoreReviewController requestReview];
}];
[alertVC addAction:fiveStar];
}
dispatch_async(dispatch_get_main_queue(), ^{
[[[[UIApplication sharedApplication]keyWindow] rootViewController] presentViewController:alertVC animated:YES completion:nil];
});
}