BBASMMultiVideoPlugin.h 15.9 KB
//
//  SWANMultiVideoPlugin.h
//  BBAMNP
//
//  Created by baidu on 2019/3/1.
//  Copyright © 2019年 Baidu. All rights reserved.
//

#import <BBASchemeDispatcher/BBASchemeDispatcher.h>
#import "BBASMSlaveWebViewController.h"

NS_ASSUME_NONNULL_BEGIN

@interface BBASMMultiVideoPlugin : BBASDPluginBase

/// 组件module,用于错误日志
extern NSString *const BBASMVideoModule;

/**
 * 描  述: 调起小程序视频组件
 * 示  例: baiduboxapp://swanAPI/video/open?params={"videoId":"1","src":"https://xxx.com","position":{"left":"0","top":"0","width":"375","height":"20"},"initialTime":"xxx","duration":"xxx","controls":"xx","autoplay":"xx","loop":"xx","muted":"xx","objectFit":"xx","poster":"xx"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/425
 * 备  注:
 * ********** description ************
 * @name:      video.insert
 * @authority: swanAPI
 * @path:      /video/open
 * @args:      [{"name": "gesture", "value": "string="},{"name": "componentId","value": "string="},{"name": "videoId", "value": "string="}, {"name": "viewId", "value": "string="}, {"name": "sanId", "value": "string="}, {"name": "parentId", "value": "string="}, {"name": "src", "value": "string"}, {"name": "initialTime", "value": "string="}, {"name": "duration", "value": "string="}, {"name": "objectFit", "value": "string="}, {"name": "poster", "value": "string="}, {"name": "slaveId", "value": "string="}, {"name": "position", "value": "Object="}, {"name": "controls", "value": "boolean="}, {"name": "autoplay", "value": "boolean="}, {"name": "loop", "value": "boolean="}, {"name": "muted", "value": "boolean="}, {"name": "showPlayBtn", "value": "boolean="}, {"name": "showNoWifiTip", "value": "boolean="}, {"name": "showCenterPlayBtn", "value": "boolean="}, {"name": "showMuteBtn", "value": "boolean="}, {"name": "danmuList", "value": "Array="}, {"name": "enableDanmu", "value": "boolean="}, {"name": "danmuBtn", "value": "boolean="}, {"name": "hide", "value": "boolean="}, {"name": "pageGesture", "value": "boolean="}, {"name": "showProgress", "value": "boolean="},{"name": "enablePlayGesture", "value": "boolean="},{"name": "vslideGestureInFullscreen", "value": "boolean="},{"name": "title", "value": "string="},{"name": "direction", "value": "string="}, {"name": "showFullscreenBtn", "value": "boolean="}, {"name": "enableProgressGesture", "value": "boolean="}, {"name": "direction", "value": "string="},{"name": "customEnterExitFullScreen", "value": "boolean="},{"name": "showRateBtn", "value": "boolean="},{"name": "isFullscreen", "value": "boolean="},{"name": "isAlwaysOnlyShowTopView", "value": "boolean="},{"name": "showVslideBtnInFullscreen", "value": "boolean="},{"name": "silentPlay", "value": "boolean="},{"name": "preload", "value": "string="},{"name": "showSilentPlayMutedIcon", "value": "boolean="},{"name": "silentPlayTips", "value": "string="}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)open:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序视频组件开始播放
 * 示  例: baiduboxapp://swanAPI/video/play?params={"slaveId":"1","videoId":"1"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/433
 * 备  注:
 * ********** description ************
 * @name:      video.play
 * @authority: swanAPI
 * @path:      /video/play
 * @args:      [{"name": "videoId",  "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId",  "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)play:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序框架-视频组件暂停
 * 示  例: baiduboxapp://swanAPI/video/pause?params={"slaveId":"1","videoId":"1"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/428
 * 备  注:
 * ********** description ************
 * @name:      video.pause
 * @authority: swanAPI
 * @path:      /video/pause
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)pause:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序视频组件定位播放位置
 * 示  例: baiduboxapp://swanAPI/video/seek?params={"slaveId":"1","videoId":"1","position":"8"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/427
 * 备  注:
 * ********** description ************
 * @name:      video.seek
 * @authority: swanAPI
 * @path:      /video/seek
 * @args:      [{"name": "videoId",  "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId",  "value": "string"},  {"name": "position",  "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)seek:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序框架视频组件进入/退出全屏
 * 示  例: baiduboxapp://swanAPI/video/fullScreen?params={"slaveId":"1","videoId":"1","fullScreen":"0"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/426
 * 备  注:
 * ********** description ************
 * @name:      video.fullScreen
 * @authority: swanAPI
 * @path:      /video/fullScreen
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId", "value": "string"}, {"name": "fullScreen", "value": "boolean"},  {"name": "direction", "value":  {"oneof": [0,90,-90]}}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)fullScreen:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序框架视频组件发送弹幕
 * 示  例: baiduboxapp://swanAPI/video/sendDanmu?params={"text":"xxx","color":"#d22e71","videoId":"myVideo"}&callback=_bdbox_js_498&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/430
 * 备  注:
 * ********** description ************
 * @name:      video.sendDanmu
 * @authority: swanAPI
 * @path:      /video/sendDanmu
 * @args:      [{"name": "videoId",  "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId",  "value": "string"},  {"name": "text",  "value": "string="},  {"name": "color",  "value": "string="}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)sendDanmu:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 在video组件全屏时展示statusBar
 * 示  例: baiduboxapp://swanAPI/video/showStatusBar?params={"slaveId":"1","videoId":"1"}&callback=_bdbox_js_229&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/404
 * 备  注:
 * ********** description ************
 * @name:      video.showStatusBar
 * @authority: swanAPI
 * @path:      /video/showStatusBar
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)showStatusBar:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 在video组件全屏时隐藏statusBar
 * 示  例: baiduboxapp://swanAPI/video/hideStatusBar?params={"slaveId":"1","videoId":"1"}&callback=_bdbox_js_229&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/304
 * 备  注:
 * ********** description ************
 * @name:      video.hideStatusBar
 * @authority: swanAPI
 * @path:      /video/hideStatusBar
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)hideStatusBar:(BBASchemeDispatcher *)dispatcher;

// 春节运营活动特别支持API,only 全民小程序
- (void)currentPlayingURLSpringFestival:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 移除video组件
 * 示  例: baiduboxapp://swanAPI/video/remove?params=$params
 * 文  档: http://es.baidu-int.com/index#/apidetail/429
 * 备  注:
 * ********** description ************
 * @name:      video.remove
 * @authority: swanAPI
 * @path:      /video/remove
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "viewId", "value": "string="}, {"name": "sanId", "value": "string="}, {"name": "slaveId", "value": "string="}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)remove:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序视频组件swanvideo-update
 * 示  例: baiduboxapp://swanAPI/video/update?params={"slaveId":"1","videoId":"1","src":"https://m.baidu.com","position":{"left":"0","top":"0","width":"375","height":"20"},"initialTime":"xxx","duration":"xxx","controls":"xx","autoplay":"xx","loop":"xx","muted":"xx","objectFit":"xx","poster":"xx"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/431
 * 备  注:
 * ********** description ************
 * @name:      video.update
 * @authority: swanAPI
 * @path:      /video/update
 * @args:      [{"name": "gesture", "value": "string="}, {"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "viewId", "value": "string="}, {"name": "sanId", "value": "string="}, {"name": "parentId", "value": "string="}, {"name": "src", "value": "string="}, {"name": "initialTime", "value": "string="}, {"name": "duration", "value": "string="}, {"name": "objectFit", "value": "string="}, {"name": "poster", "value": "string="}, {"name": "slaveId", "value": "string="}, {"name": "position", "value": "Object="}, {"name": "controls", "value": "boolean="}, {"name": "autoplay", "value": "boolean="}, {"name": "loop", "value": "boolean="}, {"name": "muted", "value": "boolean="}, {"name": "showPlayBtn", "value": "boolean="}, {"name": "showCenterPlayBtn", "value": "boolean="}, {"name": "showMuteBtn", "value": "boolean="}, {"name": "danmuList", "value": "Array="}, {"name": "enableDanmu", "value": "boolean="}, {"name": "danmuBtn", "value": "boolean="}, {"name": "hide", "value": "boolean="}, {"name": "pageGesture", "value": "boolean="}, {"name": "showProgress", "value": "boolean="}, {"name": "direction", "value": "string="}, {"name": "enablePlayGesture", "value": "boolean="},{"name": "vslideGestureInFullscreen", "value": "boolean="},{"name": "title", "value": "string="},{"name": "showFullscreenBtn", "value": "boolean="}, {"name": "enableProgressGesture", "value": "boolean="}, {"name": "direction", "value": "string="},{"name": "customEnterExitFullScreen", "value": "boolean="},{"name": "showRateBtn", "value": "boolean="},{"name": "isFullscreen", "value": "boolean="},{"name": "isAlwaysOnlyShowTopView", "value": "boolean="},{"name": "showVslideBtnInFullscreen", "value": "boolean="},{"name": "silentPlay", "value": "boolean="},{"name": "showSilentPlayMutedIcon", "value": "boolean="},{"name": "silentPlayTips", "value": "string="}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.url", "method": "_naSwan.bridge.postMessage"}}}
 */
- (void)update:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 小程序框架视频组件支持倍速播放
 * 示  例: baiduboxapp://swanAPI/video/playbackRate?params={"rate":"0.5","videoId":"myVideo"}&callback=_bdbox_js_498&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/430
 *  备  注:
 * ********** description ************
 * @name:      video.playbackRate
 * @authority: swanAPI
 * @path:      /video/playbackRate
 * @args:      [{"name": "videoId",  "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId",  "value": "string"},  {"name": "rate",  "value": "string="}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.videoBridge.playbackRate"}}}
*/
- (void)playbackRate:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述:小程序框架-视频组件停止播放
 * 示  例: baiduboxapp://swanAPI/video/stop?params={"slaveId":"1","videoId":"1"}&callback=_bdbox_js_186&upgrade=0
 * 文  档: http://es.baidu-int.com/index#/apidetail/428
 * 备  注:
 * ********** description ************
 * @name:      video.stop
 * @authority: swanAPI
 * @path:      /video/stop
 * @args:      [{"name": "videoId", "value": "string="},{"name": "componentId","value": "string="},{"name": "slaveId", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.videoBridge.stop"}}}
*/
- (void)stop:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 获取当前设备媒体音量端能力
 * 示  例: baiduboxapp://swanAPI/video/getMediaVolume?params={"cb":"cb"}&callback=_bdbox_js_186&upgrade=0
 * 文  档:
 * 备  注:
 * ********** description ************
 * @name:      video.getMediaVolume
 * @authority: swanAPI
 * @path:      video/getMediaVolume
 * @args:      []
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.videoBridge.getMediaVolume"}}}
 */
- (void)getMediaVolume:(BBASchemeDispatcher*)dispatcher;

/**
 * 描  述: 设置设备媒体音量端能力
 * 示  例: baiduboxapp://swanAPI/video/setMediaVolume?params={"cb":"cb"}&callback=_bdbox_js_186&upgrade=0
 * 文  档:
 * 备  注:
 * ********** description ************
 * @name:      video.setMediaVolume
 * @authority: swanAPI
 * @path:      video/setMediaVolume
 * @args:      [{"name": "value", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.videoBridge.setMediaVolume"}}}
 */
- (void)setMediaVolume:(BBASchemeDispatcher*)dispatcher;
#pragma mark - not API
/**
 * 获取当前操作的webviewController
 * @param appId 小程序Id
 * @param slaveId slave页面Id
 * @return 当前操作的webviewController
 */
+ (BBASMSlaveWebViewController *)getCurWebViewController:(NSString *)appId
                                                slaveId:(NSString *)slaveId;

/**
 * @brief 设置播放速率
 * @param appId 小程序appId
 * @param params 端能力参数
 * @param actionName 端能力名称
 * @return NSDictionary 端能力调用结果
 */
+ (NSDictionary *)playbackRate:(NSString *)appId
                        params:(NSDictionary *)params
                    actionName:(NSString *)actionName;

/**
 * @brief 停止播放
 * @param appId 小程序appId
 * @param params 端能力参数
 * @param actionName 端能力名称
 * @return NSDictionary 端能力调用结果
 */
+ (NSDictionary *)stop:(NSString *)appId
                params:(NSDictionary *)params
            actionName:(NSString *)actionName;

/// 获取设备媒体音量
/// @param actionName 事件名称
/// @param appID 小程序ID
+ (NSDictionary *)getMediaVolumeWithActionName:(NSString *)actionName appID:(NSString *)appID;


/// 设置设备媒体音量
/// @param actionName 事件名称
/// @param paramsDict 参数
/// @param appID 小程序ID
+ (NSDictionary *)setMediaVolumeWithActionName:(NSString *)actionName
                                    paramsDict:(NSDictionary *)paramsDict
                                         appID:(NSString *)appID;
@end

NS_ASSUME_NONNULL_END