mergemilitary/Assets/Plugins/ToukaGames/ToponSDK/klevin/KlevinAdSDK.framework/Headers/KLNUnifiedNativeAd.h

138 lines
4.8 KiB
C
Raw Normal View History

//
// KLNUnifiedNativeAd.h
// KlevinAdSDK
//
// Copyright © 2021 Tencent. All rights reserved.
// Created by Klevin on 2021/7/2.
//
#import <UIKit/UIKit.h>
#import <KlevinAdSDK/KLNAdRequest.h>
#import <KlevinAdSDK/KLNAdVideoController.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, KLNUnifiedNativeAdType) {
/// 未知模版
KLNUnifiedNativeAdTypeUnknown = 1,
/// 原生自渲染-横版大图169
KLNUnifiedNativeAdTypeHorBigImage = 1001,
/// 原生自渲染-横版视频169
KLNUnifiedNativeAdTypeHorVideo = 1002,
};
typedef NS_ENUM(NSUInteger, KLNUnifiedNativeAdVideoAutoPlayPolicy) {
KLNUnifiedNativeAdVideoAutoPlayPolicyAlways = 0, // 总是自动播放,无论网络条件
KLNUnifiedNativeAdVideoAutoPlayPolicyWIFI = 1, // WIFI 下自动播放
KLNUnifiedNativeAdVideoAutoPlayPolicyNever = 2, // 从不自动播放,无论网络条件
};
@class KLNUnifiedNativeAd;
@protocol KLNUnifiedNativeAdDelegate;
/// 加载自渲染广告回调。
/// 成功时adList不为nil, error为nil。失败时adList为nilerror不为nil。
typedef void (^KLNUnifiedNativeAdLoadCompletionHandler)(NSArray<KLNUnifiedNativeAd *> *_Nullable adList,
NSError *_Nullable error);
///自渲染广告
@interface KLNUnifiedNativeAd : NSObject
/// 广告事件回调对象
@property (nonatomic, weak, nullable) id<KLNUnifiedNativeAdDelegate> delegate;
/// 开发者传入的用来present目标页的ViewController
@property (nonatomic, weak, readwrite) UIViewController *viewController;
/// 广告标题
@property (nonatomic, copy, readonly, nullable) NSString *title;
/// 广告描述
@property (nonatomic, copy, readonly, nullable) NSString *desc;
/// App 图标url
@property (nonatomic, readonly, nullable) NSString *appIconURL;
/// 按钮文案
@property (nonatomic, readonly, nullable) NSString *actionTitle;
/// 是否为视频广告
@property (nonatomic, readonly) KLNUnifiedNativeAdType adType;
/// 广告图标
@property (nonatomic, readonly) UIImage *adLogoImage;
/// 静音播放视频广告(后续可能收拢到 KLNAdVideoController
@property (nonatomic, assign, getter=isMuted) BOOL muted;
/// 视频播放器
@property (nonatomic, strong, readonly, nullable) KLNAdVideoController *videoController;
/// 广告view
@property (nonatomic, strong, readonly) UIView *adView;
/// 广告宽度
@property (nonatomic, assign, readonly) CGFloat width;
/// 广告高度
@property (nonatomic, assign, readonly) CGFloat height;
/// 广告图片URL
@property (nonatomic, readonly, nullable) NSString *imageUrl;
/// 视频广告自动播放策略,默认 KLNUnifiedNativeAdVideoAutoPlayPolicyAlways总是自动播放
@property (nonatomic, assign) KLNUnifiedNativeAdVideoAutoPlayPolicy videoAutoPlayPolicy;
/// 加载自渲染广告方法
/// @param request 自渲染广告请求对象
/// @param completionHandler 广告信息加载结果回调(成功/失败),请注意:回调非线程安全
+ (void)loadWithRequest:(nonnull KLNUnifiedNativeAdRequest *)request
completionHandler:(KLNUnifiedNativeAdLoadCompletionHandler)completionHandler;
/// 注册可点击View和显示广告的view。
/// @param clickableViews 可点击的视图数组,此数组内的广告元素会添加手势,可以响应广告对应的点击事件
/// @param adView 传入显示广告的viewSDK需要对此view做曝光检测
- (void)registerWithClickableViews:(NSArray<__kindof UIView *> *_Nullable)clickableViews adView:(UIView*)adView;
/// 解绑可点击view手势
- (void)unregisterClickableViews;
/// 渲染广告View
/// 注意只有接入方用KLNUnifiedNativeAd的属性adView进行广告渲染才调用此方法。否则不需要调用
- (void)render;
/// 根据传入的宽度和广告model计算高度。内部会根据广告素材的宽高比计算相应的高度。
/// @param width 传入的宽度
/// @param nativeAd 广告model
+ (CGFloat)calcHeiWithWidth:(CGFloat)width nativeAd:(KLNUnifiedNativeAd *)nativeAd;
/// 用户手动关闭广告时,请调用该方法
- (void)dislike;
@end
@protocol KLNUnifiedNativeAdDelegate <NSObject>
@optional
/// 广告素材加载成功回调
/// @param ad KLNUnifiedNativeAd实例
/// @param error 素材加载成功为nil失败非nil
- (void)kln_unifiedNativeAdDidLoad:(KLNUnifiedNativeAd *)ad didCompleteWithError:(NSError *_Nullable)error;
/// 广告曝光回调
/// 业务方可以通过实现该方法,统计|曝光|量(对账)
/// @param ad KLNUnifiedNativeAd 实例
- (void)kln_unifiedNativeAdWillExpose:(KLNUnifiedNativeAd *)ad;
/// 广告点击回调
/// 业务方可以通过实现该方法,统计|点击|量(对账)
/// @param ad KLNUnifiedNativeAd 实例
- (void)kln_unifiedNativeAdDidClick:(KLNUnifiedNativeAd *)ad;
@end
NS_ASSUME_NONNULL_END