Links
Comment on page

Integration page - JP

Setup
Video Feed
Integrate VideoFeed
VideoFeedView
Video Player
Playback Events
  • AndroidManifest.xmlファイルに以下のコードを追加してください。
<application>
....
....
// Activity needed for video playback
<activity android:name="com.loopnow.fireworklibrary.PlaybackActivity" />
// We plan on using advertising_id to improve target ads so that you can monetize better.
// This is needed for to get advertising id using Android ad sdk.
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true" />
/**** Deprecated it from version v5.5.9, you can ignore this Activity since v5.5.9+ *****/
// Activity needed for starting a web browser , when CTA on the advertisement is clicked.
<activity
android:name="com.loopnow.fireworklibrary.views.FireworkWebClientActivity"
android:theme="@style/AppTheme.NoActionBar.FullScreen" />
</application>
  • プロジェクトのbuild.gradleファイルに以下のコードスニペットを追加します。
allprojects {
repositories {
--
---
---
maven { url 'https://jitpack.io' }
}
}
  • アプケーションのbuild.gradleファイルに以下のコードスニペットを追加します。
dependencies {
------ other dependencies
------
------
implementation 'com.github.loopsocial:firework_sdk:{sdk_version}'
// Refer to https://github.com/loopsocial/firework_sdk_official/blob/master/RELEASENOTES.MD
// If you are using ExoPlayer version 2.11.7
implementation 'com.github.loopsocial:AndroidFireworkPlayer:v2.11.7.8'
// If you are using ExoPlayer version 2.12.1
implementation 'com.github.loopsocial:AndroidFireworkPlayer:v2.12.1.8'
// If you are using ExoPlayer version 2.13.3
implementation 'com.github.loopsocial:AndroidFireworkPlayer:v2.13.3.8'
// If you are using ExoPlayer version 2.13.3 and do not want IMA spport
implementation 'com.github.loopsocial:AndroidFireworkPlayer:v2.13.3_noima.1'
// Note that you only need one based on the version you are using.
// This is firework library based on play-services-ads to enable
// admob advertisement.
// Inlcude v20.0.0 version if you are using play-services v20.0.0
// or above.
implementation 'com.github.loopsocial:AndroidAdsService:v20.0.0'
// Include if you are using play-service v19.5.0
implementation 'com.github.loopsocial:AndroidAdsService:v19.5.0'
// Include if you are using play-service v19.8.0
implementation 'com.github.loopsocial:AndroidAdsService:v19.8.0'
// If you do not include AndroidAdsService, you will miss on
// monetizing video views.
}
android {
.....
.....
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility 1.8
targetCompatibility 1.8
}
}
最新のSDKバージョンとリリースログはこちらからご覧いただけます。https://github.com/loopsocial/firework_sdk_official/blob/master/RELEASENOTES.MD

SDKを特定する

すべての機能を使い始める前に、SDKを初期化する必要があります。理想的には、アプリケーションが作成され、フォアグラウンドになった段階で初期化を行うべきです。アプリケーションがフォアグラウンドになったことを知る方法の1つは、activityLifecycleCallsbacksを確認することです。
registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
override fun onActivityCreated(p0: Activity, p1: Bundle?) {
}
override fun onActivityStarted(p0: Activity) {
++activityCounter
if(activityCounter == 1) {
initializeFireworkSDK()
}
}
override fun onActivityResumed(p0: Activity) {
}
override fun onActivityPaused(p0: Activity) {
}
override fun onActivityStopped(p0: Activity) {
}
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
}
override fun onActivityDestroyed(p0: Activity) {
}
})
}
/**
* Initializes FW SDK
* You must pass the clientId provided to you.
* Please contact Firework business team, if you don't have one.
* <p>
* This method will always return immediately and must be called on the main thread.
* It is recommended that you initialize FW SDK when application created. FW SDK must be initialized
* before using any of the features.
*
* @param applicationContext provide the application context. Do not pass the activity context.
* @param clientId client id received from Firework to be used with your application
* @param userId an id to uniquely identify device or user. If you don't have a unique id
* You can use Android_ID as it is or you can hash it and then use it.
* @param sdkStatusListener Callback used for reporting sdk status.
*
*
*/
@UiThread
fun initialize(
applicationContext: Context,
clientId: String,
userId: String?,
sdkStatusListener: SdkStatusListener
)
/**
* You can use the following code snippet to get ANDROID_ID that
* you can pass as userId.
*/
val androidId = Settings.Secure.getString(
applicationContext.contentResolver,
Settings.Secure.ANDROID_ID
)
/**
* If you have reservation about passing ANDROID_ID as userID as it is,
* you can use the following function to hash ANDROID_ID before passing it
* as userId.
* @param text parameter to be hashed
* @returns hashed string
*/
fun getHash(text: String) : String {
val digest: MessageDigest = MessageDigest.getInstance("SHA-256")
val hash: ByteArray = digest.digest(text.toByteArray(StandardCharsets.UTF_8))
return Base64.encodeToString(hash,Base64.NO_WRAP)
}

Clear Guest Id

Call the removeGuestId(applicationContext) before initialize the SDK if you intent to change the Guest id.
/**
* clears the guest_id from the preference manager
*/
fun removeGuestId(applicationContext: Context)

データレポートへのチェックサムの追加

以下のスニペットをAndroidManifest.xmlに追加することで、データレポートへのチェックサムの追加を有効にすることができます。
<Application>
<meta-data android:name="Firework:Checksum" android:value="true" />
</Application>
Firework SDKをアプリケーションに統合すると、何百万ものビデオライブラリーにアクセスできます。これらのビデオは、アプリケーションベース、またはユーザーベースの設定や好みに応じて、アプリケーションで利用できるようになります。本統合ガイドおよびAPIリファレンスドキュメントでは、設定や好みに応じた動画のストリームを「ビデオフィード」または「ビデオフィード」と呼び、総称して「ビデオフィード」または「ビデオフィード」と呼びます。
現在、ビデオフィードには以下の3種類があります。
  • ディスカバリーフィード
  • チャンネルフィード
  • プレイリストフィード

ディスカバリーフィード

その名の通り、ビデオフィードの中でも最も探索的なもので、ユーザーの好みを探り、ユーザーの好き嫌いを時間をかけて学習し、それに基づいて、ユーザーが興味を持ちそうなビデオを推奨します。しかし、完全にワイルド・ワイルド・ウェストではなく、アプリのコアテーマが損なわれないように、アプリ固有の制約を設けることができます。
以下は、アプリケーションをシステムに登録する際に設定できる制約事項です。設定については、パートナーのサクセスチームのスタッフがお手伝いいたしますのでご安心ください。 ロケール、国、言語 - すべてのビデオには、CMSでこれら3つのプロパティが関連付けられており、アプリケーションの好みに応じて、3つのパラメータの1つまたは複数に基づいてコンテンツを制約することができます。制約条件が定義されていない場合は、国際的なコンテンツが表示される可能性があります。
  • Locale、Country、Languageは、アプリケーションの登録時またはランタイムに定義することができます。
  • タグを許可する
  • タグを拒否する
  • Locale
  • 言語
  • 国 ( From where the video is uploaded )

チャンネルフィード

これは、あらかじめ定義されたビデオフィードです。ユーザーは、チャンネルに含まれていないビデオを見ることはできません。チャンネルを作成するには2つの方法があります。
1. 自分のコンテンツを持っている、つまりクリエイターの場合、Fireworkのクリエイターアカウントに関連したチャンネルがデフォルトで作成され、自分のアカウントにアップロードされたすべてのビデオがチャンネルフィードになります。 2. 2. クリエイターでなくてもチャンネルを持つことができます。
2.クリエイターでなくてもチャンネルを持つことができ、Fireworkのコンテンツライブラリーの動画をチャンネルに再投稿・追加することができます。
チャンネルフィードを選択した場合、ユーザーに提供されるビデオは順番に並んでいないことを知っておく必要があります。チャンネルフィードはコンテンツを定義しますが、リコメンデーションエンジンが作動し、ユーザーが興味を持ちそうなチャンネルの動画を提供します。

プレイリストフィード

プレイリストフィードはチャンネルフィードと同様にあらかじめ定義されていますが、チャンネルフィードとは異なり、その順序は決定されています。ビデオフィードは、ビデオが追加されたのと同じ順序で含まれ、推薦エンジンはここでは役割を果たしません。
アプリケーションにビデオフィード(ビデオ)を組み込むには、2つの方法があります。
  • VideoFeedView (ビデオフィードビュー)
VideoFeedViewは、ビデオフィード内の各ビデオのサムネイルを、無限にスクロール可能な水平、垂直、またはグリッドレイアウトで表示するカスタムビューです。ユーザーがビデオサムネイルのいずれかをクリックすると、メディアプレーヤーが起動し、選択/クリックされたビデオの再生を開始します。
VideoFeedViewは、XMLを使ってビュー階層に含めることができ、XML属性やプログラムでVideoFeedを指定することができます。以下は、ビデオフィードをグリッドレイアウトに表示する XML コードスニペットです。
VideoFeedView displaying VideoFeed in Grid layout
<com.loopnow.fireworklibrary.views.VideoFeedView
android:id="@+id/integrated_videofeed"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
app:feedType="discover"
/>

  • PlaybackActivity
アプリケーションにVideoFeedを組み込むもう一つの方法は、プレーヤーを起動することです。SDKは、選択した内容に基づいてVideoFeedを作成し、プレーヤーを起動してVideoFeedからビデオの再生を開始するヘルパー関数を提供します。
/**
* Launch the video player activity and start playing video
* based on VideoFeed configuration provided
* @param feedId This is random integer which needs to be unique. A feed can be shared across
* multiple launches. If you pass the feedId that has been used in the past, then any available
* data for the specified configuration is used.
* @param feedType specifies the feedType to be used. options are playlist, channel, discover
* @param channelId specifies the channelId to be used with feedType channel and playlist
* @param playlistId specifies the playlistId to be used with feedType playlist
* @param activityContext used to launch PlayerActivity
*/
fun play(activity: Activity, feedId: Int, feedType: FeedType, channelId: String?, playlistId: String?)
現在のところ、XMLからのVideoFeedViewのインフレーションのみをサポートしています。このセクションでは、VideoFeedView の詳細とカスタマイズについて説明します。
VideoFeedView をビュー階層に追加するには、以下の XML スニペットを追加するだけで簡単です。これにより、すべての属性にデフォルト値が設定されます。
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="{desired_height}"
/>
以下の属性を使って、VideoFeedViewをカスタマイズすることができます。
  • app:feedLayout - デフォルトでは、VideoFeedViewは、android:layout_height属性で指定された高さを持つ水平レイアウトでサムネイルをレイアウトします。 しかし、VideoFeedViewを設定して、サムネイルをグリッドレイアウトだけでなく、垂直にも表示することができます。下記の例を参考にして、自分に合ったものを選んでください。
Default Horizontal Layout
Vertiical Layout
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="vertical"
/>
Grid Layout with default 2 columns
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
/>
  • app:feedType - VideoFeedの項に戻りますが、サポートされているVideoFeedは3種類あります。この属性では、使用するVideoFeedのタイプを指定できます。 app:feedType discover feedを指定しない場合は、デフォルト値となります。
    • フィードタイプ discover の場合は app:feedType="discover" を使用します。
    • フィードタイプがchannelの場合は、app:feedType="channel"を使用します。
    • フィードタイプがplaylistの場合は、app:feedType="playlist"を使用します。
  • app:channelId - feedType="channel"を使用する場合、どのチャンネルを使用するかを指定する必要があります。そのためにapp:channelIdという属性を使うことができます。 実行時に使用するchannelIdを決定する場合は、API setChannelを使用して、プログラムでchanneldを設定することもできます。
/**
* XML
*/
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedType="channel"
app:channelId=""
/>
/**
* Programatically
*/
/**
* sets the channelId for the channel Video Feed.
* @param channelId valid channel id
*/
fun setChannel(channelId: String)/**
* XML
*/
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedType="channel"
app:channelId=""
/>
/**
* Programatically
*/
/**
* sets the channelId for the channel Video Feed.
* @param channelId valid channel id
*/
fun setChannel(channelId: String)
  • app:showTitle - 動画のタイトルやキャプションを、サムネイルと一緒に表示したい場合に、この属性を使用できます。デフォルトでは、タイトルは表示されません。
app:showTitle="true"
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
app:showTitle="true"
/>
<!-- default title position is below thumbnail -->
デフォルトでは、feedLayoutが垂直またはグリッドの場合、キャプションはサムネイルの下に表示され、feedLayoutが水平の場合、キャプションの下端はサムネイルの下端に合わせて表示されます。次に、キャプションの位置を変更するための属性について説明します。
  • app:titlePosition - ビデオキャプションを2つの位置に表示するオプションがあります。1. サムネイルの下 app:titlePosition="below", 2.サムネイルの下部 app:titlePosition="alignBottom" . タイトルの位置を明示的に指定しない場合は、上の例のようにデフォルトで下になります。なお、app:feedLayout="horizontal"を選択した場合、app:titlePosition="below"は使用できません。
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
app:showTitle="true"
app:titlePosition="alignBottom"
/>
  • app:textStyle - キャプションで使用される独自のtextStyleを提供できます。 以下のようにstyle.xmlでテキストスタイルを定義することができます。
Custom styling for caption
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
app:showTitle="true"
app:titlePosition="alignBottom"
app:textStyle="@style/CustomCaptionStyle"
/>
<style name="CustomCaptionStyle">
<item name="android:textColor">#ffff6622</item>
<item name="android:textSize">15dp</item>
<item name="android:gravity">bottom</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:background">#80000000</item>
</style>
  • app:imageStyle - これはまだ未完成ですが、現在のところ、コーナーラジアスのスタイルを設定することができます。以下の例では、app:imageStyle属性を定義することで、コーナーラジアスを追加しています。
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedLayout="grid"
app:showTitle="true"
app:titlePosition="below"
app:imageStyle="@style/CustomImageStyle"
app:textStyle="@style/CustomCaptionStyle
/>
  • app:playlistId - feedType="playlist"を使用する場合、使用するプレイリストとそれに関連するチャンネルを指定する必要があります。チャンネルを指定するには app:channelId、プレイリストを指定するには app:playlistId という属性を使用します。 どのプレイリストを使用するかを実行時に決定する場合は、API setPlaylistを使用して、プログラムでプレイリストを設定することもできます。
/**
* XML
*/
<com.loopnow.fireworklibrary.views.VideoFeedView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:feedType="playlist"
app:channelId=""
app:playlistId=""
/>
/**
* Programatically
*/
/**
* sets the playlist
* @param playlistId valid playlsit id
* @param channelId valid channel id that playlist is associated with
*/
fun setPlaylist(channelId: String, playlistId: String)
<style name="CustomImageStyle" >
<item name="android:radius">12dp</item>
</style>

コールバック -

SDKは、イベントをリッスンし、任意のアクションを実行するために実装できる以下のコールバックを提供しています。
  • OnItemClickedListener - ユーザーがサムネイルをクリックしたときにイベントを受信したい場合は、このインターフェースを実装します。
interface OnItemClickedListener {
/**
*
* index : position of the video in the list
* title : title of the video , empty if no title
* id : unique identifier of the video
* videoDuration : total duration of the video in miliseconds
*
*/
fun onItemClicked(index: Int, title: String, id: String, videoDuration: Long) {
}
/**
*
* index : position of the video in the list
*/
fun onItemClicked(index: Int) {
}
/**
* Implement if you want to handle the thumbnail clicked event yourself.
* If false is returned, SDK will handle the click event by launching the player
* and start playing the clicked video.
*
* @author Parijat Shah
* @param index position of the video in the list
* @param feedId identifies the source VideoFeed backing the VideoFeedView
* @return true if you handled the event, false if you didn't
*
*/
fun onItemClicked(index: Int , feedId: Int ) : Boolean {
return false
}
}
VideoFeedViewの以下のメソッドを使ってリスナーを追加することができます
/**
* adds OnItemClickedListener
* @param listener
*/
addOnItemClickedListener(listener: OnItemClickedListener)
ユーザーがVideoFeedViewに表示されているサムネイルをクリックすると、SDKはVidep Playerを起動し、onItemClickedEventを自分で処理しない限り、ユーザーがクリックしたビデオの再生を開始します。 ユーザーは、右にスワイプするか、画面の右側をタップして次のビデオを再生し、左にスワイプするか、画面の左側をタップして前のビデオを再生できます。
VideoPlayerPropertiesを使用して、再生エクスペリエンスをカスタマイズしたり、いくつかの機能を有効/無効にしたりすることができます。
  • ループ
/**
* When true, video will loop until user explicitly swipes/clicks away.
* When false, video player will play next video queued.
* Default value is false.
*/
var loop = false
  • フルスクリーンプレーヤー
ビデオプレーヤーをフルスクリーンモードで起動したい場合は、fullScreenPlayerをtrueに設定してください。デフォルトはfalseです。
/**
* launch video player in full bleed ( full screen ) mode
*/
var fullScreenPlayer = false
  • シェア
/**
* When true, share feature will be enabled, disabled otherwise.
* Enabling Share feature, will display share icon on the screen
* and when a user clicks on it, a default shared sheet is displayed.
* The shared URL is firework url and user will watch video on fw.tv.
* You can customize the shared URL
*
*/
var share = true
共有URLのカスタマイズが可能です。この機能は、共有URLをユニバーサルリンクにして、ユーザーがそれをクリックすると、アプリケーションで開くことができるようにしたい場合に使用できます。共有URLをカスタマイズするには、ベースとなるURLを指定します。
/**
* The function allows you to set the base url and query parameters to construct
* the url that is shared when user uses share feature.
* The custom url should only be used, if you want to support universal link and
* handle opening of the url in the app first before opening it in the web browser.
* @param baseUrl e.g https://example.com
*
*/
fun setBasePlayerUrl(baseUrl: String) {
baseShareUrl = baseUrl
}
ユニバーサルリンク(共有URL)をアプリで処理するには、インテント/ユニバーサルリンクを処理すべきと思われるアクティビティに、インテントフィルタを追加する必要があります。
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="example.com" />
</intent-filter>
ユーザーが共有URLをクリックすると、このアクティビティが起動します。以下のコードをアクティビティのonCreateメソッドで使用することで、共有URLを誰かがクリックしたことでアクティビティが起動したかどうかを確認できます。
val uri : Uri? = intent.data
uri?.let {
playSharedUrl = uri.scheme ?: "" in listOf(
"http",
"https"
) && uri.host == "example.com"
}
ユーザーが共有URLをクリックしてアクティビティが開始された場合、SDKを初期化し、初期化が完了したら、FwSDKで利用可能なplay APIを使用してプレーヤーを起動し、共有ビデオを再生する必要があります。以下のコードをご参照ください。
FwSDK.initialize(this.application, client_id, null, object : FwSDK.SdkStatusListener {
override fun currentStatus(status: SdkStatus, extra: String) {
when(status) {
SdkStatus.Initialized -> {
if(playSharedUrl) {
//parse the uri , fwplayer="xxxx" include the information that Firework SDK needs
// to play the video.
val parts = uri.toString().split("fwplayer=")
if(parts.size > 1) {
// play the video
FwSDK.play(parts[1])
}
}
}
}
}
})
  • autoPlayOnComplete
/*
* When true, player will play the next video,
* When the current video finishes playing.
* When false, playing video will loop until user explicitly
* swipes away
* Default value is true.
*/
var autoPlayOnComplete = true

Storyblock - ユーザーがサムネイルをクリックすることなく、直接プレーヤーを起動します。

ユースケースがあれば、プレーヤーを直接起動することができます。SDKには、プレーヤーのアクティビティを起動するための使いやすいAPIが用意されています。
/**
* Supports storyboard. Launch the video player activity and start playing
* video based on the content configuration provided
* @param feedId This is random integer which needs to be unique.
* A feed can be shared across multiple launches. If you pass the feedId that
* has been used in the past, then any available data for the
* specified configuration is used.
* @param feedType specifies the feedType to be used. options are playlist,
* channel, discover
* @param channelId specifies the channelId to be used with feedType
* channel and playlist
* @param playlistId specifies the playlistId to be used with feedType
* playlist
* @param activityContext used to launch PlayerActivity
*/
@MainThread
fun play(
activity: Activity, feedId: Int, feedType: FeedType,
channelId: String?, playlistId: String?
)

CTAのカスタム処理

アプリケーションでCTAのクリックを処理できるようになりました。CTAがクリックされたイベントをリッスンするには、CtaClickHandlerインターフェイスを実装して追加します。以下の例を参考にしてください。
// return true if you have handled the event and do not want SDK to handle it and false when you want SDK to handle the ctaClicked event.
FwSDK.ctaClickHandler = object : FwSDK.CtaClickHandler {
override fun ctaClicked(label: String, actionUrl: String?): Boolean {
return true
}
}
VideoEventListenerというインターフェースを実装することで、ビデオ再生に関するイベントを受け取ることができます。
interface VideoEventListener {
fun event(eventName: String, jsonObject: JSONObject)
}
以下は、報告されたイベントのリストです。
  • "video-impression" : ユーザーに動画が表示されたときに発生 。
  • "video-start" : 動画が1秒間再生されたときに発生します。
  • "video-first-quartile" : 動画の25%が再生されたときに実行されます。
  • "video-midpoint" :映像の50%が再生されたときに実行されます。動画の50%が再生されたときに実行されます。
  • "video-third-quartile" :映像の75%が再生されたときに実行されます。動画の75%が再生されたときに実行されます。
  • "video-complete" : 100%の映像が再生されたときに実行されます。
  • "video-session-end" : 100%の再生が完了した後に映像がループすることがありますが、その場合、video-exitとvideo-completeは異なるタイミングで発生します。
  • "video-ad-start": 広告映像が1秒間再生されたときに実行されます。
  • "video-ad-end": 広告動画の再生が終了した時に実行されます。
  • "video-click-cta" : ユーザーがCTAをクリックしたときに実行されます(すべての動画にCTAがあるわけではありません)。
  • "videoShare" : ユーザーがシェアボタンをクリックしたときに実行されます。
  • "videoStartError" : 動画再生時にエラーが発生した場合に発生します。
  • "videoAdStartError" : 広告動画の再生でエラーが発生したときに発生します。 各イベントには、関連するデータがJSONObjectの形式で取得されます。データは以下の通りです。
  • "autoplay" : Boolean -> 動画再生が自動再生であるかどうかを記述します。
  • "badge" : String -> 再生中の動画が広告動画の場合、バッジの値は "ad "になります。
  • "caption" : String -> 再生中の動画のタイトル 。
  • "duration" : Long -> 動画の総再生時間(ミリ秒単位 。
  • "hashtags" : StringArray -> 動画に関連するハッシュタグ 。
  • "has_cta" : Boolean -> 動画にCTAがあるか? 。
  • "height" : Int -> 動画プレイヤーの高さ 。
  • "width" : Int -> 動画プレイヤーの幅 。
  • "video_id" : String -> 一意に識別される動画の encodedId 。
  • "progress" : イベントが発生したときの動画再生の進捗状況(ミリ秒単位 VideoEventListener は、以下のように追加できます。