- 印刷する
Handler
- 印刷する
Shoplive Player で発生した通知をクライアントから Handler
関数を通じて渡され、必要な処理を行います。
ShopLive.setHandler
ShopLive event handler です。
fun setHandler(handler: ShopLiveHandler)
サンプルコード
class MainActivity : AppCompatActivity() {
private val handler = object : ShopLiveHandler() {
override fun handleNavigation(context: Context, url: String) {
Log.d(TAG, "handleNavigation >> url=$url")
}
override fun onChangeCampaignStatus(context: Context, campaignStatus: String) {
Log.d(TAG, "onChangeCampaignStatus >> $campaignStatus")
}
}
private fun init() {
ShopLive.setHandler(handler)
}
}
ShopLiveHandler.handleNavigation
Shopliveで商品、バナーなどを選択した場合、選択した商品やバナー情報を配信します。
handleNavigationにurlが渡されるとプレイヤーがPIPに切り替わるため、ShopLive.startPictureInPicture()を呼び出す必要はありません。
P
IP 切り替えを望まない場合は、ShopLive.setNextActionOnHandleNavigationインターフェイスを参照してください。
fun handleNavigation(context: Context, url: String)
パラメータ | 説明 |
---|---|
url | 商品やバナーを選択したときに移動するURL |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun handleNavigation(context: Context, url: String) {
val type: ActionType = "your_action_type"
when (type) {
ActionType.PIP, ActionType.CLOSE -> {
val intent: Intent = Intent(this@SampleActivity, WebViewActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
intent.putExtra("url", url)
startActivity(intent)
}
ActionType.KEEP -> {
val webDialogFragment = WebViewDialogFragment(url)
ShopLive.showDialogFragment(webDialogFragment)
}
}
}
}
アプリケーションガイド
Coupon
クーポン処理が完了したときにクーポンが有効かどうかを設定するための状態です。
public enum CouponPopupStatus {
SHOW, // クーポンを再表示
HIDE, // クーポンを削除
KEEP // 状態を維持
}
クーポン処理が完了したときに通知メッセージが表示されたときに表示されるタイプを設定します。
public enum CouponPopupResultAlertType {
ALERT, // アラート
TOAST // トースト
}
ShopLiveHandler.handleDownloadCoupon
Shopliveでクーポンを選択(タップ)すると、クライアントにクーポン情報が送信されます。クライアントのクーポン処理結果は、callback
を通じて Shoplive Android SDK に戻されます。このコールバックは、Shoplive Player でクーポン ステータスを設定するために使用されます。
fun handleDownloadCoupon(context: Context, couponId: String, callback: ShopLiveHandlerCallback)
パラメータ | 説明 |
---|---|
context | Context |
couponId | 選択したクーポンID |
callback | クーポン処理が完了したらShopLiveに知らせます |
callback
ShopLiveHandlerCallback.couponResult
クーポンのダウンロードが完了したら、結果が成功したか失敗したか、メッセージなどを渡すために呼び出します。
/**
* @param isDownloadSuccess - true: 成功、false: 失敗
* @param message - 成功または失敗のメッセージ
* @param couponStatus - SHOW: クーポンを再活性化、HIDE: クーポンを非表示、KEEP: 状態を維持
* param alertType - ALERT: ポップアップ、TOAST: メッセージ
* */
fun couponResult(
isDownloadSuccess: Boolean,
message: String?,
couponStatus: ShopLive.CouponPopupStatus,
alertType: ShopLive.CouponPopupResultAlertType) {}
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun handleDownloadCoupon(
context: Context,
couponId: String,
callback: ShopLiveHandlerCallback
) {
val builder: AlertDialog.Builder = Builder(context)
builder.setTitle("クーポンダウンロード")
builder.setMessage("couponId $couponId")
builder.setPositiveButton("成功") { dialog, which ->
// 成功した時callback設定
callback.couponResult(
true、
"クーポンをダウンロードしました。"、
ShopLive.CouponPopupStatus.HIDE、
ShopLive.CouponPopupResultAlertType.TOAST.
)
}
builder.setNegativeButton("失敗") { dialog, which -> // 失敗した時のコールバック設定
// 失敗した時のcallback設定
callback.couponResult(
false、
"クーポンのダウンロードに失敗しました。"、
ShopLive.CouponPopupStatus.SHOW、
ShopLive.CouponPopupResultAlertType.ALERT
)
}
val dialog: Dialog = builder.create()
dialog.show()
}
}
アプリケーションガイド
ShopLiveHandler.handleCustomAction
ポップアップで選択したイベントを custom
で指定し、ポップアップを選択した時、ポップアップ情報を渡します。ポップアップの id
, type
, payload
を渡します。
fun handleCustomAction(context: Context, id: String, type: String, payload: JSONObject, callback: ShopLiveHandlerCallback)
パラメータ | 説明 |
---|---|
context | Context |
id | クーポンまたはバナーID |
type | クーポンまたはバナータイプ |
payload | ユーザー定義の payload |
callback |
|
callback
ShopLiveHandlerCallback.customActionResult
customAction
処理が完了すると、成功または失敗の結果、メッセージなどを転送するために呼び出されます。
/**
* @param isSuccess - true: 成功、false: 失敗
* @param message - 成功または失敗のメッセージ。
* @param couponStatus - SHOW: 再活性化、HIDE: 非表示、KEEP: ステータス維持
* @param alertType - ALERT: ポップアップ、TOAST: メッセージ
* */
fun customActionResult(
isSuccess: Boolean,
message: String?,
couponStatus: ShopLive.CouponPopupStatu,
alertType: ShopLive.CouponPopupResultAlertType?) {}
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun handleCustomAction(
context: Context,
id: String,
type: String,
payload: JSONObject,
callback: ShopLiveHandlerCallback
) {
val builder: AlertDialog.Builder = Builder(context)
builder.setTitle("カスタムアクション(ポップアップ)")
builder.setMessage("id: $id" + " type: " + R.attr.type + " payload: " + payload.toString())
builder.setPositiveButton("success") { dialogue, which ->
// 成功した時のコールバック設定
callback.couponResult(
true、
"Custom action(Popup)処理が成功しました。"、
ShopLive.CouponPopupStatus.HIDE、
ShopLive.CouponPopupResultAlertType.TOAST.
)
}
builder.setNegativeButton("失敗") { dialog, which -> // 失敗時のコールバック設定
// 失敗した時のコールバック設定
callback.couponResult(
false、
"Custom action(Popup)の処理が失敗しました。"、
ShopLive.CouponPopupStatus.SHOW,
ShopLive.CouponPopupResultAlertType.ALERT
)
}
val dialog: Dialog = builder.create()
dialog.show()
}
}
ShopLiveHandler.handleShare
放送中に共有することを選択したときのハンドラーです。Android Share Sheetを使用せずに直接実装するには、必ずoverride
してください。
fun handleShare(context: Context, data: ShopLivePlayerShareData) {}
パラメータ | 説明 |
---|---|
context | Context |
data | ShopLivePlayerShareData |
ShopLivePlayerShareData
field
type
description
campaign
ShopLivePlayerShareCampaign?
Campaignについて
url
String?
ShopLive.setShareScheme()で適用された注釈
ShopLivePlayerShareCampaign
field
type
description
campaignKey
String?
Campaign Key
title
String?
Campaign タイトル
description
String?
Campaign 説明
thumbnail
String?
Campaign サムネイル
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun handleShare(context: Context?, data: ShopLivePlayerShareData) {
Toast.makeText(context, "url=${data.url}", Toast.LENGTH_SHORT).show()
}
}
ShopLiveHandler.onChangeCampaignStatus
放送状態が変更されたときのHandlerです。
/**
* @param context - Context
* @param campaignStatus - READY | ONAIR | CLOSED
*/
fun onChangeCampaignStatus(context: Context, campaignStatus: String) {}
パラメータ | 説明 |
---|---|
context | Context |
campaignStatus | キャンペーン状態
|
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onChangeCampaignStatus(context: Context, campaignStatus: String) {
Log.d(TAG, "onChangeCampaignStatus >> $campaignStatus")
}
}
ShopLiveHandler.onCampaignInfo
JSON Object 形式の放送情報です。
fun onCampaignInfo(campaignInfo: JSONObject) {}
パラメータ | 説明 |
---|---|
campaignInfo | キャンペーン情報 怜) |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onCampaignInfo(campaignInfo: JSONObject) {
Log.d(TAG, "onCampaignInfo >> $campaignInfo")
}
}
ShopLiveHandler.onChangedPlayerStatus
Shoplive Playerの状態を受け取ります。
fun onChangedPlayerStatus(isPipMode: Boolean, playerLifecycle: ShopLive.PlayerLifecycle) { }
パラメータ | 説明 |
---|---|
isPipMode | 現在のPIPかどうか |
playerLifecycle | Shoplive Playerのステータス
|
enum PlayerLifecycle | 説明 |
---|---|
CREATED | プレーヤーが作成されました |
CLOSING | プレイヤー終了前 |
DESTROYED | プレイヤーが終了しました |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onChangedPlayerStatus(
isPipMode: Boolean,
playerLifecycle: ShopLive.PlayerLifecycle) {
when(playerLifecycle) {
ShopLive.PlayerLifecycle.CREATED -> {
}
ShopLive.PlayerLifecycle.CLOSING -> {
}
ShopLive.PlayerLifecycle.DESTROYED -> {
}
}
}
}
ShopLiveHandler.onSetUserName
ユーザー名が変更されたときに呼び出されます。
fun onSetUserName(jsonObject: JSONObject) {}
パラメータ | 説明 |
---|---|
jsonObject | ユーザー情報 예) |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onSetUserName(jsonObject: JSONObject?) {
Log.d(TAG, "onSetUserName >> $jsonObject")
}
}
ShopLiveHandler.handlePreview
Shopliveプレビュー画面を選択したときのハンドラーです。
プレビュー画面を選択すると、その放送に入ります。(デフォルト)
放送に入らず、直接実装するには必ず override
しなければなりません。
ただし,他のアプリの上に表示として提供されるプレビュー画面でのみイベントが伝達されます。OS PIP
ではプレビューイベントは配信されず、自動的に全画面放送に入ります。
fun handlePreview(context: Context, campaignKey: String) {}
パラメータ | 説明 |
---|---|
context | Context |
campaignKey | キャンペーンキー |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun handlePreview(context: Context, campaignKey: String) {
Log.d(TAG, "campaignKey=$campaignKey")
}
}
ShopLiveHandler.onReceivedCommand
command
命令を受け取ったときに呼び出されます。
fun onReceivedCommand(context: Context, command: String, data: JSONObject) {}
パラメータ | 説明 |
---|---|
context | Context |
command | 渡された命令 |
data | 渡されたデータ |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onReceivedCommand(context: Context, command: String, data: JSONObject) {
when(command) {
"LOGIN_REQUIRED" -> {
}
"CLICK_PRODUCT_CART" -> {
}
"EVENT_LOG" -> {
// parsing example 1
val name = data.getString("name")
val feature = data.getString("feature")
val parameter = data.getString("parameter")
Toast.makeText(
context,
"name : $name, feature : $feature, parameter : $parameter",
Toast.LENGTH_SHORT
).show()
// parsing example 2
val log = Gson().fromJson(data.toString(), ShopLiveLog.Data::class.java)
if (Options.isShowClickLog()) {
Toast.makeText(
context,
"name : ${log.name}, feature : ${log.feature}, campaignKey : ${log.campaignKey}, parameter : ${log.parameter}",
Toast.LENGTH_SHORT
).show()
}
}
}
}
ShopLiveHandler.log
ユーザーの行動を追跡できます。
ShopLiveLog.Data
field
type
description
name
String
Event の名前
feature
String
Eventの種類
click
,show
,action
campaignKey
String?
放送の Unique Key
parameter
Map<String, Any>?
関連する追加 parameter
サンプルコード
private val handler = object : ShopLiveHandler() {
...
override fun log(data: ShopLiveLog.Data) {
Log.d(TAG, "name=${data.name} feature=${data.feature} campaignKey=${data.campaignKey} parameter=${data.parameter}")
}
...
}
ShopLiveHandler.onError
放送前または放送中に発生したエラー状況に関するメッセージを配信します。
fun onError(context: Context, code: String, message: String) {}
パラメータ | 説明 |
---|---|
context | Context |
code | エラーコード |
message | エラーメッセージ |
サンプルコード
private val handler = object : ShopLiveHandler() {
override fun onError(context: Context, code: String, message: String) {
Log.d(TAG, "code=$code, message=$message")
}
}