我已经看到了一些答案,但对他们并不满意,并得到了一些想法,但不知道如何正确使用它,以便它将以适当的方式执行,尽管我认为它应该在应用程序委托didFinishLaunching中使用,但我想在没有任何匆忙的情况下在Live应用程序中实施它之前,我想确定它。我读到的SKStoreReviewController只适用于iOS10.3,有没有人能用swift和objective c的一些代码来解释?
更新:
实际上,我对调用方法requestReview()感到困惑,我需要在哪里调用这个方法?在rootViewController的viewDidLoad中还是在appDelegate的didFinishlaunching中?
谢谢。
发布于 2017-04-05 17:51:21
iOS 10.3及更高版本中提供了SKStoreReviewController。
根据苹果公司的文件:
你可以要求用户在使用你的应用程序时对其进行评分或评论,而无需将它们发送到应用程序Store.You确定用户体验中调用
有意义的点,然后系统会处理剩下的部分。
为了在应用程序中显示Rate/Review,您必须添加StoreKit框架。
请找到这两种语言的示例代码:
目标C:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if([SKStoreReviewController class]){
[SKStoreReviewController requestReview] ;
}
}从xCode 9开始,您可以执行以下操作:
#import <StoreKit/StoreKit.h>
- (void)DisplayReviewController {
if (@available(iOS 10.3, *)) {
[SKStoreReviewController requestReview];
}
}Swift:
import StoreKit
func DisplayReviewController {
if #available( iOS 10.3,*){
SKStoreReviewController.requestReview()
}
}更新:Ask for a rating only after the user has demonstrated engagement with your app
发布于 2017-09-22 14:17:56
对斯威夫特来说
import StoreKit当你想问的时候,在请求中添加以下代码。
if #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
}对于目标C,
1-)通过库从链接二进制文件添加了StoreKit框架

2-)添加框架
#import <StoreKit/StoreKit.h>3-)添加了下面要调用App-Review弹出窗口的代码。在本例中,我添加了viewDidLoad。
- (void)viewDidLoad {
[super viewDidLoad];
[SKStoreReviewController requestReview];
}4-)当你在调试模式下测试时,你应该知道下面来自苹果的解释
当您在应用程序仍处于开发模式时调用此方法时,将始终显示评级/审核请求视图,以便您可以测试用户界面和体验。但是,当您在使用TestFlight分发的应用程序中调用此方法时,此方法无效。
发布于 2018-04-03 20:30:28
我认为直接调用下面的代码不是一个好主意。
SKStoreReviewController.requestReview()
它可以像用户打开10(10,20,30,...100)的倍数的应用程序,然后您可以显示以供审查
因此,首先您需要创建一个文件,该文件将负责所有工作,比如在用户默认设置中保存应用程序打开计数、检索应用程序打开计数以及显示requestReview()。请看一下下面的代码片段
import Foundation
import StoreKit
class SpsRateManager {
private static let instance = SpsRateManager()
var shareinstance: SpsRateManager{
return .instance
}
static func incrementAppOpenedCount() { // called from appdelegate didfinishLaunchingWithOptions:
let userdefault = UserDefaults.standard
let savedvalue = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
if savedvalue == 0 {
print("Not saved ")
userdefault.set(1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
}
else{
userdefault.set(savedvalue+1, forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
}
}
static func checkAppopencountandProvideReview(){
let userdefault = UserDefaults.standard
let appopencountvalue = userdefault.integer(forKey: Configuration.APPLICATIONOPENCOUNTSTATUS)
if appopencountvalue % 10 == 0 {
print("its been 10 times so ask for review ")
SpsRateManager().requestReview()
}
else{
print("not enough open count dont show ")
}
}
fileprivate func requestReview() {
if #available(iOS 10.3, *) {
SKStoreReviewController.requestReview()
} else {
// Fallback on earlier versions
// Try any other 3rd party or manual method here.
}
}
}https://stackoverflow.com/questions/43177249
复制相似问题