本文共 1051 字,大约阅读时间需要 3 分钟。
iOS 系统正在变得更加人性化哈,iOS10.3中新添加了一个API 让用户可以在APP内直接给APP打分(没法写评语),为了项目更好的评分,我正准备在项目中添加这个功能,实现起来很简洁,操作也很简单,但是一年只能弹出3次,何时弹出,具体控制逻辑后续给出参考。基本实现参考如下:
+ (void)showAppStoreReView{ //仅支持iOS10.3+(需要做校验)且每个APP内每年最多弹出3次评分alart if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) { //防止键盘遮挡 [[UIApplication sharedApplication].keyWindow endEditing:YES]; [SKStoreReviewController requestReview]; } else { NSString *APPID = [PlistReader valueForKeyInConfig:@"APP_ID"]; NSString *appStoreReviewStr = [NSString stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",APPID]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appStoreReviewStr]]; }}
正当我信心满满的开始测试时,点击“以后”按钮,出现了我们最讨厌的问题,程序崩溃了,看到崩溃信息。
[SKRemoteReviewViewController release]: message sent to deallocated instance 0x101bc2e00
我的内心更是崩溃的,令人。
我记得没有直接使用过 SKRemoteReviewViewController 这个类啊 。SKRemoteReviewViewController 是和SKStoreReviewController有关联,但属于苹果内部文件。
经过确认,这个情况只有在debug调试模式下遇到,上线后,并没有出现因此造成的闪退问题。