添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

应用中都或多或少地会引导用户去进行应用评论,常用的方法大概有以下几种:

(1)使用deep link。在app地址链接后边拼接上action=write-review可以直接跳转到App Store应用中对应的应用评价界面进行评价.

(2) 使用SKStoreReviewController。在iOS10.3之后,iOS 提供了一种新的评价方式,可以不用跳转出应用在应用内就完成应用的星级评价以及文字评价.在api文档里,该类只有一个方法,看上去使用很简单.但是坑点还是挺多,

2.1 调用了该方法不一定会有弹窗供用户交互操作

从这段说明里,我们就看出官方给出的主意点:

  • 该方法在iOS 10.3之后才可以使用,所以在使用时需要进行版本控制;
  • 这个方法主要用于申请用户评分,但这个方法不一定会显示UI,也就是说即使你调用了该方法也不一定会有评级弹窗显示,最终是否有显示主要有App Store的相关政策决定,所以这个方法不适用于任何来自按钮或者其他用户直接交互的操作;
  • 在开发模式下,调用该方法一定会展示UI弹窗以供开发测试(不过提交按钮在开发模式下不能提交文本提交),但是如果你使用了TestFlight进行测试,会发现调用该方法没有任何反应;
  • 当调用这个方法进行用户评价时,交互的全过程由系统进行控制(这一交互的整个过程,不允许自定义进行控制).

2.2 如果在一次启动中多次出发了该方法,且没有出现交互UI,会咋样?

在正常情况下,应用的主要有两个window,UIWindow对象只要防止基本视图,UITextEffectsWindow主要用来出来键盘的输入视图.

在第一次正常弹出评价视图时,视图层发生了变化:

  • 应用层对出了一个UITextEffectsWindow对象和UIRemoteKeyboardWindow对象.UITextEffectsWindow这个对象主要是用来展示评价层UI的,而UIRemoteKeyboardWindow很有可能是一个新的输入层(因为UITextEffectsWindow在视图最前边,所以原来的输入层不能正常显示,需要新的输入层来为评价层评价提供输入源).尤其需要注意的是UITextEffectsWindow视图层上还有_UITextEffectsRemoteView对象,而这个对象的userInteractionEnabled属性是NO,所以只要这个层存在,视图是无法与界面进行交互的.
  • 在用户完成了评价操作之后, UITextEffectsWindow视图层上的_UITextEffectsRemoteView对象会被移除,所以用户与界面的交互可以正常进行.

如果在第一次弹出之后,又调用了一次[SKStoreReviewController requestReview]该方法,有可能会不弹出任何交互UI,同时我们发现与界面所有的交互都没有反应了.这是为什么呢?

  • 查看一下视图层级之后,我们发现视图没有发生变化,但是由于没有交互UI的显示,所以UITextEffectsWindow视图层上的_UITextEffectsRemoteView对象在最上面遮挡了界面上的所有元素,也就无法进行界面的交互.
  1. 该功能只能在iOS10.3之后使用;
  2. 调用该方法在开发模式下可以弹出交互界面,但是不能进行进行信息提交;在TestFlight模式下,调用该方法不会有任何相应;
  3. 在评价功能内部流程由系统根据App Store策略进行确定;
  4. 尽量确保应用在应用的一次启动过程中,控制调用[SKStoreReviewController requestReview]方法的次数不超过一次.否则有可能会造成界面上所有的交互无法响应事件.
  5. 据说同一用户在同一个应用内每年只能提交三次评论,超出次数之后调用该方法就不会有任何反应,但未找到官方文档说明.
只能通过APP内部打开网页形式,跳转到App Store 直接编辑评论。在评分页面,可以评分和评价,评论更有价值。缺点是跳转到App Store ,用户的操作场景的转换,会造成部分用户 使用 的困扰,可能需要花费较长的等待时间,甚至加载失败等,造成评价数量少。 iOS10.3+: APP内评分机制是iOS 10. extern "C"{ void _ScoreApp(const char * MyAppId){ if([ SK Store Re viewController respondsToSelector:@selector(requestReview)]){ [ SK Store Re viewController requestReview]; }else{ NSString * nsStringToOpen... - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImageView *imageView ...
在iOS 10.3出现之前,App实现评价方式一般有两种: (一)deep link调用。在app 链接地址后面拼上action=write-review这种方式可以实现程序内评价; (二)App跳转。 NSURL*url=[NSURLURLWithString: @"itms-apps://itunes.apple.com/cn/app...
Allow Users to Provide Ratings From Within Your App 在iOS 10.3之后,系统提供了一个 SK Store Re viewController 类,可以帮助在app内部实现评价。App实现评价的调用方式如下: 调用方式:[ SK Store Re viewController requestReview];效果图官方注解讨论Although you shoul
App Store 评分方式1. 通过openURL直接打开App Store 无版本限制,可以直接跳转到评论界面。在评分页面,可以评分和评价,评论更有价值。缺点是跳转到App Store ,需要登录,用户的操作场景的转换,会造成部分用户 使用 的困扰,可能需要花费较长的等待时间,甚至加载失败等,造成评价数量少。 12. 模态展示APP详情页iOS6+,应用内present一个控制器,展示的是APP详情
/** Request Store Kit to a sk the user for an app review. This may or may not show any UI. * Given this may not succussfully present an alert to the user, it is not appro...
今天没事查看了下iOS 10.3 的变更功能。发现Apple修改了Review机制,提供App内直接Review弹窗。 SK Store Re viewController .requestReview()如果没有网络则无任何反应。 据说有调用次数限制,不过API 没有提到,我测试也没有触发这个现象。看了API说明的话,有人可能注意到了,这句话:available to the App Store by a
SwiftyRate 一个简单的助手,用于显示具有相似规则和行为的 SK Store Re viewController (iOS 10.3或更高版本)或自定义UIAlertController。 iOS 9.3以上 迅捷5.0+ 是Cocoa项目的依赖项管理器。 只需在Pod文件 添加以下行,即可安装Pod pod 'SwiftyRate' 迅捷软件包管理器 Swift软件包管理器是用于自动分发Swift代码的工具,并且已集成到swift编译器 。 要将swift包添加到项目 ,只需在xCode 打开项目,然后单击File> Swift Packages> Add Package Dependency。 然后输入https://github.com/crashoverride777/swifty-rate.git作为存储库URL,然后完成设置向导。 另外,如果您有一个
程序内评价之 SK Store Re viewController 在ios 10.3之后,系统提供了一个 SK Store Re viewController 类,可以帮助在app内部实现评价。App实现评价一般有下面几种方式。 #import