【Swift】Swiftのプロジェクトにレビューへ誘導するダイアログを表示するAppiraterを導入

SwiftはObjective-Cに比べると融通が利かないというか、頑固というか、ちょっとしたことでエラーが出て困りますね。思うように進まなくて非常にもどかしい

例えば変数の型。型が違うもの同士を計算するだけでエラーです。字はあってるけど書き順が違うからバツ、この漢字はちゃんとはねてないからとバツみたいな恐ろしく厳しい先生みたいです。たぶんその厳しさを乗り越えたら、バグの少ないプログラムが書けるようになるんだと自分に言い聞かせ、Swift先生の愛のムチに耐えながらプログラムを書いています。

そういや、新人の頃に始めて作ったプログラムで安易にキャスト(型変換)を使ってこっぴどく怒られた覚えがあります。型はとても大事。

それはさておき。

アプリのレビューへ誘導するダイアログ表示を簡単に実装できるAppiraterをSwiftのプロジェクトに組み込んでみました。

レビュー誘導のダイアログはユーザーにとっては迷惑なものですが、アプリ制作者としてはちょっとでも反応が欲しかったりするので、組み込むべきかどうか悩ましいところです。その点Appiraterは、アプリをある程度使い込んでからダイアログを出すなど、細かくカスタマイズできて便利です。

このAppiraterですがObjective-Cで書かれているので、Swiftのプロジェクトに組み込むには一手間必要になります。以下その手順です。

Appiraterを入手する

まずはともあれAppiraterをダウンロードします
Appiraterダウンロード

ダウンロードできたら「appirater-master.zip」を解凍してプロジェクトに追加します。「appirater-master」フォルダをぐわっと組み込みたいプロジェクトにドラッグすれば追加できます。CocoaPodsとか使うと簡単なのかな?とりあえず今回は自力で追加です。

Appiraterをプロジェクトに追加する

必要なフレームワークを追加する

ここまではObjective-Cの時と変わりません。
ターゲットを選んで、「General」の「Linked Frameworks and Libraries」でフレームワークを追加します。追加するのは「CFNetwork.framework」「SystemConfiguration.framework」「StoreKit.framework」の3つです。 「StoreKit」だけはOptionalで。

必要なフレームワークを追加

特別なヘッダファイルを作る

swiftからObjective-Cのソースを参照できるように、特別なヘッダを作成します。作成するファイル名は
(ターゲット名)-Bridging-Header.h
です。今回は「AppiraterDemo」ってターゲット名なので「AppiraterDemo-Bridging-Header.h」を作成します。

特別なヘッダファイルを作る

この作成したヘッダファイルに

#import "Appirater.h"

と記述します。Objective-Cのソースを参照したい場合、そのヘッダファイルをここにどんどん追加していくわけですね。今回は「Appirater.h」だけ追加。

で、プロジェクトのビルド設定の「Swift Compiler – Code Generation」の「Objective-C Bridging Header」に作成したヘッダファイルのパスを記述します
今回は
AppiraterDemo/AppiraterDemo-Bridging-Header.h
を設定
パスを設定

プログラムに組み込みます

AppDelegate.swiftにイニシャライザを追加(自動で作られるソースにはないはず)して、Appiraterの初期化処理を書きます。普通にSwiftのコードでかけるのがすごいですね。

override class func initialize() {
    Appirater.setDebug(true)        // デバッグ(必ずダイアログを表示)
    Appirater.setAppId("123456")    // アプリのAppId(自分のアプリIDに変更)
    Appirater.appLaunched(true)
}

これで実行すれば、ダイアログが表示します。簡単簡単。

ダイアログ表示

・・・と思ったらアプリ名の部分が(null)になってますね。(null)なんてアプリ名にした記憶は全くないのに!

これは「CFBundleDisplayName」を設定していないからです。CFBundleDisplayNameはinfo.plistで設定できますが、ここに追加してもダメなので、新規に「InfoPlist.strings」というファイルを作る必要があります。新規ファイルの作成して、ResourceからString.fileを選んで作成します。

ダメな例。ちゃんと追加しているのにアプリ名が(null)になります

info.plistに追加

アプリ名を国ごとに変えたい場合にも必要になるので、ここは素直にInfoPlist.stringsを作ります

InfoPlist.stringsを作成

そのInfoPlist.stringに

CFBundleDisplayName = "Appiraterデモ";

と記述して実行してみると・・・

ダイアログ表示

無事アプリ名が表示されました。
Appirater自体の設定は、丁寧に説明してくれているサイトがすでにたくさんあるので、ここでは割愛します。

タイトルとURLをコピーしました