视频内容
视频内容
特别注意
由于快手pod库不支持内容包,视频内容模块需要单独手动导入 视频内容集成注意事项:
1,将KSAdSDK.framework和KSAdSDK.podspec,放在工程文件夹内(不是直接拉进项目里)
2,Podfile里指定本地快手KSAdSDK.podspec的相对路径,如demo中路径为:pod 'KSAdSDK', :path => './'
3:打包发布之前,去掉x86_64框架,具体的拆分合并命令参考以下
cd [KSAdSDK.framework所在的目录]
mkdir ./bak
cp -r KSAdSDK.framework ./bak
lipo KSAdSDK.framework/KSAdSDK -thin armv7 -output KSAdSDK_armv7
lipo KSAdSDK.framework/KSAdSDK -thin arm64 -output KSAdSDK_arm64
lipo -create KSAdSDK_armv7 KSAdSDK_arm64 -output KSAdSDK
mv KSAdSDK KSAdSDK.framework/
ZJContentPage调用
- 以图文内容为例
ContentVideoImageTextPageView
class ContentVideoImageTextPageView extends StatelessWidget {
final String? adId;
final double? width;
final double? height;
//***********************所有样式均支持以下回调***********************/
final AdCallback? onVideoDidStartPlay;
final AdCallback? onVideoDidPause;
final AdCallback? onVideoDidResume;
final AdCallback? onVideoDidEndPlay;
final AdCallback? onVideoDidFailedToPlay;
final AdCallback? onContentDidFullDisplay;
final AdCallback? onContentDidEndDisplay;
final AdCallback? onContentDidPause;
final AdCallback? onContentDidResume;
//***********************横版、图文版支持以下回调***********************/
final AdCallback? onHorizontalextFeedDetailDidEnter;
final AdCallback? onHorizontalextFeedDetailDidLeave;
final AdCallback? onHorizontalextFeedDetailDidAppear;
final AdCallback? onHorizontalextFeedDetailDidDisappear;
//***********************仅图文版支持以下回调***********************/
final AdCallback? onImageTextDetailDidEnter;
final AdCallback? onImageTextDetailDidLeave;
final AdCallback? onImageTextDetailDidAppear;
final AdCallback? onImageTextDetailDidDisappear;
final AdCallback? onImageTextDetailDidLoadFinish;
final AdCallback? onImageTextDetailDidScroll;
ContentVideoImageTextPageView(
{Key? key,
this.adId,
this.width,
this.height,
this.onVideoDidStartPlay,
this.onVideoDidPause,
this.onVideoDidResume,
this.onVideoDidEndPlay,
this.onVideoDidFailedToPlay,
this.onContentDidFullDisplay,
this.onContentDidEndDisplay,
this.onContentDidPause,
this.onContentDidResume,
this.onHorizontalextFeedDetailDidEnter,
this.onHorizontalextFeedDetailDidLeave,
this.onHorizontalextFeedDetailDidAppear,
this.onHorizontalextFeedDetailDidDisappear,
this.onImageTextDetailDidEnter,
this.onImageTextDetailDidLeave,
this.onImageTextDetailDidAppear,
this.onImageTextDetailDidDisappear,
this.onImageTextDetailDidLoadFinish,
this.onImageTextDetailDidScroll})
: super(key: key);
Widget build(BuildContext context) {
Widget contentVideoImageText;
if (defaultTargetPlatform == TargetPlatform.android) {
contentVideoImageText = AndroidView(
viewType: 'com.zjad.adsdk/contentVideoImageTextPage',
creationParams: {
"adId": adId,
"width": width,
"height": height,
},
creationParamsCodec: const StandardMessageCodec(),
onPlatformViewCreated: _onPlatformViewCreated,
);
} else if (defaultTargetPlatform == TargetPlatform.iOS) {
contentVideoImageText = UiKitView(
viewType: 'com.zjad.adsdk/contentVideoImageText',
creationParams: {
"adId": adId,
"width": width,
"height": height,
},
creationParamsCodec: const StandardMessageCodec(),
onPlatformViewCreated: _onPlatformViewCreated,
);
} else {
contentVideoImageText = Text("Not supported");
}
return Container(
width: width,
height: height,
child: contentVideoImageText,
);
}
void _onPlatformViewCreated(int id) {
EventChannel eventChannel =
EventChannel("com.zjsdk.adsdk/content_video_event_$id");
eventChannel.receiveBroadcastStream().listen((event) {
print('Flutter.Listen--------');
switch (event["event"]) {
case "videoDidStartPlay":
onVideoDidStartPlay?.call("videoDidStartPlay", "");
break;
case "videoDidPause":
onVideoDidPause?.call("videoDidPause", "");
break;
case "videoDidResume":
onVideoDidResume?.call("videoDidResume", "");
break;
case "videoDidEndPlay":
onVideoDidEndPlay?.call("videoDidEndPlay", "");
break;
case "videoDidFailedToPlay":
onVideoDidFailedToPlay?.call("videoDidFailedToPlay", event["error"]);
break;
case "contentDidFullDisplay":
onContentDidFullDisplay?.call("contentDidFullDisplay", "");
break;
case "contentDidEndDisplay":
onContentDidEndDisplay?.call("contentDidEndDisplay", "");
break;
case "contentDidPause":
onContentDidPause?.call("contentDidPause", "");
break;
case "contentDidResume":
onContentDidResume?.call("contentDidResume", "");
break;
case "onHorizontalextFeedDetailDidEnter":
onContentDidResume?.call("onHorizontalextFeedDetailDidEnter", "");
break;
case "onHorizontalextFeedDetailDidLeave":
onContentDidResume?.call("onHorizontalextFeedDetailDidLeave", "");
break;
case "onHorizontalextFeedDetailDidAppear":
onContentDidResume?.call("onHorizontalextFeedDetailDidAppear", "");
break;
case "onHorizontalextFeedDetailDidDisappear":
onContentDidResume?.call("onHorizontalextFeedDetailDidDisappear", "");
break;
case "onImageTextDetailDidEnter":
onContentDidResume?.call("onImageTextDetailDidEnter", "");
break;
case "onImageTextDetailDidLeave":
onContentDidResume?.call("onImageTextDetailDidLeave", "");
break;
case "onImageTextDetailDidAppear":
onContentDidResume?.call("onImageTextDetailDidAppear", "");
break;
case "onImageTextDetailDidDisappear":
onContentDidResume?.call("onImageTextDetailDidDisappear", "");
break;
case "onImageTextDetailDidLoadFinish":
onContentDidResume?.call("onImageTextDetailDidLoadFinish", "");
break;
case "onImageTextDetailDidScroll":
onContentDidResume?.call("onImageTextDetailDidScroll", "");
break;
}
});
}
}
ZJContentPage广告回调说明
//***********************视频播放状态回调***********************/
//视频开始播放
onVideoDidStartPlay
//视频暂停播放
onVideoDidPause
//视频恢复播放
onVideoDidResume
//视频停止播放
onVideoDidEndPlay
//视频播放失败
onVideoDidFailedToPlay
//***********************内容展示状态回调***********************/
//内容展示
onContentDidFullDisplay
//内容隐藏
onContentDidEndDisplay
//内容暂停显示,ViewController disappear或者Application resign active
onContentDidPause
//内容恢复显示,ViewController appear或者Application become active
onContentDidResume
//*****横版内容状态回调******
//进入横版视频详情页
onHorizontalextFeedDetailDidEnter
//离开横版视频详情页
onHorizontalextFeedDetailDidLeave
//视频详情页appear
onHorizontalextFeedDetailDidAppear
//详情页disappear
onHorizontalextFeedDetailDidDisappear
//***********************图文内容状态回调************************/
//进入图文详情页
onImageTextDetailDidEnter,
//离开图文详情页
onImageTextDetailDidLeave,
//图文详情页appear
onImageTextDetailDidAppear,
//图文详情页disappear
onImageTextDetailDidDisappear,
//图文详情加载结果
onImageTextDetailDidLoadFinish,
// 图文详情阅读进度
onImageTextDetailDidScroll