- 印刷する
API: Etc
- 印刷する
mute
現在再生中のビデオをミュートします。
func mute()サンプルコード
ShopLive.mute()unmute
現在再生中の動画のミュートを解除します。
func unmute()サンプルコード
ShopLive.unmute()getCampaigns
accessKey に属するキャンペーン(配信)の一覧と、各キャンペーンの現在の状態を取得します。呼び出す前に ShopLive.configure(with:) で accessKey を設定してください。iOS SDK 1.8.15 以降で利用できます。
extension ShopLive.API {
// completion
@discardableResult
static func getCampaigns(_ request: ShopLiveCampaignListRequest = ShopLiveCampaignListRequest(),
completion: @escaping (Result<ShopLiveCampaignListResponse, ShopLiveCommonError>) -> Void) -> ShopLiveCancellable
// async/await (iOS 13+)
static func getCampaigns(_ request: ShopLiveCampaignListRequest = ShopLiveCampaignListRequest()) async throws -> ShopLiveCampaignListResponse
}注意
completion はメインスレッドで呼び出されます。
戻り値
ShopLiveCancellableのcancel()で進行中のリクエストをキャンセルできます。async 版はTaskがキャンセルされるとリクエストも一緒にキャンセルされます。リクエスト・レスポンスの型は
ShopliveSDKCommonモジュールに定義されています。コード内で型名を直接使う場合はimport ShopliveSDKCommonが必要です。
ShopLiveCampaignListRequest
取得条件です。すべてのパラメーターは任意(オプション)で、引数なしの ShopLiveCampaignListRequest() を渡すとサーバーのデフォルト値で全状態を取得します。
パラメーター | 型 | 説明 |
|---|---|---|
page |
| ページ番号。1 から始まります。(デフォルト: 1) |
size |
| 1 ページあたりのキャンペーン数。最大 20 です。(デフォルト: 10) |
statuses |
| 取得する状態のフィルター。空の場合は全状態を取得します。 |
order |
| scheduledAt 基準の並び順。 |
ShopLiveCampaignListResponse
取得結果です。
プロパティ | 型 | 説明 |
|---|---|---|
campaigns |
| 取得したキャンペーンの一覧 |
hasMore |
| 次のページがあるかどうか。true の場合は page を 1 増やして再度取得します。 |
ShopLiveCampaign
キャンペーン 1 件の情報です。
プロパティ | 型 | 説明 |
|---|---|---|
campaignId |
| キャンペーン ID |
campaignKey |
| キャンペーンキー。 |
title |
| キャンペーンのタイトル |
description |
| キャンペーンの説明 |
campaignUrl |
| キャンペーン URL |
rerun |
| 再配信かどうか |
archiveStream |
| アーカイブストリーム(見逃し配信)が提供されるかどうか |
privateLive |
| プライベート配信かどうか。一覧にはそのまま含まれるため、表示するかどうかはアプリ側で判断します。 |
scheduledAt |
| 配信予定開始時刻 |
scheduledEndAt |
| 配信予定終了時刻 |
posterUrl |
| ポスター画像 URL |
lifecycle |
| 状態と状態遷移の時刻 |
metrics |
| 視聴指標。 |
ShopLiveCampaign.Lifecycle
キャンペーンの状態と、状態遷移の時刻です。
プロパティ | 型 | 説明 |
|---|---|---|
status |
| キャンペーンの状態。リハーサル中は |
rehearsal |
| リハーサル中かどうか。リハーサル中も status は |
startedAt |
| 配信開始時刻 |
closingAt |
| 終了処理の開始時刻。status が |
endedAt |
| 配信終了時刻 |
ShopLiveCampaign.Status
キャンペーンの状態値です。サーバー値がそのままマッピングされ、未定義の値は .unknown として渡されます。
Case | サーバー値 | 説明 |
|---|---|---|
| RESERVED | 予約済みの配信。リクエストのフィルター(statuses)では指定できず、全状態を取得した場合のみ含まれます。 |
| READY | 配信準備(待機)中。lifecycle.rehearsal が true の場合はリハーサル中です。 |
| ONAIR | 配信中。lifecycle.closingAt がある場合は終了処理中です。 |
| CLOSED | 配信終了 |
| その他 | 未定義のサーバー状態値です。今後追加される状態に備えて元の文字列をそのまま保持します。 |
ShopLiveCampaign.Metrics
視聴指標です。.onair / .closed の状態でのみ提供されます。
プロパティ | 型 | 説明 |
|---|---|---|
userCount |
| 視聴者数 |
adoreCount |
| いいね(ハート)数 |
showUserCount |
| false の場合、userCount / adoreCount を UI に表示してはいけません。 |
エラー処理
失敗時は ShopLiveCommonError が渡されます。codes にエラーコードが入り、message は常に固定文言 Failed to fetch campaign list. Refer to the error code. です。原因は codes で判別してください。サーバーが返したエラーコードはそのまま渡されます。コードの一覧は Error codes ドキュメントを参照してください。
Code | 説明 |
|---|---|
9000 | accessKey が設定されていません。先に |
-200 | 存在しない accessKey です。(Customer Account Not Found) |
その他のサーバーエラーコード | サーバーが返したエラーコードがそのまま渡されます。Error codes ドキュメントを参照してください。 |
HTTP ステータスコード | サーバーがエラー本文なしで応答した場合、HTTP ステータスコード(例: 404、500)がそのまま渡されます。 |
9900 | ネットワーク接続に失敗しました。 |
9901 | レスポンス JSON の解析に失敗しました。 |
10000 | 予期しないエラーです。 |
サンプルコード
import ShopLiveSDK
import ShopliveSDKCommon
// accessKey の設定 (アプリで最初に 1 回)
ShopLive.configure(with: "{accessKey}")
// 配信中・準備中のキャンペーンを新しい順に 20 件取得
let request = ShopLiveCampaignListRequest(page: 1,
size: 20,
statuses: [.onair, .ready],
order: .descending)
let cancellable = ShopLive.API.getCampaigns(request) { result in
switch result {
case let .success(response):
for campaign in response.campaigns {
switch campaign.lifecycle.status {
case .reserved:
print("予約", campaign.title ?? "")
case .ready:
print(campaign.lifecycle.rehearsal ? "リハーサル中" : "準備中", campaign.title ?? "")
case .onair:
print(campaign.lifecycle.closingAt == nil ? "配信中" : "終了処理中", campaign.title ?? "")
case .closed:
print("終了", campaign.title ?? "")
case let .unknown(raw):
print("不明な状態", raw)
}
}
if response.hasMore {
// page を 1 増やして次のページを取得します。
}
case let .failure(error):
print("getCampaigns failed:", error.codes, error.message ?? "")
}
}
// 結果が不要になった場合 (画面を離れるなど) はリクエストをキャンセルします。
// cancellable.cancel()サンプルコード (async/await)
// iOS 13+ — Task がキャンセルされると進行中のリクエストも一緒にキャンセルされます。
Task {
do {
let response = try await ShopLive.API.getCampaigns(ShopLiveCampaignListRequest(statuses: [.onair]))
let onair = response.campaigns.filter { $0.lifecycle.closingAt == nil }
if let campaign = onair.first {
ShopLive.play(data: ShopLivePlayerData(campaignKey: campaign.campaignKey))
}
} catch let error as ShopLiveCommonError {
print("getCampaigns failed:", error.codes)
} catch {
// Task のキャンセル (CancellationError) など
}
}