| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 | ////  AdManager.h//  AdAdmobSDK////  Created by 蒋龙 on 2019/7/16.//  Copyright © 2019 com.YouLoft.CQ. All rights reserved.//#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>#define JLWeakSelf __weak typeof(self) weakSelf = self;#define JLStrongSelf __strong typeof(self) strongSelf = weakSelf;typedef NS_ENUM(NSInteger, BannerPosition) {    BannerPosition_TopLeft = 0,    BannerPosition_TopCenter = 1,    BannerPosition_TopRight,    BannerPosition_Centered,    BannerPosition_BottomLeft,    BannerPosition_BottomCenter,    BannerPosition_BottomRight};NS_ASSUME_NONNULL_BEGIN@protocol AdManagerDelegate <NSObject>@optional/** banner加载成功 */-(void)bannerDidLoadAd;/** banner加载失败 @param errMsg 错误msg */-(void)bannerDidFailToLoadWithMsg:(NSString *)errMsg;/** banner接收到点击事件 */-(void)bannerDidReceiveTapEvent;/** interstitial加载成功 */-(void)interstitialDidLoadAd;/** interstitial加载失败, 仅在手动加载单条广告且加载失败时才会调用  @param errMsg 错误msg */-(void)interstitialDidFailToLoadWithMsg:(NSString *)errMsg;/** interstitial接收到点击事件 */-(void)interstitialDidReceiveTapEvent;/** interstitial已经显示 */-(void)interstitialDidAppear;/** interstitial已经关闭 */-(void)interstitialDidDisappear;/** rewardedVideo加载成功 */-(void)rewardedVideoDidLoadAd;/** rewardedVideo加载失败, 仅在手动加载单条广告且加载失败时才会调用  @param errMsg 错误msg */-(void)rewardedVideoDidFailToLoadWithMsg:(NSString *)errMsg;/** rewardedVideo接收到点击事件 */-(void)rewardedVideoDidReceiveTapEvent;/** rewardedVideo已经显示 */-(void)rewardedVideoDidAppear;/** rewardedVideo已经关闭 */-(void)rewardedVideoDidDisappear;/** rewardedVideo播放完成,应该给予奖励 */-(void)rewardedVideoAdShouldReward;/** rewardedVideo播放失败 */-(void)rewardedVideoAdDidFailToPlayWithMsg:(NSString *)errMsg;/** appOpenAd加载成功 */-(void)appOpenAdDidLoad;/** appOpenAd加载失败, 仅在手动加载单条广告且加载失败时才会调用  @param errMsg 错误msg */-(void)appOpenAdDidFailToLoadWithMsg:(NSString *)errMsg;/** appOpenAd接收到点击事件 */-(void)appOpenAdDidReceiveTapEvent;/** appOpenAd已经显示 */-(void)appOpenAdDidAppear;/** appOpenAd已经关闭 */-(void)appOpenAdDidDisappear;/** appOpenAd播放完成,应该给予奖励 */-(void)appOpenAdShouldReward;/** appOpenAd播放失败 */-(void)appOpenAdDidFailToPlayWithMsg:(NSString *)errMsg;/** rewardedInterstitial加载成功 */-(void)rewardedInterstitialDidLoadAd;/** rewardedInterstitial加载失败, 仅在手动加载单条广告且加载失败时才会调用  @param errMsg 错误msg */-(void)rewardedInterstitialDidFailToLoadWithMsg:(NSString *)errMsg;/** rewardedInterstitial接收到点击事件 */-(void)rewardedInterstitialDidReceiveTapEvent;/** rewardedInterstitial已经显示 */-(void)rewardedInterstitialDidAppear;/** rewardedInterstitial已经关闭 */-(void)rewardedInterstitialDidDisappear;/** rewardedInterstitial播放完成,应该给予奖励 */-(void)rewardedInterstitialAdShouldReward;/** rewardedInterstitial播放失败 */-(void)rewardedInterstitialAdDidFailToPlayWithMsg:(NSString *)errMsg;/// 所有视频的状态json字符串,调用hasRewardedVideo方法后实时回调/// @param jsonStr 视频是否加载成功的状态json字符串-(void)rewardedVideoStatesWithJsonStr:(NSString *)jsonStr;/// AppsFlyer归因统计回调/// @param jsonStr 数据的json字符串-(void)appsFlyerTrackerDataWithJsonStr:(NSString *)jsonStr;/// Mopub广告收入数据回调/// @param jsonStr 数据的json字符串-(void)mopubAdIncomeDataWithJsonStr:(NSString *)jsonStr;/// 提交反馈完成回调/// @param jsonStr 数据的json字符串-(void)feedBackSubmitComplectedWithJsonStr:(NSString *)jsonStr;@end@interface AdManager : UIViewController/// 请求超时时间  默认30s@property (nonatomic, assign) NSInteger timeOut;/// 重复请求时间间隔 默认120s@property (nonatomic, assign) NSInteger repeatTime;/// 是否自动加载广告@property (nonatomic, assign) BOOL offAutoRequest;/// banner广告IDs@property (nonatomic, strong) NSArray *bannerUnitIdsArr;/// interstitial广告IDs@property (nonatomic, strong) NSArray *interstitialUnitIdsArr;/// rewardedVideo广告IDs@property (nonatomic, strong) NSArray *rewardedVideoUnitIdsArr;/// rewardedInterstitial广告IDs@property (nonatomic, strong) NSArray *rewardedInterstitialUnitIdsArr;/// appopen广告IDs@property (nonatomic, strong) NSArray *appOpenUnitIdsArr;/// 回调协议@property (nonatomic, weak) id<AdManagerDelegate> delegate;/// isDebug@property (nonatomic, assign) BOOL isDebug;/// 是否允许追踪Idfa@property (nonatomic, assign) BOOL isCanGetIDFA;/** 单例 @return 返回当前单例对象 */+ (instancetype)sharedManager;/** 初始化Manager @param adUnitsJson json格式的所有ID @param appAppleId 苹果应用ID @param umengId 友盟统计应用ID @param pangleAppID 穿山甲应用ID */-(void)initAdWithAdUnitsJson:(NSString *)adUnitsJson appAppleId:(NSString *)appAppleId umengId:(NSString *)umengId appsFlyerKey:(NSString *)appsFlyerKey channel:(NSString *)channel pangleAppID:(NSString *)pangleAppID;/// 初始化网络请求所需参数/// @param gameId 游戏ID/// @param gameSecret 游戏密钥/// @param isDebug 是否是Debug-(void)initServicesGameID:(NSString *)gameId gameSecret:(NSString *)gameSecret isDebug:(BOOL)isDebug;/// 初始化SDK/// @param gameId 游戏ID/// @param gameSecret 对应的密钥/// @param baseUrl 环境地址,当为空时,会使用默认的正式环境-(void)initServicesGameID:(NSString *)gameId gameSecret:(NSString *)gameSecret baseUrl:(NSString *)baseUrl;///开启定时自动加载广告-(void)openAutoLoadAd;///重置同意情况-(void) consentInformationReset;-(void)fbAdvertiserTrackingEnabled;//TODO:Banner相关函数/** 加载一个Banner类型的广告 @param frame 广告位置、大小 @param bannerSuperView 需要加载到那个视图上 */-(void)loadAndShowBannerAdWithFrame:(CGRect)frame InView:(UIView *)bannerSuperView;/** 隐藏当前显示的Banner */-(void)hiddenBannerAd;//TODO:interstitial相关函数/** 加载插屏广告 */-(void)loadInterstitialAd;/** 显示插屏广告到传入的VC上 @param aVC 需要展示的VC */-(void)showInterstitialAdWithViewController:(UIViewController *)aVC;//TODO:rewardedVideo相关函数/** 加载奖励视频 */-(void)loadRewardedVideoAd;/** 判断是否有缓存就绪的广告  @return 是否有就绪广告 */-(BOOL)hasRewardedVideo;//判断传入的ID是否有缓存就绪的广告-(BOOL)hasRewardedVideoWithAdID:(NSString *)adID;//获取当前所有ID缓存状态-(NSString *)mopub_idsStatesArr;/** 显示奖励视频到传入的VC上 @param aVC 需要展示的VC */-(void)showRewardedVideoAdWithViewController:(UIViewController *)aVC;/// 显示指定奖励视频到传入的VC上/// @param aVC 显示的VC/// @param videoID 视频ID-(void)showRewardedVideoAdWithViewController:(UIViewController *)aVC videoID:(NSString *)videoID;//@TODO:开屏广告-(void)loadAppOpenAd;-(void)showAppOpenAdWithViewController:(UIViewController *)aVC;//@TODO:插屏激励视频-(void)loadRewardedInterstitialAd;-(void)showRewardedInterstitialAdWithViewController:(UIViewController *)aVC;/// 用户提交反馈/// @param msg 反馈详情/// @param contact 联系方式/// @param documentinfo 存档字符串-(void)feedbackSubmitWithMsg:(NSString *)msg contact:(NSString *)contact documentinfo:(NSString *)documentinfo;- (void) jlApplication:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler;// Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below- (void)jlApplication:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation;// Reports app open from deep link for iOS 10- (void)jlApplication:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *) options;#pragma mark - Unavailable Initializers/// 设置单例调用这些方法无效//- (instancetype)init NS_UNAVAILABLE;+ (instancetype)new NS_UNAVAILABLE;@endNS_ASSUME_NONNULL_END
 |