SKStore Review Controller,如何以正确的方式使用它?

Abh*_*tra 36 iphone objective-c ios skstorereviewcontroller ios10.3

我已经看到一些答案,但不满意他们并得到一些想法,但不知道如何正确使用它,以便它将以适当的方式执行,虽然我认为它应该在App代表中使用didFinishLaunching,但我想确保在Live应用程序中实现它之前没有任何喧嚣. SKStore?Review?Controller我只阅读ios 10.3的内容,任何人都可以用迅速和客观的c代码解释一下.

更新:

实际上我对调用方法很困惑request?Review(),我需要在哪里调用这个方法?在rootViewController's viewDidLoadappDelegate's didFinishlaunching

谢谢.

kor*_*ant 70

SKStoreReviewController 适用于iOS 10.3及更高版本.

根据APPLE的文件:

您可以要求用户在使用应用程序时对其进行评级或评估,而无需将其发送到App Store.您可以确定用户体验中有必要调用API并且系统负责其余部分的点数. .

为了在应用程序内显示Rate/Review,您必须添加StoreKit框架.

请找到这两种语言的示例代码:

目标C:

#import <StoreKit/StoreKit.h>

- (void)DisplayReviewController {
    if([SKStoreReviewController class]){
       [SKStoreReviewController requestReview] ;
    }
}
Run Code Online (Sandbox Code Playgroud)

从xCode 9开始你可以:

#import <StoreKit/StoreKit.h>

- (void)DisplayReviewController {
    if (@available(iOS 10.3, *)) {
        [SKStoreReviewController requestReview];
    }
}
Run Code Online (Sandbox Code Playgroud)

迅速:

import StoreKit

func DisplayReviewController {
    if #available( iOS 10.3,*){
        SKStoreReviewController.requestReview()
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:仅在用户证明与您的应用互动后才要求评分

  • 从Xcode 9开始,你可以使用`if(@available(iOS 10.3,*))`而不是`if([SKStoreReviewController class])` (3认同)
  • @EmreGürses,如果您的应用程序处于测试阶段,即在模拟器或测试设备中,则会自动禁用发送按钮,一旦您的应用程序处于活动状态,将自动显示发送按钮. (3认同)
  • 您可以要求您的客户在整个用户体验的适当时间在App Store上评估和审核您的应用. (2认同)

Emr*_*ses 8

对于Objective C,

1-)从Link Binary With Library添加了StoreKit框架 在此输入图像描述

2-)添加框架

#import <StoreKit/StoreKit.h>
Run Code Online (Sandbox Code Playgroud)

3-)在下面的代码中添加了要调用App-Review弹出窗口的代码.在这种情况下,我添加了viewDidLoad.

  - (void)viewDidLoad {
        [super viewDidLoad];
        [SKStoreReviewController requestReview];
    }
Run Code Online (Sandbox Code Playgroud)

4-)当您在调试模式下进行测试时,您应该了解Apple的以下解释

当您的应用仍处于开发模式时调用此方法时,将始终显示评级/评论请求视图,以便您可以测试用户界面和体验.但是,当您在使用TestFlight分发的应用程序中调用此方法时,此方法无效.

  • 点击评分星级后,@Balanced 评论按钮将显示给您。因此,当您处于开发模式时,您将永远不会测试此功能。 (2认同)

Sha*_*kti 5

我认为直接致电以下内容不是一个好主意

SKStoreReviewController.requestReview()

就像用户每次打开您应用的10(10,20,30,... 100)的倍数一样,您可以显示以进行审核

因此,首先您需要创建一个文件,该文件将负责所有工作,例如将应用程序打开计数保存在userdefaults中,检索应用程序打开计数并显示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.
    }
}
Run Code Online (Sandbox Code Playgroud)

}