138 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Objective-C
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Objective-C
		
	
	
		
			Executable File
		
	
	
| //
 | ||
| //  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,
 | ||
|     /// 原生自渲染-横版大图16:9
 | ||
|     KLNUnifiedNativeAdTypeHorBigImage = 1001,
 | ||
|     /// 原生自渲染-横版视频16:9
 | ||
|     KLNUnifiedNativeAdTypeHorVideo = 1002,
 | ||
|     
 | ||
| };
 | ||
| 
 | ||
| typedef NS_ENUM(NSUInteger, KLNUnifiedNativeAdVideoAutoPlayPolicy) {
 | ||
|     KLNUnifiedNativeAdVideoAutoPlayPolicyAlways = 0, // 总是自动播放,无论网络条件
 | ||
|     KLNUnifiedNativeAdVideoAutoPlayPolicyWIFI = 1, // WIFI 下自动播放
 | ||
|     KLNUnifiedNativeAdVideoAutoPlayPolicyNever = 2, // 从不自动播放,无论网络条件
 | ||
| };
 | ||
| 
 | ||
| @class KLNUnifiedNativeAd;
 | ||
| @protocol KLNUnifiedNativeAdDelegate;
 | ||
| 
 | ||
| /// 加载自渲染广告回调。
 | ||
| /// 成功时,adList不为nil, error为nil。失败时,adList为nil,error不为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  传入显示广告的view,SDK需要对此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
 |