AdManager.h 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. //
  2. // AdManager.h
  3. // AdAdmobSDK
  4. //
  5. // Created by 蒋龙 on 2019/7/16.
  6. // Copyright © 2019 com.YouLoft.CQ. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #define JLWeakSelf __weak typeof(self) weakSelf = self;
  11. #define JLStrongSelf __strong typeof(self) strongSelf = weakSelf;
  12. typedef NS_ENUM(NSInteger, BannerPosition) {
  13. BannerPosition_TopLeft = 0,
  14. BannerPosition_TopCenter = 1,
  15. BannerPosition_TopRight,
  16. BannerPosition_Centered,
  17. BannerPosition_BottomLeft,
  18. BannerPosition_BottomCenter,
  19. BannerPosition_BottomRight
  20. };
  21. NS_ASSUME_NONNULL_BEGIN
  22. @protocol AdManagerDelegate <NSObject>
  23. @optional
  24. /**
  25. banner加载成功
  26. */
  27. -(void)bannerDidLoadAd;
  28. /**
  29. banner加载失败
  30. @param errMsg 错误msg
  31. */
  32. -(void)bannerDidFailToLoadWithMsg:(NSString *)errMsg;
  33. /**
  34. banner接收到点击事件
  35. */
  36. -(void)bannerDidReceiveTapEvent;
  37. /**
  38. interstitial加载成功
  39. */
  40. -(void)interstitialDidLoadAd;
  41. /**
  42. interstitial加载失败, 仅在手动加载单条广告且加载失败时才会调用
  43. @param errMsg 错误msg
  44. */
  45. -(void)interstitialDidFailToLoadWithMsg:(NSString *)errMsg;
  46. /**
  47. interstitial接收到点击事件
  48. */
  49. -(void)interstitialDidReceiveTapEvent;
  50. /**
  51. interstitial已经显示
  52. */
  53. -(void)interstitialDidAppear;
  54. /**
  55. interstitial已经关闭
  56. */
  57. -(void)interstitialDidDisappear;
  58. /**
  59. rewardedVideo加载成功
  60. */
  61. -(void)rewardedVideoDidLoadAd;
  62. /**
  63. rewardedVideo加载失败, 仅在手动加载单条广告且加载失败时才会调用
  64. @param errMsg 错误msg
  65. */
  66. -(void)rewardedVideoDidFailToLoadWithMsg:(NSString *)errMsg;
  67. /**
  68. rewardedVideo接收到点击事件
  69. */
  70. -(void)rewardedVideoDidReceiveTapEvent;
  71. /**
  72. rewardedVideo已经显示
  73. */
  74. -(void)rewardedVideoDidAppear;
  75. /**
  76. rewardedVideo已经关闭
  77. */
  78. -(void)rewardedVideoDidDisappear;
  79. /**
  80. rewardedVideo播放完成,应该给予奖励
  81. */
  82. -(void)rewardedVideoAdShouldReward;
  83. /**
  84. rewardedVideo播放失败
  85. */
  86. -(void)rewardedVideoAdDidFailToPlayWithMsg:(NSString *)errMsg;
  87. /**
  88. appOpenAd加载成功
  89. */
  90. -(void)appOpenAdDidLoad;
  91. /**
  92. appOpenAd加载失败, 仅在手动加载单条广告且加载失败时才会调用
  93. @param errMsg 错误msg
  94. */
  95. -(void)appOpenAdDidFailToLoadWithMsg:(NSString *)errMsg;
  96. /**
  97. appOpenAd接收到点击事件
  98. */
  99. -(void)appOpenAdDidReceiveTapEvent;
  100. /**
  101. appOpenAd已经显示
  102. */
  103. -(void)appOpenAdDidAppear;
  104. /**
  105. appOpenAd已经关闭
  106. */
  107. -(void)appOpenAdDidDisappear;
  108. /**
  109. appOpenAd播放完成,应该给予奖励
  110. */
  111. -(void)appOpenAdShouldReward;
  112. /**
  113. appOpenAd播放失败
  114. */
  115. -(void)appOpenAdDidFailToPlayWithMsg:(NSString *)errMsg;
  116. /**
  117. rewardedInterstitial加载成功
  118. */
  119. -(void)rewardedInterstitialDidLoadAd;
  120. /**
  121. rewardedInterstitial加载失败, 仅在手动加载单条广告且加载失败时才会调用
  122. @param errMsg 错误msg
  123. */
  124. -(void)rewardedInterstitialDidFailToLoadWithMsg:(NSString *)errMsg;
  125. /**
  126. rewardedInterstitial接收到点击事件
  127. */
  128. -(void)rewardedInterstitialDidReceiveTapEvent;
  129. /**
  130. rewardedInterstitial已经显示
  131. */
  132. -(void)rewardedInterstitialDidAppear;
  133. /**
  134. rewardedInterstitial已经关闭
  135. */
  136. -(void)rewardedInterstitialDidDisappear;
  137. /**
  138. rewardedInterstitial播放完成,应该给予奖励
  139. */
  140. -(void)rewardedInterstitialAdShouldReward;
  141. /**
  142. rewardedInterstitial播放失败
  143. */
  144. -(void)rewardedInterstitialAdDidFailToPlayWithMsg:(NSString *)errMsg;
  145. /// 所有视频的状态json字符串,调用hasRewardedVideo方法后实时回调
  146. /// @param jsonStr 视频是否加载成功的状态json字符串
  147. -(void)rewardedVideoStatesWithJsonStr:(NSString *)jsonStr;
  148. /// AppsFlyer归因统计回调
  149. /// @param jsonStr 数据的json字符串
  150. -(void)appsFlyerTrackerDataWithJsonStr:(NSString *)jsonStr;
  151. /// Mopub广告收入数据回调
  152. /// @param jsonStr 数据的json字符串
  153. -(void)mopubAdIncomeDataWithJsonStr:(NSString *)jsonStr;
  154. /// 提交反馈完成回调
  155. /// @param jsonStr 数据的json字符串
  156. -(void)feedBackSubmitComplectedWithJsonStr:(NSString *)jsonStr;
  157. @end
  158. @interface AdManager : UIViewController
  159. /// 请求超时时间 默认30s
  160. @property (nonatomic, assign) NSInteger timeOut;
  161. /// 重复请求时间间隔 默认120s
  162. @property (nonatomic, assign) NSInteger repeatTime;
  163. /// 是否自动加载广告
  164. @property (nonatomic, assign) BOOL offAutoRequest;
  165. /// banner广告IDs
  166. @property (nonatomic, strong) NSArray *bannerUnitIdsArr;
  167. /// interstitial广告IDs
  168. @property (nonatomic, strong) NSArray *interstitialUnitIdsArr;
  169. /// rewardedVideo广告IDs
  170. @property (nonatomic, strong) NSArray *rewardedVideoUnitIdsArr;
  171. /// rewardedInterstitial广告IDs
  172. @property (nonatomic, strong) NSArray *rewardedInterstitialUnitIdsArr;
  173. /// appopen广告IDs
  174. @property (nonatomic, strong) NSArray *appOpenUnitIdsArr;
  175. /// 回调协议
  176. @property (nonatomic, weak) id<AdManagerDelegate> delegate;
  177. /// isDebug
  178. @property (nonatomic, assign) BOOL isDebug;
  179. /// 是否允许追踪Idfa
  180. @property (nonatomic, assign) BOOL isCanGetIDFA;
  181. /**
  182. 单例
  183. @return 返回当前单例对象
  184. */
  185. + (instancetype)sharedManager;
  186. /**
  187. 初始化Manager
  188. @param adUnitsJson json格式的所有ID
  189. @param appAppleId 苹果应用ID
  190. @param umengId 友盟统计应用ID
  191. @param pangleAppID 穿山甲应用ID
  192. */
  193. -(void)initAdWithAdUnitsJson:(NSString *)adUnitsJson appAppleId:(NSString *)appAppleId umengId:(NSString *)umengId appsFlyerKey:(NSString *)appsFlyerKey channel:(NSString *)channel pangleAppID:(NSString *)pangleAppID;
  194. /// 初始化网络请求所需参数
  195. /// @param gameId 游戏ID
  196. /// @param gameSecret 游戏密钥
  197. /// @param isDebug 是否是Debug
  198. -(void)initServicesGameID:(NSString *)gameId gameSecret:(NSString *)gameSecret isDebug:(BOOL)isDebug;
  199. /// 初始化SDK
  200. /// @param gameId 游戏ID
  201. /// @param gameSecret 对应的密钥
  202. /// @param baseUrl 环境地址,当为空时,会使用默认的正式环境
  203. -(void)initServicesGameID:(NSString *)gameId gameSecret:(NSString *)gameSecret baseUrl:(NSString *)baseUrl;
  204. ///开启定时自动加载广告
  205. -(void)openAutoLoadAd;
  206. ///重置同意情况
  207. -(void) consentInformationReset;
  208. -(void)fbAdvertiserTrackingEnabled;
  209. //TODO:Banner相关函数
  210. /**
  211. 加载一个Banner类型的广告
  212. @param frame 广告位置、大小
  213. @param bannerSuperView 需要加载到那个视图上
  214. */
  215. -(void)loadAndShowBannerAdWithFrame:(CGRect)frame InView:(UIView *)bannerSuperView;
  216. /**
  217. 隐藏当前显示的Banner
  218. */
  219. -(void)hiddenBannerAd;
  220. //TODO:interstitial相关函数
  221. /**
  222. 加载插屏广告
  223. */
  224. -(void)loadInterstitialAd;
  225. /**
  226. 显示插屏广告到传入的VC上
  227. @param aVC 需要展示的VC
  228. */
  229. -(void)showInterstitialAdWithViewController:(UIViewController *)aVC;
  230. //TODO:rewardedVideo相关函数
  231. /**
  232. 加载奖励视频
  233. */
  234. -(void)loadRewardedVideoAd;
  235. /**
  236. 判断是否有缓存就绪的广告
  237. @return 是否有就绪广告
  238. */
  239. -(BOOL)hasRewardedVideo;
  240. //判断传入的ID是否有缓存就绪的广告
  241. -(BOOL)hasRewardedVideoWithAdID:(NSString *)adID;
  242. //获取当前所有ID缓存状态
  243. -(NSString *)mopub_idsStatesArr;
  244. /**
  245. 显示奖励视频到传入的VC上
  246. @param aVC 需要展示的VC
  247. */
  248. -(void)showRewardedVideoAdWithViewController:(UIViewController *)aVC;
  249. /// 显示指定奖励视频到传入的VC上
  250. /// @param aVC 显示的VC
  251. /// @param videoID 视频ID
  252. -(void)showRewardedVideoAdWithViewController:(UIViewController *)aVC videoID:(NSString *)videoID;
  253. //@TODO:开屏广告
  254. -(void)loadAppOpenAd;
  255. -(void)showAppOpenAdWithViewController:(UIViewController *)aVC;
  256. //@TODO:插屏激励视频
  257. -(void)loadRewardedInterstitialAd;
  258. -(void)showRewardedInterstitialAdWithViewController:(UIViewController *)aVC;
  259. /// 用户提交反馈
  260. /// @param msg 反馈详情
  261. /// @param contact 联系方式
  262. /// @param documentinfo 存档字符串
  263. -(void)feedbackSubmitWithMsg:(NSString *)msg contact:(NSString *)contact documentinfo:(NSString *)documentinfo;
  264. - (void) jlApplication:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> *restorableObjects))restorationHandler;
  265. // Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below
  266. - (void)jlApplication:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation;
  267. // Reports app open from deep link for iOS 10
  268. - (void)jlApplication:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *) options;
  269. #pragma mark - Unavailable Initializers
  270. /// 设置单例调用这些方法无效
  271. //- (instancetype)init NS_UNAVAILABLE;
  272. + (instancetype)new NS_UNAVAILABLE;
  273. @end
  274. NS_ASSUME_NONNULL_END