レコメンドの表示

レコメンドの表示 #

ポップアップレコメンドやアプリアンケートなど、UIを持つレコメンドを取得した場合、レコメンド結果に対して view メソッドを呼び出すことで自動的にUIが表示されます。

  • 通常のレコメンド結果やJSONテンプレートのレコメンド結果に対して、view を呼び出してもコールバックは通常どおり呼び出されます。

レコメンド表示処理のコールバック #

viewメソッドが呼び出されるとイベントによって下記のコールバックが呼び出されます。
処理が必要なイベントには、コールバックを実装してください。

コールバック 呼び出されるタイミング
onStart レコメンド表示処理が開始されたとき
onSuccess レコメンド表示処理が成功したとき
onFailure レコメンド表示処理が失敗したとき
onCancel レコメンド表示処理がcancelメソッドによりキャンセルされたとき
onPlain レコメンド結果がアイテムコードのみを含むとき
onJson レコメンド結果がJSONテンプレートにより生成されたとき
onViewShow ポップアップレコメンドまたはアプリアンケートが表示されたとき
onViewClose ポップアップレコメンドまたはアプリアンケートが閉じられたとき
onViewOk ポップアップレコメンドまたはアプリアンケートがOKボタンで閉じられたとき
onViewCancel ポップアップレコメンドまたはアプリアンケートがキャンセルで閉じられたとき
onViewError ポップアップレコメンドまたはアプリアンケートの表示時にエラーが発生したとき
onRequestedUrlLoading アプリアンケートでサンクスページのURLの読み込みが要求されたとき

サンプルコード #

try Rtoaster.track(TrackingParameter.Builder()
    .location(Location("testLocation"))
    .build()
)
.onFailure{ error in
    print("Tracking error: \(error.toMap())")
}
.recommend(RecommendationParameter.Builder()
    .elementIds("questionnaire1")
    .build()
)
.show(ViewParameter.Builder()
    .windowScene() // WindowSceneを渡してください
    .build()
)
.onViewOk { view, results in
    // ポップアップがタップされた後の処理を記述してください
    print("View Ok: \(results)")
    view.close()
}
.onViewError { view, error in
    print("View error: \(error.toMap())")
}
.onRequestedUrlLoading { view, url in
    // アンケート後にサンクスページを開く処理を記述してください
    print("URL: \(url.absoluteString)")
}
Rtoaster.track(TrackingParameter {
    location(Location("testLocation"))
}).onFailure {
    Log.e("Rtoaster", "Tracking error", it)
}.recommend(RecommendationParameter {
    elementIds("questionnaire1")
})
.show(ViewParameter {
    activity(activity) // Activityを渡してください
    view(view)         // ポップアップの表示対象となるViewを渡してください
})
.onViewOk { view, results ->
    // ポップアップがタップされた後の処理を記述してください
    Log.d("Rtoaster", "View Ok: $results")
    view.close()
}
.onViewError { view, error ->
    Log.e("Rtoaster", "View error", error)
}
.onRequestedUrlLoading { view, url ->
    // アンケート後にサンクスページを開く処理を記述してください
    Log.d("Rtoaster", "URL: $url")
}

アプリポップアップ #

アプリコンテンツグループ作成時のアプリコンテンツタイプ選択に「ポップアップ」を選択し、さらにコンテンツ追加時にポップアップコンテンツとして「画像」を設定すると、ポップアップ画像表示用のメソッドを利用して、ポップアップ画像形式のレコメンドを容易に表示することができます。

ポップアップには管理画面で設定した画像が表示できる他、標準で閉じるボタンを備えており、下記のイベント発生時の動作を制御することが可能です。

  • ポップアップタップ時
  • 閉じるボタンタップ時(背景タップでポップアップを閉じる場合は背景をタップした場合も含む)
  • 表示するポップアップコンテンツが存在しない時
  • エラー発生時

view メソッド実行時、取得したレコメンドがポップアップレコメンドでない場合は、ポップアップは表示されません。
※ 閉じるボタンのデザインは変更できません。
※ ポップアップ画像のサイズは表示するデバイスの横幅にあわせて拡大・縮小されます。

管理画面の設定 #

本機能を利用する為には、アプリコンテンツタイプが「ポップアップ」で「画像」のコンテンツを設定する必要があります。
管理画面上の設定項目については、Rtoaster サポートセンターのマニュアル「アプリコンテンツグループ設定- コンテンツ編集(ポップアップ)」をご参照ください。

アプリポップアップの効果測定 #

表示されたアプリポップアップをタップした場合、アプリポップアップの効果測定IDがRtoasterに自動的に送信され、効果測定が行われます。
閉じるボタンタップ時や背景タップでポップアップを閉じた場合は、効果測定IDは送信されません。
アプリ側でポップアップの効果測定IDを管理する必要はありません。

アプリアンケート #

アプリコンテンツグループ作成時のアプリコンテンツタイプ選択に「ポップアップ」を選択し、さらにコンテンツ追加時にポップアップコンテンツとして「アンケート」を設定すると、アンケートの表示と回答収集を容易に実現できます。

アンケートには管理画面で設定した画像が表示できる他、標準で閉じるボタンを備えており、下記のイベント発生時の動作を制御することが可能です。

  • アンケート回答送信時
  • アンケート回答未送信時
  • アンケート表示のクローズ時
  • アンケート回答サンクスページのリンク先リクエスト時
  • 表示するアンケートがない場合
  • アンケート取得時にエラーが発生した場合

view メソッド実行時、取得したレコメンドがアンケートでない場合は、アンケートは表示されません。

管理画面の設定 #

本機能を利用する為には、アプリコンテンツタイプが「ポップアップ」で「アンケート」のコンテンツを設定する必要があります。
管理画面上の設定項目については、Rtoaster サポートセンターのマニュアル「アプリコンテンツグループ設定- アプリコンテンツ編集」をご参照ください。

アプリアンケートの効果測定 #

表示されたアンケートが回答された場合、その回答は自動的にRtoasterに送信されます。
詳細については、Rtoasterサポートセンターのマニュアル「効果測定(Web・アプリ):アンケート」をご参照ください。

注意 #

Androidでポップアップを表示する場合は Rtoaster.track().recommend().show() 実行時に生成される IViewer 参照がGCにより解放されないように、 IViewer 参照を Activity で保持されるように実装してください。 IViewer 参照が解放された場合、定義したコールバックが起動しなくなり意図しない動作となる可能性があります。

class XxxxActivity {
    // showRecommendPopup() を呼び出しているアクティビティクラスのメンバーとしてIViewer型変数を定義
    var viewer: IViewer? = null

    fun xxxx() {
        viewer = showRecommendPopup()
    }
}

// IViewer への参照を Activityで保持するために返す
fun showRecommendPopup(): IViewer? {
    return try {
        Rtoaster
            .track(TrackingParameter {/** params **/}
            ).recommend(RecommendationParameter {/** params **/}
            ).show(ViewParameter {/** params **/}
            ) // TODO: 追加でコールバックを定義する
    } catch (e: Exception) {
        // TODO: エラーハンドリングする
        null
    }
}