iOS6.0添加了新的api<StoreKit/StoreKit.h>,可以在应用内直接打开App Store。上代码:
应用内打开App Store
#import<StoreKit/StoreKit.h>
遵守协议SKStoreProductViewControllerDelegate
/**
应用内打开App Store 需要APP在App Store中的ID
*/
- (void)openAppStore {
SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewController alloc] init];
storeProductViewController.delegate = self;
[storeProductViewController loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : KAppID} completionBlock:^(BOOL result, NSError * _Nullable error) {
if (!error) {
[self presentViewController:storeProductViewController animated:YES completion:nil];
}
}];
}
#pragma mark -- SKStoreProductViewControllerDelegate
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
[viewController dismissViewControllerAnimated:YES completion:nil];
}
应用内评分
iOS10.3之后可以在应用内弹窗提示用户给APP评分,而且开发者可以在开发者管理后台 iTunes Connect 中“我的 App - 活动 - 评分与评论”能看到用户给 App 留下的评论,并可以选择某一条评论进行回复。
- 很多文章说每年只用3次机会弹窗提示用户,目前我还没有验证是不是这个样子。
- 开发模式下,调用此方法,可以一直弹出评分视图,但提交是灰色不可点击。
- 新API虽然方便又好用,但是次数太少,而且弹出了用户可能也会点击“取消”,这也会使次数-1!而且,这个功能是有可能被用户关闭的,在系统设置->iTunes Store与App Store中可以找到“App内评分及评论”的开关,如果用户关闭了这个开关,则上面的窗口也不会弹出。
弹窗提示的时机
- 提现成功后
- 活跃用户(登录次数多/天或停留时间长)
- 当用户处于任务中不要提示
/**
展示APP评分弹框
*/
- (void)showAppReview {
NSString *appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"];
NSString *title = [NSString stringWithFormat:@"喜欢%@吗?\n给个五星好评吧,亲!",appName];
UIAlertController * alertVC = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert];
//跳转APPStore 中应用的撰写评价页面
UIAlertAction *review = [UIAlertAction actionWithTitle:@"我要吐槽" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSURL *appReviewUrl = [NSURL URLWithString:KAppStoreGradeUrl];//换成你应用的 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];
}
}];
[alertVC addAction:review];
//不做任何操作
UIAlertAction *noReview = [UIAlertAction actionWithTitle:@"用用再说" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
[alertVC removeFromParentViewController];
}];
[alertVC addAction:noReview];
//判断系统,是否添加五星好评的入口
if (@available(iOS 10.3, *)) {
if([SKStoreReviewController respondsToSelector:@selector(requestReview)]){
UIAlertAction *fiveStar = [UIAlertAction actionWithTitle:@"五星好评" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//此处应该在APP内做一个显示次数的记录 后期实现
[[UIApplication sharedApplication].keyWindow endEditing:YES];//防止键盘遮挡
[SKStoreReviewController requestReview];//无论您请求评分提示多少次,系统都会在365天内最多显示三次提示
}];
[alertVC addAction:fiveStar];
}
}
dispatch_async(dispatch_get_main_queue(), ^{
[self presentViewController:alertVC animated:YES completion:nil];
});
}
参考
https://www.jianshu.com/p/c31362945983
https://www.jianshu.com/p/9b3c76e60ce3
https://www.jianshu.com/p/cdf74acb45f4?utm_source=desktop&utm_medium=timeline
https://www.jianshu.com/p/4f9fe2e1879e
网友评论