我在我的应用程序中使用了SKStoreReviewController.requestReview()但是在测试Flight构建中没有显示Rate app popup.
if #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
}
Run Code Online (Sandbox Code Playgroud)
在开发或Add hoc构建提交按钮是禁用,这是完全正常的.但在Test Flight构建中它没有显示任何内容.
有什么问题?
我已将以下内容添加到AppDelegate并导入StoreKit.正如预期的那样,审核模式会在启动时弹出.我的问题是,我是负责这个频率的人还是Apple?该文档是仍然是相当轻,但我看其他地方,苹果将是每用户每年将此限制为3次,我可以信任他们增加在适当的时间量时,它显示(理想的是几个月)之间?
在开发中,每当我启动应用程序时它都会弹出,我讨厌我的用户不得不在很多次启动时将其解雇3次,然后在12个月内再次被问到.
现在10.3已经出局了,我对别人如何解决这个问题很感兴趣.
干杯.
if #available(iOS 10.3, *) {
print("Show Review Controller")
SKStoreReviewController.requestReview()
} else {
print("Cannot Show Review Controller")
// Fallback on earlier versions
}
Run Code Online (Sandbox Code Playgroud) 我的目的是显示SKStore Review Controller(如果适用)或显示我自己的反馈控制器并将用户重定向到App Store.通过这样做,我可以避免多次询问用户反馈.
在阅读了关于SKStore Review Controller(https://developer.apple.com/reference/storekit/skstorereviewcontroller)的Apple缺乏文档之后,似乎无法确定SKStore Review Controller目前是否已呈现或已呈现先前.
我知道我可以将显示频率存储在NSUserDefaults中,但我宁愿避免这样做.
我的swift iOS应用程序有一个显示键盘的活动文本字段.每次用户点击键盘上的返回键,我都会打电话
SKStoreReviewController.requestReview()
Run Code Online (Sandbox Code Playgroud)
这听起来可能过多但是一旦用户给出了评论,上面的陈述将不会做任何事情,所以我认为我的方法是正确的.
问题是在较小的屏幕设备(iPhone 5等)上,显示的SKStoreReviewController按钮隐藏在键盘下方.
因此,用户会因为无法解除SKStoreReviewController而陷入困境.我不想为用户添加键盘隐藏按钮.
我怎么知道什么SKStoreReviewController时候显示所以我可以编程隐藏键盘?
如果显示从视图控制器启动的审阅弹出窗口,则由于缺少 的回调函数而关闭弹出窗口时,无法将窗口焦点切换回视图控制器SKStoreReviewController.requestReview()。
becomeFirstResponder()我想在评论弹出窗口消失时拨打电话。任何想法?
有没有办法扩展 SKStoreReviewController并以某种方式添加回调?
跟踪数据并根据评论在SKStoreReviewController提示上的表现来优化评论会更容易。
但是我们如何检测用户点击了哪个按钮呢?现在不要?1* 4* 5*?已提交审核?
我的应用程序没有主动提示用户对App Store上的应用程序进行评级,它只在应用程序设置中包含"评价此应用程序"页面.因此,用户可以手动访问该页面,只有在点击Do Rate按钮后,才会将其重定向到App Store.
当然,UI SKStore?Review?Controller比将用户重定向到App Store应用程序以留下他的评论要简单得多.所以我只是将对App Store URL的调用更改为调用[SKStore?Review?Controller requestReview].
这在我的所有测试中都能正常工作:每次点击查看按钮时都会显示评级对话框.
但是我想知道这将如何在实际调试环境之外表现.根据Apple文档,每个App每年[SKStore?Review?Controller requestReview]限制为3个提示.
[SKStore?Review?Controller requestReview])会没有效果还是会有某种反馈?[SKStore?Review?Controller requestReview]或者是否必须手动将用户发送到商店?[SKStore?Review?Controller requestReview]通话之间的间隔有限制吗?是否连续三天使用它与每4个月使用它一样合理?在 www.raywenderlich.com App Store Review 教程Requesting App Ratings and Reviews Tutorial for iOS中,作者 (Sanket Firodiya) 表示 Apple 实施了某些限制:
我正在写关于第三个限制的文章。该教程似乎说 Apple 强制执行该版本限制,但教程的示例代码也执行了该强制操作(Apple 的示例代码也是如此)。我相信在调用之前进行版本测试requestReview很容易导致没有评级请求。正如我在下面解释的那样,如果苹果公司进行了这项测试会更好,但是他们这样做了吗?
细节:
在请求应用程序商店评论中,Apple 表示我们应该对[SKStoreReviewController requestReview]每个应用程序版本只执行一次,并且 Apple 的示例代码在调用之前包含版本测试requestReview。此外,我们还被告知,requestReview对话框的出现次数每年不得超过 3 次。因此,如果特定的调用requestReview导致没有对话框,则将不再有调用requestReview(直到版本更改),因此该版本绝对不会有评级对话框。当版本更改时,似乎不太可能出现审阅对话框(除非第一次调用显示requestReview对话框)。
这很令人困惑。由于 Calling 的版本限制requestReview,每年 3 次的限制似乎毫无用处,或者至少是过度的。由于这两个相互冲突的限制,即使发布了新版本,用户也可能永远不会看到审阅对话框。但是,我知道事实并非如此。所以,我相信苹果测试当前版本的示例代码是不正确的。苹果强制实施这一限制更有意义,因为他们知道是否出现对话框。
如果API返回一个布尔值来指示对话框是否出现,那么只有对话框出现时我们才能保存版本号。我想知道Apple是否在SDK中这样做了。
我了解苹果关于何时发出请求的其他建议,例如等待用户参与、不中断活动等。这个问题仅涉及与应用程序版本有关的限制。
我是否应该实施版本限制?如果我进行该测试,我怎么能期望出现一个对话框呢?也许,第一次调用requestReview总是会导致审核对话框(如果不是一年内的第三次调用)——是吗?
顺便说一句,我不是第一个有这种担忧的人。请参阅forums.raywenderlich.com。
杰夫
TL; DR:iOS上是否有某种方法可以检测iOS 10.3中添加的Storekit App Rating对话框的存在/显示?
我最近使用以下方法为我的应用添加了对新应用评级对话框的支持:
[SKStoreReviewController requestReview];
Run Code Online (Sandbox Code Playgroud)
但是,我知道有一些使用注意事项(如此处所述),即在调用上述功能时可能会或可能不会显示对话框,不是包括客户是否已对应用程序进行评级或客户已经暗淡的情况对话3次.
我也知道Apple不希望用户操作直接调用对话框的呈现,因此要报告对话框的存在:
虽然在应用程序的用户体验流程中有意义时应调用此方法,但评级/审阅请求视图的实际显示由App Store策略控制.由于此方法可能会或可能不会显示警报,因此响应按钮点击或其他用户操作来调用它是不合适的.
但这并不能阻止UX团队将这些按钮放在图形设计中并询问"我们能否知道对话框是否显示"?
所以,我的问题是,是否有其他间接方式可以确定此对话框的表示?
我最近使用Appium对Android和iOS应用程序进行了一些自动测试,并使用Xpaths查找原生UI元素,所以只是想知道是否可以在iOS应用程序的上下文中实现相同的功能.
我正在尝试实现 StoreKit 的 requestReview API:
[SKStoreReviewController requestReview];
Run Code Online (Sandbox Code Playgroud)
当对话框出现时,它缺少“正在享受 [应用程序]?” 和“点击一颗星即可在 App Store 上对其进行评分”文本:
此屏幕截图来自运行 iOS 10.3.3 的 iPhone 6s。我还能够在运行 iOS 10.3.1 的 iPhone 6s 以及运行 iOS 10.3 的 iPhone 7 模拟器上重现该问题。
我知道开发模式和生产模式下的 UI 并不完全相同,但我的印象是开发模式中唯一的 UI 差异是提交按钮始终呈灰色。
如果我在开发中看不到它正常工作,我会犹豫是否使用此功能。
有什么想法如何让标题和描述出现或者可能导致此问题的原因是什么?