【Swift】Reproを使ってユーザーにアプリ内メッセージを送信する

2021.10.31

業務でReproを使うので理解を深めたいと思い、実際にアプリを動かしながら動きを見ていきました。

Reproの開発ガイドを見ながら、所々キャプチャを貼り記事を進めていきましたので、まだRepro触ったことがないけど、興味がある方などに見ていただければと思います。

Reproとは

リプロ株式会社が提供しているCE(カスタマーエンゲージメント)プラットフォームです。Repro上で扱える様々な機能を使用し、顧客との関係を深めることにより、付加価値性が高い良好な顧客関係を築くことが出来ます。 いわばデジタルマーケティングツールで、アプリにReproを実装し、ポップアップやメール配信などのマーケティング施策を行うことが出来ます

今回は実際にRepro SDKを使い、ダイアログを表示させるアプリを作ってみたいと思います。

アカウント作成

アカウントを持っていない場合はアカウント作成を行いましょう。

アカウント作成を済ませたら、アプリにSDKを導入してReproの機能を利用出来ます。

開発環境

  • Xcode 13
  • Swift 5.5

SDKのインストール

Repro SDKはCocoaPodsとSwift Package Managerを使ってインストールすることができます。

今回はRepro側が推奨していたのでCocoaPodsでインストール行いました。

1. ターミナルで今回Reproをインストールするプロジェクトのディレクトリに移動

cd your-project-directory

2. ターミナルでpod initを実行し、プロジェクト内にPodFileを生成

pod init

3. PodFileがプロジェクト内に生成されたら、下記のようにPodFileにReproを追加。

target 'Your-Project-Name' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for HelloRepro
  pod 'Repro'

end

4. PodFileへの追記が完了したら、下記のコマンドを入力し、ターミナルの実行してください。

pod install

SDKのインストールに成功したら、 プロジェクトのxcworkspaceを開きます。

5. 必要なフレームワークの追加

プロジェクトのTargets > Build Phases > Link Binary With Libraries にて下記のフレームワークを追加してください。

  • SystemConfiguration.framework
  • WebKit.framework
  • UserNotifications.framework

セットアップ

AppDelegatedidFinishLaunchingWithOptionsでReproをセットアップします。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    Repro.setup(token: "YOUR_APP_TOKEN")
    return true
}

YOUR_APP_TOKENにはRepro管理画面の 設定 > プロジェクト設定 に記載されているSDK トークンを設定してください。

これだけでアプリ側のセットアップは完了しました!

それでは、Repro側で初回起動時に表示するメッセージを設定していきましょう。

送信するメッセージを設定する

1. ReproのRepro管理画面 > マーケティング > メッセージ  を選択します。

まだアプリから何もRepro側に情報が届いていない場合はこのような画面になっていると思います。

その場合は、一度AppDelegateにsetupを記述したアプリを起動してReproに情報を送っておきましょう。

アプリからRepro側に情報が一度でも送信されていると、Reproの管理画面 > マーケティング > メッセージ を選択した後はこの画面が表示されると思います。

2. 右上の新規作成 > アプリ内メッセージ を選択

3. 様々なネイティブ用のテンプレートからダイアログを選択することが出来ます。今回は画像のみのダイアログを選択しました。

4. 差し込みたいダイアログの画像を設定

5. 配信するトリガーと対象のフィルターを設定します。

配信トリガー

何をきっかけにこのダイアログを表示するかを設定をすることが出来ます。今回はアプリ起動の実行時を選択しました。こちらの設定では、アプリを開いた後に表示される最初のView上で表示されます(Launch画面を除く)

また、こちらは後ほど試してみますが、自分で作成したイベントなどもトリガーにすることが出来ます。

配信対象設定

配信対象にフィルターをかけて対象を絞ることが出来ます。 今回は、アプリを初めて使うユーザーに対して配信したいので初回ユーザーに絞りました。

設定を済ませたら、下部にある公開ボタンを押してメッセージを公開しましょう。

メッセージを受け取る

AppDelegateでのReproのsetupは済ませているので、実際にダイアログが表示されるか確認してみましょう。

今回は初回のユーザーに送るので、一度でもプロジェクト用に登録したReproに情報を送信しているユーザーは対象外になります。なので、まだReproのsetup処理を行なっていないシュミレーターを選択してこのアプリを開いてみましょう。

このように初回起動のユーザーに対してダイアログを表示させることが出来ました!

イベントトラッキング

Reproではイベントトラッキングをすることも出来ます。

トラックされたイベントは分析機能のローデータとして使われます。また、プッシュ通知やメッセージを作成する際に、対象ユーザーをセグメントする条件としても利用できます。

カスタムイベント

もともと用意されているイベントもありますが、カスタムイベントを作成することが出来ます。

Repro.track(event: "イベントの名前", properties: [:])

このメソッドでイベントをトラッキングすることが出来ます。propertiesには値をセットすることも出来ます。

デモ

配信トリガーで「〇〇イベントの実行時」のように作成したイベントをトリガーにして、ダイアログを表示することも出来ます。

例として、配信トリガーをNextViewというイベントが実行された時にします。

そして、遷移先のViewControllerでイベント発火させてみます。

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    Repro.track(event: "NextView", properties: [:])
}

画面遷移するとイベントが実行されて、ダイアログが表示されました。

ユーザープロフィール

ユーザープロフィールは、性別、年齢、地域、言語、会員種別など、アプリで収集可能なユーザーの付帯情報です。 このプロフィール情報を基にして、対象となるユーザーを絞り込んでプッシュ通知やメッセージを送信することができるようになります。 (Repro 開発ガイド)

標準で用意されているものもありますが、カスタムすることも出来ます。

カスタムユーザープロフィール

カスタムできるユーザープロフィールは、2021年10月時点で用意されているものは、StringIntDoubleDateの4つになります。

// 文字列
Repro.setUserProfile(stringValue: "プロゴルファー", forKey: "Job")
// 整数
Repro.setUserProfile(integerValue: 15, forKey: "age")
// 小数
Repro.setUserProfile(doubleValue: 145.2, forKey: "Height")
// 日付
let now = Date()
Repro.setUserProfile(dateValue: now, forKey: "login")

もちろん、ユーザープロフィールをメッセージの配信トリガーにすることも出来ます。

デモ

例えば、ユーザープロフィールのカウント3になった時に配信するように設定して、

ボタンを押すごとにユーザープロフィールを更新する処理を書いておきます。

private var count = 0

@IBAction private func countUpButtonTapped() {
    count += 1
    Repro.setUserProfile(integerValue: count, forKey: "カウント")
}

すると、3回ボタンを押すとダイアログが表示されました

補足

サーバーに収集情報がアップロードされるタイミング

  • SDK v5.0.0未満
    • アプリを起動し操作した後、 画面下部から上方向へスワイプ (又は「ホームボタン」を押下)等でアプリがバックグラウンドに移行した時点でサーバーにアップロードされます。
  • SDK v5.0.0以降
    • セッション中でも定期的にイベント及びユーザープロフィールデータがサーバーにアップロードされます。

SDKのバージョンによっては収集情報をReproサーバー側にアップロードするタイミングが違うようなので注意が必要そうです。

メッセージが表示されないケース

画面遷移前後に実行されるイベントをアプリ内メッセージの表示トリガーに利用する場合、アプリ内メッセージを表示しようとすると、描画タイミングの影響によりメッセージが表示されない可能性があるそうです。

実行タイミング ダイアログ、オーバーレイ バナー
viewDidLoad × ×
viewWillAppear ◯ (iOS SDK 3.1.0未満の場合は×)
viewDidAppear
viewWillDisappear ◯ (iOS SDK 3.1.0未満の場合は×)
viewDidDisappear ×

ダイアログが表示されない問題があったら、一度描画タイミングを疑うのも良いかもしれませんね。

おわりに

簡単にメッセージを送ることが出来ました。このようなメッセージやプッシュ通知を使用して、ユーザーとコミニュケーションを取って素敵なアプリに育てていきたいですね!

また、李プロさんがゴルフ仲間探しているので、誰か一緒にゴルフしてあげてください。

それでは、どこかのゴルフ場で会いましょう。

参考