1, 跳转到 App Store 直接编辑评论
- NSString *APPID = @"xxxxxxxx";//App ID
- NSString *nsStringToOpen = [NSString stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",APPID];
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:nsStringToOpen]];
2,App 内部直接评分
- if (@available(iOS 10.3, *)) {
- if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {
- // 防止键盘遮挡
- [[UIApplication sharedApplication].keyWindow endEditing:YES];
- [SKStoreReviewController requestReview];
- }
- }else {
- // Fallback on earlier versions
- }
3, 跳转到某 App 下载页面 一般用与打广告
- // 第一种方式
- NSString *appId = @"983122949";
- // 创建对象
- SKStoreProductViewController *storeVC = [[SKStoreProductViewController alloc] init];
- // 设置代理
- storeVC.delegate = self;
- // 初始化参数
- NSDictionary *dict = [NSDictionary dictionaryWithObject:appId forKey:SKStoreProductParameterITunesItemIdentifier];
- // 跳转 App Store 页
- [storeVC loadProductWithParameters:dict completionBlock:^(BOOL result, NSError * _Nullable error) {
- if (error) {
- NSLog(@"错误信息:%@",error.userInfo);
- }else{
- // 弹出模态视图
- [self presentViewController:storeVC animated:YES completion:nil];
- }
- }];
- // 第二种方式
- Class allow = NSClassFromString(@"SKStoreProductViewController");
- if (allow != nil && ![[UIDevice currentDevice].model isEqualToString:@"iPhone Simulator"]) {
- NSLog(@"loading");
- SKStoreProductViewController *product = [[SKStoreProductViewController alloc] init];
- product.delegate = self;
- [product loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier:@"983122949"} completionBlock:^(BOOL result, NSError * _Nullable error) {
- NSLog(@"completion");
- NSLog(@"--%d-%@",result,error);
- if (!error) {
- [self presentViewController:product animated:YES completion:nil];
- }else{
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@""]];
- }
- }];
- }
- #pragma mark -- SKStoreProductViewControllerDelegate
- /**
- SKStoreProductViewControllerDelegate 方法, 选择完成之后的处理
- @param viewController SKStoreProductViewController
- */
- - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController{
- NSLog(@"将要退出 App Store 页面了");
- [viewController dismissViewControllerAnimated:YES completion:^{
- NSLog(@"已经退出 App Store 页面完成了");
- }];
- }
4, 跳转评论
在 iOS 11 之前, 为了让用户直接跳到 App Store 的评论页面, 你的代码大概是这样写的:
- -(void)goToAppStore{
- NSString *itunesurl = @"[http://itunes.apple.com/webObjects/MZStore.woa/wa/viewContentsUserReviews?id=XXXXXXXX&pageNumber=0&sortOrdering=2&type=Purple](https://links.jianshu.com/go?to=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=XXXXXXXX&pageNumber=0&sortOrdering=2&type=Purple)+Software&mt=8";
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:itunesurl]];
- }
在 iOS 11 上不灵了, 直接提示 "无法连接 App Store"!
我试了一下, 果然如此, 顺便看了一下其他家的 App, 不少大厂的 App 也掉进了这个坑里还没爬出来, 比如饿了么, 百度外卖等. 经过搜索引擎的帮助, 我找到了如下办法:
- -(void)goToAppStore{
- NSString *itunesurl = @"itms-[apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review](https://links.jianshu.com/go?to=apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review)";
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:itunesurl]];
- }
注意: 把里面的 XXX 替换成你自己的 App ID. 如果不知道 App ID, 打包到 appstore 的时候有 App ID
iOS 11 跳转到 App 设置
- NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
- [[UIApplication sharedApplication]openURL:url];
如何阅读苹果开发文档
来源: http://www.jianshu.com/p/1d044d5dc2c9