【Swift4】【Objective-c】SKStoreReviewController でアプリ内レビュー

最近流行りのアプリの中でレビュー(アプリの評価)をつけてもらうやつを調べてみた。

参考サイト
SKStoreReviewController を単純な条件で出すだけでも好意的なレビューが増えて良かった
SKStoreReviewController で App Store の評価数が急増した話 – wootan’s diary

機能としてはiOS10.3以降が対応のようです。
表示されるのは年に3回まで。
有意の時点で呼び出して、年に3回に達していないと表示されるらしい。
つまり、何回起動したときとか、そういう条件をつけて、レビューの請求をされてもおかしくない、
できれば好レビューが貰えそうな時に表示されるようにするのが良いっぽい。

コードとしてはStoreキットをインポートして使う。

Swiftの場合。

import StoreKit
SKStoreReviewController.requestReview()

objective-cの場合。

#import <StoreKit/StoreKit.h>
[SKStoreReviewController requestReview];

一度この表示が出て評価を送信すると、その後は出なくなるのか、それとも、直後でも呼び出されるとまた表示されてしまうのか、そのへんの詳しい挙動がわからんのでそれなりの対応が必要そうです。

と、ゆーことで、いま手入れしてるobjective-c用にコードを書いてみた。

- (void)countToReview{
    // NSUserDefaultsの取得
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    //初期値設定用のインスタンス。
    NSMutableDictionary *setDefaults = [NSMutableDictionary dictionary];
    //レビュー表示までのカウント数の初期値。
    [setDefaults setObject:@"90" forKey:@"countToReview"];
    //初期値を保存。すでに値がある場合は無視される。
    [defaults registerDefaults:setDefaults];
    
    //countToReviewの値を1足す。
    [defaults setInteger:((int)[defaults integerForKey:@"countToReview"] + 1 )  forKey:@"countToReview"];
    [defaults synchronize];

    NSInteger count = (int)[defaults integerForKey:@"countToReview"];
    NSLog(@"このページの表示%ld回目",(long)count);
    
    if (count == 100) {
        if (@available(iOS 10.3, *)) {
            //レビューの請求
            [SKStoreReviewController requestReview];
            NSLog(@"iOS10.3以上だよ");
        } else {
            NSLog(@"iOS10.3未満だよ");
        }
        //カウントを0にリセット
        [defaults setInteger:0 forKey:@"countToReview"];
    }
}

最初は10回呼ばれたら、その後は100回呼ばれる毎にレビューが請求されます。

あ、バージョンでの切り分けはこちらを参考にしました。
Objective-C で OS バージョン判定を簡潔に行う方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です