web-dev-qa-db-ja.com

SKStoreレビューコントローラー、正しい方法でそれを使用するには?

私はいくつかの答えを見ましたが、それらに満足せず、いくつかのアイデアを得ましたが、適切に使用する方法がわからないため、適切に実行されますが、AppデリゲートdidFinishLaunchingで使用する必要があると思いますが、 Liveアプリに問題なく実装する前に確認してください。 SKStore​Review​Controllerはios 10.3でのみ動作しますが、SwiftおよびObjective Cのコードを少し記述するだけで説明できます。

更新:

実際、メソッドrequest​Review()の呼び出しについて混乱しています。どこでこのメソッドを呼び出す必要がありますか? rootViewControllerviewDidLoadまたはappDelegatedidFinishlaunchingで?

ありがとう。

36
Abhishek Mitra

SKStoreReviewControllerはiOS 10.3以降で使用できます。

Appleのドキュメントによると:

App Storeに送信することなく、ユーザーがアプリを使用している間にアプリを評価またはレビューするようにユーザーに依頼することができます。 。

アプリ内でレート/レビューを表示するには、StoreKitframeworkを追加する必要があります。

両方の言語のサンプルコードを見つけてください。

目標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];
    }
}

迅速:

import StoreKit

func DisplayReviewController {
    if #available( iOS 10.3,*){
        SKStoreReviewController.requestReview()
    }
}

更新: ユーザーがアプリとのエンゲージメントを実証した後にのみ評価を求めます

70
korat prashant

Objective Cの場合、

1-)Link Binary with LibraryからStoreKitフレームワークを追加 enter image description here

2-)フレームワークを追加

#import <StoreKit/StoreKit.h>

3-)App-Reviewポップアップを呼び出すコードを以下に追加しました。この場合、viewDidLoadに追加しました。

  - (void)viewDidLoad {
        [super viewDidLoad];
        [SKStoreReviewController requestReview];
    }

4-)デバッグモードでテストする場合、Appleからの以下の説明に注意する必要があります

アプリがまだ開発モードのときにこのメソッドを呼び出すと、ユーザーインターフェイスとエクスペリエンスをテストできるように、評価/レビューリクエストビューが常に表示されます。ただし、TestFlightを使用して配布するアプリでこのメソッドを呼び出しても効果はありません。

8
Emre Gürses

以下を直接呼び出すことは良い考えではないと思います

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.
    }
}

}

5
Shakti

上記のコラートの素晴らしい答えに加えて...

従来のObjective-Cアプリをサポートしており、いくつかのアプリを開いた後にDisplayReviewControllerを呼び出す場合は、次の手順を実行します。

クラスにAppDelegate.mを追加します:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  int count = [[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"];
  if(count < 0) count = 0;
  [[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"LaunchCount"];
}

//The application was in background and become active
- (void)applicationWillEnterForeground:(UIApplication *)application {
  int count = [[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"];
  if(count < 0) count = 0;
  [[NSUserDefaults standardUserDefaults] setInteger:count+1 forKey:@"LaunchCount"];
}

そして、コントローラーで関数を呼び出します:

- (void)applicationDidBecomeActive {

  if ([[NSUserDefaults standardUserDefaults] integerForKey:@"LaunchCount"] == 5) {
     [self DisplayReviewController];
  }
}
3
Jordan

アプリを実行してそれをUserDefaultsに保存するときにカウントするメソッドを実装し、カウント数が5または10またはそのようなもの(あなたによって異なります)の場合、requestReview()を呼び出すことができると思います良いレビューを得るチャンス。

1