私はいくつかの答えを見ましたが、それらに満足せず、いくつかのアイデアを得ましたが、適切に使用する方法がわからないため、適切に実行されますが、AppデリゲートdidFinishLaunching
で使用する必要があると思いますが、 Liveアプリに問題なく実装する前に確認してください。 SKStoreReviewController
はios 10.3でのみ動作しますが、SwiftおよびObjective Cのコードを少し記述するだけで説明できます。
更新:
実際、メソッドrequestReview()
の呼び出しについて混乱しています。どこでこのメソッドを呼び出す必要がありますか? rootViewController
のviewDidLoad
またはappDelegate
のdidFinishlaunching
で?
ありがとう。
SKStoreReviewController
はiOS 10.3以降で使用できます。
Appleのドキュメントによると:
App Storeに送信することなく、ユーザーがアプリを使用している間にアプリを評価またはレビューするようにユーザーに依頼することができます。 。
アプリ内でレート/レビューを表示するには、StoreKit
frameworkを追加する必要があります。
両方の言語のサンプルコードを見つけてください。
目標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()
}
}
Objective Cの場合、
1-)Link Binary with LibraryからStoreKitフレームワークを追加
2-)フレームワークを追加
#import <StoreKit/StoreKit.h>
3-)App-Reviewポップアップを呼び出すコードを以下に追加しました。この場合、viewDidLoadに追加しました。
- (void)viewDidLoad {
[super viewDidLoad];
[SKStoreReviewController requestReview];
}
4-)デバッグモードでテストする場合、Appleからの以下の説明に注意する必要があります
アプリがまだ開発モードのときにこのメソッドを呼び出すと、ユーザーインターフェイスとエクスペリエンスをテストできるように、評価/レビューリクエストビューが常に表示されます。ただし、TestFlightを使用して配布するアプリでこのメソッドを呼び出しても効果はありません。
以下を直接呼び出すことは良い考えではないと思います
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.
}
}
}
上記のコラートの素晴らしい答えに加えて...
従来の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];
}
}
アプリを実行してそれをUserDefaultsに保存するときにカウントするメソッドを実装し、カウント数が5または10またはそのようなもの(あなたによって異なります)の場合、requestReview()を呼び出すことができると思います良いレビューを得るチャンス。