LoginSignup
2
2

More than 5 years have passed since last update.

objective-c++で、iOSアプリ内レビューを実装する

Last updated at Posted at 2019-01-19

cocos2dxでiOSアプリ内レビューを実装した際のメモです。

image.png

※星を選択するとコメントもかけます。

実装

DE_BridgeCenter.mm
// アプリ内レビューする際のクッションページ
void DE_BridgeCenter::showReviewAlert(){

    // クッション用のポップアップ文言ローカライズ
    std::string _title = LanguageManager::getInstance()->getString("ios_review_popup_title");
    NSString *title = [NSString stringWithUTF8String:_title.c_str()];
    std::string _message = LanguageManager::getInstance()->getString("ios_review_popup_body");
    NSString *message = [NSString stringWithUTF8String:_message.c_str()];
    std::string _btn_cancel_mes = LanguageManager::getInstance()->getString("ios_review_popup_btn_cancel");
    NSString *btn_cancel_mes = [NSString stringWithUTF8String:_btn_cancel_mes.c_str()];
    std::string _btn_ok_mes = LanguageManager::getInstance()->getString("ios_review_popup_btn_ok");
    NSString *btn_ok_mes = [NSString stringWithUTF8String:_btn_ok_mes.c_str()];


    UIAlertController *alert = [UIAlertController alertControllerWithTitle: title
                                                                   message: message
                                                            preferredStyle: UIAlertControllerStyleAlert];

    UIAlertAction *cancelAction = [UIAlertAction  actionWithTitle: btn_cancel_mes
                                                            style: UIAlertActionStyleCancel
                                                          handler: nil];

    [alert addAction: cancelAction];

    UIAlertAction *reviewAction = [UIAlertAction  actionWithTitle: btn_ok_mes
                                                            style: UIAlertActionStyleDefault
                                                          handler: ^(UIAlertAction *action) {
                                                              goReviewAlert();
                                                          }];
    [alert addAction: reviewAction];


    // 親ViewContoller検索
    UIViewController *baseView = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (baseView.presentedViewController != nil && !baseView.presentedViewController.isBeingDismissed) {
        baseView = baseView.presentedViewController;
    }
    [baseView presentViewController:alert animated:YES completion:nil];

}


// アプリ内レビュー表示
void DE_BridgeCenter::goReviewAlert(){


    float iOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];


    if (iOSVersion >= 10.3f) {
        // iOS version 10.3以上はアプリ内レビューへ
        if([SKStoreReviewController class]){
            [SKStoreReviewController requestReview];
        }
    }
    else {

        // ストアへ誘導...iOS11からはSKStoreReviewControllerを推奨しているようなのであれですが。。
        [[UIApplication sharedApplication]
         openURL:[NSURL URLWithString:[NSString stringWithUTF8String:URL_REVIEW_APP]]];
    }
}

あとは、cocos2dxのClassからshowReviewAlert()を呼び出せば完成!

リクエストが成功しない場合の対処や、表示頻度の設定、適宜お願いします。。!(泣)

なぜかレビューポップアップが発火されない場合

  • ネットワークにつながっていない
  • ユーザーのスマホの設定による(iOS11以降?「設定」 > 「iTunes StoreとApp Store」 > 「App内評価とレビュー」で設定可
  • レビューの表示制限にひっかかっている(1年に3回までしか表示できない?)
  • iOSのバージョンが古い
  • TestFlightで配信している (僕の環境では表示されるが、星を選択し「送信」ボタンがdisableになっており送信できないように制限されておりました。本番公開後はちゃんと押せるにようなってました)

実際実装してのよかった事

  • いままで3ヶ月に1回程度でレビュー1件程度だったものが、実装後すぐにつき1ヶ月で2件。6倍!!?(※もちろんアプリなど条件によります。)
  • レビューをつけるユーザーはだいたい、すでについているレビューを参考に星をつけてしまう傾向があるため、もともと総評が★2とかでも、先入観がないため高評価をつけてもらえる可能性がある!!?(その逆の可能性もありますが。)
  • やっぱ画面遷移せずにレビューつけれるのは、ストレス少なくていい!

参考にさせて頂いた記事 (大変参考なりました!:pray:

また、Unityや、swift,objc版などの参考記事はあったのですが、cocos2dxでも使えるものがなかったので、
メモさせて頂きました。

swift版

https://qiita.com/asashin227/items/f0c44821020af6ee846d
https://qiita.com/yamataku29/items/afedb457e2fe7e20438c

objective-c版

Unity版

レビューが発火されない原因調査

https://apptopi.jp/2018/01/07/ios11-in-app-review/
https://qiita.com/s_higeru/items/db9ddb09d6adbac2da67
http://crossbridge-lab.hatenablog.com/entry/2017/06/14/113255

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2