2011年5月18日水曜日

Appiraterが良さそう

Cocoa Controlsを見てたら、Appiraterというのがありました。
アプリを繰り返し使ってくれているユーザーに対し、alertViewを表示してiTunes StoreでのReviewに誘導する、という一連の動線を支援するclassです。
実際私の作ったTunesTimerでも、公開して1ヶ月も経つというのに、ほとんどコメントをもらえていませんで、改善できると良いなあと思っていたところでしたので、次回のバージョンアップのために早速組み込んでみました。
Appiraterの良い点は、#defineで色々と定数化してあるので楽ちん、という部分です。初回起動から30日以上経ったり、20回以上使われたらそこで初めてalertViewを出す、みたいな。20回は気が長いなあ、と思ったら
#define APPIRATER_USES_UNTIL_PROMPT 20
の 20 を 15 にするだけ。
ただし落とし穴があって、NSStringの文字列まで定数化してしまっているので、そのままでは素直にローカライズできなくて開発初心者の私は泣きました。
こんな感じ。

#define APPIRATER_MESSAGE_TITLE [NSString stringWithFormat:@"Rate %@", APPIRATER_APP_NAME]

ここに NSLocalizedString を記述すると思い切り怒られます。
なので、Appirater.mを書き換えて対処してみました。

- (void)showRatingAlert {
    NSString *messageTitle1 = NSLocalizedString(@"Rate ", @"");
    NSString *messageTitle2 = NSLocalizedString(@" *", @"");
    NSString *title = [NSString stringWithFormat:@"%@%@%@", messageTitle1, APPIRATER_APP_NAME, messageTitle2];
    NSString *messageBody1 = NSLocalizedString(@"If you enjoy using ", @"");
    NSString *messageBody2 = NSLocalizedString(@", would you mind taking a moment to rate it? It won't take more than a minute. Thanks for your support!", @"");
    NSString *messageBody = [NSString stringWithFormat:@"%@%@%@", messageBody1, APPIRATER_APP_NAME, messageBody2];
 UIAlertView *alertView = [[[UIAlertView alloc] initWithTitle:title
               message:messageBody
              delegate:self
              cancelButtonTitle:NSLocalizedString(@"No, Thanks", @"")
              otherButtonTitles:title, NSLocalizedString(@"Remind me later", @""), nil] autorelease];
    self.ratingAlert = alertView;
 [alertView show];
}

まあ、これで一応日本人向けアプリでも導入できるぞ、と。

とここまで書いてみて、「あれ?普通はもっと違うやり方があるのかも?」と急に不安になりました。
もっと普通のやり方があればご教示ください。

はてさて、次のバージョンでの反応が楽しみです。
うざったいからこんなもん表示するな! だったらそもそもくたびれもうけですが(笑)

0 件のコメント:

コメントを投稿