aeline
2020-06-08 6612e98e3510d2d1c4391a94acc80e15e8d02cf2
no message
22个文件已添加
2268 ■■■■■ 已修改文件
MIduo/数据/lib/GDT/lib/GDTBaseAdNetworkAdapterProtocol.h 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTHybridAd.h 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTLogoView.h 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTMediaView.h 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTMobBannerView.h 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTMobInterstitial.h 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTNativeAd.h 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTNativeExpressAd.h 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTNativeExpressAdView.h 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTRewardVideoAd.h 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTRewardVideoAdNetworkAdapterProtocol.h 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTRewardVideoAdNetworkConnectorProtocol.h 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTSDKConfig.h 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTSDKDefines.h 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTSplashAd.h 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTUnifiedBannerView.h 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTUnifiedInterstitialAd.h 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTUnifiedNativeAd.h 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTUnifiedNativeAdDataObject.h 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTUnifiedNativeAdView.h 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/GDTVideoConfig.h 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/数据/lib/GDT/lib/libGDTMobSDK.a 补丁 | 查看 | 原始文档 | blame | 历史
MIduo/Êý¾Ý/lib/GDT/lib/GDTBaseAdNetworkAdapterProtocol.h
New file
@@ -0,0 +1,28 @@
//
//  GDTBaseAdNetworkAdapterProtocol.h
//  GDTMobApp
//
//  Created by royqpwang on 2019/7/25.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol GDTBaseAdNetworkAdapterProtocol <NSObject>
+ (NSString *)adapterVersion;
- (instancetype)initWithAdNetworkConnector:(id)connector
                                     posId:(NSString *)posId
                                    extStr:(NSString *)extStr;
@optional
- (NSInteger)eCPM;
- (NSInteger)priority;
- (NSString *)eCPMLevel;
- (void)cancelLoad;
- (NSInteger)mediationPrice;
- (BOOL)isContractAd;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTHybridAd.h
New file
@@ -0,0 +1,77 @@
//
//  GDTHybridAd.h
//  GDTMobApp
//
//  Created by royqpwang on 2019/3/8.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_OPTIONS(NSInteger, GDTHybridAdOptions) {
    GDTHybridAdOptionRewardVideo = 1 << 0
};
@class GDTHybridAd;
@protocol GDTHybridAdDelegate <NSObject>
@optional
- (void)gdt_hybridAdDidPresented:(GDTHybridAd *)hybridAd;
- (void)gdt_hybridAdDidClose:(GDTHybridAd *)hybridAd;
- (void)gdt_hybridAdLoadURLSuccess:(GDTHybridAd *)hybridAd;
- (void)gdt_hybridAd:(GDTHybridAd *)hybridAd didFailWithError:(NSError *)error;
@end
@interface GDTHybridAd : NSObject
/**
 è‡ªå®šä¹‰æµè§ˆå™¨ UI å±žæ€§ï¼Œè¯·åœ¨ showWithRootViewController: æ–¹æ³•前设置。
 */
@property (nonatomic, copy) NSString *titleContent;
@property (nonatomic, strong) UIColor *titleColor;
@property (nonatomic, strong) UIFont *titleFont;
@property (nonatomic, strong) UIColor *navigationBarColor;
@property (nonatomic, strong) UIColor *navigationBarBottomColor;
@property (nonatomic, strong) UIColor *separatorLineColor;
@property (nonatomic, strong) UIImage *closeImage; // å¦‚需自定义关闭图片,请按 44*44 å¤§å°è®¾ç½®
@property (nonatomic, strong) UIImage *backImage; // å¦‚需自定义后退图片,请按 44*44 å¤§å°è®¾ç½®
/**
 å§”托对象
 */
@property (nonatomic, weak) id <GDTHybridAdDelegate> delegate;
/**
 æž„造方法
 @param adOptions - æ”¯æŒçš„广告类型 Options,激励视频请传 GDTHybridAdOptionRewardVideo
 @return GDTHybrid å®žä¾‹
 */
- (instancetype)initWithType:(GDTHybridAdOptions)adOptions;
/**
 åŠ è½½å¹¿å‘Šæ–¹æ³• æ”¯æŒ iOS8.1 åŠä»¥ä¸Šç³»ç»Ÿ
 @param url åŠ è½½çš„ X ä¸­å¿ƒ URL
 */
- (void)loadWithUrl:(NSString *)url;
/**
 å±•示浏览器方法
 @param rootViewController ç”¨äºŽ present æµè§ˆå™¨ VC
 */
- (void)showWithRootViewController:(UIViewController *)rootViewController;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTLogoView.h
New file
@@ -0,0 +1,16 @@
//
//  GDTLogoView.h
//  GDTMobSDK
//
//  Created by nimomeng on 2018/10/10.
//  Copyright Â© 2018 Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
//logo默认宽度
extern CGFloat const kGDTLogoImageViewDefaultWidth;
//logo默认高度
extern CGFloat const kGDTLogoImageViewDefaultHeight;
@interface GDTLogoView : UIImageView
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTMediaView.h
New file
@@ -0,0 +1,90 @@
//
//  GDTMediaView.h
//  GDTMobSDK
//
//  Created by nimomeng on 2018/10/10.
//  Copyright Â© 2018 Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
@class GDTMediaView;
@protocol GDTMediaViewDelegate <NSObject>
@optional
/**
 ç”¨æˆ·ç‚¹å‡» MediaView å›žè°ƒï¼Œå½“ GDTVideoConfig userControlEnable è®¾ä¸º YES,用户点击 mediaView ä¼šå›žè°ƒã€‚
 @param mediaView æ’­æ”¾å™¨å®žä¾‹
 */
- (void)gdt_mediaViewDidTapped:(GDTMediaView *)mediaView;
/**
 æ’­æ”¾å®Œæˆå›žè°ƒ
 @param mediaView æ’­æ”¾å™¨å®žä¾‹
 */
- (void)gdt_mediaViewDidPlayFinished:(GDTMediaView *)mediaView;
@end
@interface GDTMediaView : UIView
/**
 GDTMediaView å›žè°ƒå¯¹è±¡
 */
@property (nonatomic, weak) id <GDTMediaViewDelegate> delegate;
/**
 * è§†é¢‘广告时长,单位 ms
 */
- (CGFloat)videoDuration;
/**
 * è§†é¢‘广告已播放时长,单位 ms
 */
- (CGFloat)videoPlayTime;
/**
 æ’­æ”¾è§†é¢‘
 */
- (void)play;
/**
 æš‚停视频,调用 pause åŽï¼Œéœ€è¦è¢«æš‚停的视频广告对象,不会再自动播放,需要调用 play æ‰èƒ½æ¢å¤æ’­æ”¾ã€‚
 */
- (void)pause;
/**
 åœæ­¢æ’­æ”¾ï¼Œå¹¶å±•示第一帧
 */
- (void)stop;
/**
 æ’­æ”¾é™éŸ³å¼€å…³
 @param flag æ˜¯å¦é™éŸ³
 */
- (void)muteEnable:(BOOL)flag;
/**
 è‡ªå®šä¹‰æ’­æ”¾æŒ‰é’®
 @param image è‡ªå®šä¹‰æ’­æ”¾æŒ‰é’®å›¾ç‰‡ï¼Œä¸è®¾ç½®ä¸ºé»˜è®¤å›¾
 @param size è‡ªå®šä¹‰æ’­æ”¾æŒ‰é’®å¤§å°ï¼Œä¸è®¾ç½®ä¸ºé»˜è®¤å¤§å° 44 * 44
 */
- (void)setPlayButtonImage:(UIImage *)image size:(CGSize)size;
#pragma mark - DEPRECATED
/**
 æ˜¯å¦æ”¯æŒåœ¨WWAN下自动播放视频, é»˜è®¤ NO,已废弃,请使用 GDTVideoConfig ç±»é…ç½®
 */
@property (nonatomic, assign) BOOL videoAutoPlayOnWWAN GDT_DEPRECATED_ATTRIBUTE;
/**
 æ˜¯å¦é™éŸ³æ’­æ”¾è§†é¢‘广告, é»˜è®¤ YES,已废弃,请使用 GDTVideoConfig ç±»é…ç½®
 */
@property (nonatomic, assign) BOOL videoMuted GDT_DEPRECATED_ATTRIBUTE;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTMobBannerView.h
New file
@@ -0,0 +1,138 @@
//
//  GDTMobBannerView.h
//  GDTMobSDK
//
//  Created by chaogao on 13-11-5.
//  Copyright (c) 2013å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
/**
 *  å¹¿ç‚¹é€šæŽ¨èå°ºå¯¸,开发者在嵌入Banner条时,可以手动设置Banner条的宽度用来满足场景需求,
 *  è€Œé«˜åº¦çš„话广点通侧不建议更改,否则显示效果会有影响
 */
#define GDTMOB_AD_SUGGEST_SIZE_320x50    CGSizeMake(320, 50) //For iPhone
#define GDTMOB_AD_SUGGEST_SIZE_468x60    CGSizeMake(468, 60) //For iPad
#define GDTMOB_AD_SUGGEST_SIZE_728x90    CGSizeMake(728, 90) //For iPad
@protocol GDTMobBannerViewDelegate <NSObject>
@optional
- (void)bannerViewMemoryWarning;
/**
 *  è¯·æ±‚广告条数据成功后调用
 *  è¯¦è§£:当接收服务器返回的广告数据成功后调用该函数
 */
- (void)bannerViewDidReceived;
/**
 *  è¯·æ±‚广告条数据失败后调用
 *  è¯¦è§£:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)bannerViewFailToReceived:(NSError *)error;
/**
 *  è¯¦è§£:当点击应用下载或者广告调用系统程序打开时调用
 */
- (void)bannerViewWillLeaveApplication;
/**
 *  banner条被用户关闭时调用
 *  è¯¦è§£:当打开showCloseBtn开关时,用户有可能点击关闭按钮从而把广告条关闭
 */
- (void)bannerViewWillClose;
/**
 *  banner条曝光回调
 */
- (void)bannerViewWillExposure;
/**
 *  banner条点击回调
 */
- (void)bannerViewClicked;
/**
 *  banner广告点击以后即将弹出全屏广告页
 */
- (void)bannerViewWillPresentFullScreenModal;
/**
 *  banner广告点击以后弹出全屏广告页完毕
 */
- (void)bannerViewDidPresentFullScreenModal;
/**
 *  å…¨å±å¹¿å‘Šé¡µå³å°†è¢«å…³é—­
 */
- (void)bannerViewWillDismissFullScreenModal;
/**
 *  å…¨å±å¹¿å‘Šé¡µå·²ç»è¢«å…³é—­
 */
- (void)bannerViewDidDismissFullScreenModal;
@end
@interface GDTMobBannerView : UIView
/**
 *  çˆ¶è§†å›¾
 *  è¯¦è§£ï¼š[必选]需设置为显示广告的UIViewController
 */
@property (nonatomic, weak) UIViewController *currentViewController;
/**
 *  å§”托 [可选]
 */
@property(nonatomic, weak) id<GDTMobBannerViewDelegate> delegate;
/**
 *  å¹¿å‘Šåˆ·æ–°é—´éš”,范围 [30, 120] ç§’,默认值 30 ç§’。设 0 åˆ™ä¸åˆ·æ–°ã€‚ [可选]
 */
@property(nonatomic, assign) int interval;
/**
 *  GPS精准广告定位模式开关,默认Gps关闭
 *  è¯¦è§£ï¼š[可选]GPS精准定位模式开关,YES为开启GPS,NO为关闭GPS,建议设为开启,可以获取地理位置信息,提高广告的填充率,增加收益。
 */
@property(nonatomic, assign) BOOL isGpsOn;
/**
 *  Banner展现和轮播时的动画效果开关,默认打开
 */
@property(nonatomic, assign) BOOL isAnimationOn;
/**
 *  Banner条展示关闭按钮,默认打开
 */
@property(nonatomic, assign) BOOL showCloseBtn;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("banner1.0接口将于近期下线,请尽快切换到banner2.0");
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šframe - banner å±•示的位置和大小
 *       appId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithFrame:(CGRect)frame appId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("banner1.0接口将于近期下线,请尽快切换到banner2.0");
/**
 *  æ‹‰å–并展示广告
 */
- (void)loadAdAndShow;
#pragma mark - DEPRECATED
- (instancetype)initWithAppkey:(NSString *)appkey placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("banner1.0接口将于近期下线,请尽快切换到banner2.0");
- (instancetype)initWithFrame:(CGRect)frame appkey:(NSString *)appkey placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("banner1.0接口将于近期下线,请尽快切换到banner2.0");
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTMobInterstitial.h
New file
@@ -0,0 +1,126 @@
//
//  GDTMobInterstitial.h
//  GDTMobApp
//
//  Created by GaoChao on 13-12-30.
//  Copyright (c) 2013å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
@class GDTMobInterstitial;
@protocol GDTMobInterstitialDelegate <NSObject>
@optional
/**
 *  å¹¿å‘Šé¢„加载成功回调
 *  è¯¦è§£:当接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)interstitialSuccessToLoadAd:(GDTMobInterstitial *)interstitial;
/**
 *  å¹¿å‘Šé¢„加载失败回调
 *  è¯¦è§£:当接收服务器返回的广告数据失败后调用该函数
 */
- (void)interstitialFailToLoadAd:(GDTMobInterstitial *)interstitial error:(NSError *)error;
/**
 *  æ’屏广告将要展示回调
 *  è¯¦è§£: æ’屏广告即将展示回调该函数
 */
- (void)interstitialWillPresentScreen:(GDTMobInterstitial *)interstitial;
/**
 *  æ’屏广告视图展示成功回调
 *  è¯¦è§£: æ’屏广告展示成功回调该函数
 */
- (void)interstitialDidPresentScreen:(GDTMobInterstitial *)interstitial;
/**
 *  æ’屏广告展示结束回调
 *  è¯¦è§£: æ’屏广告展示结束回调该函数
 */
- (void)interstitialDidDismissScreen:(GDTMobInterstitial *)interstitial;
/**
 *  è¯¦è§£:当点击应用下载或者广告调用系统程序打开时调用
 */
- (void)interstitialApplicationWillEnterBackground:(GDTMobInterstitial *)interstitial;
/**
 *  æ’屏广告曝光回调
 */
- (void)interstitialWillExposure:(GDTMobInterstitial *)interstitial;
/**
 *  æ’屏广告点击回调
 */
- (void)interstitialClicked:(GDTMobInterstitial *)interstitial;
/**
 *  ç‚¹å‡»æ’屏广告以后即将弹出全屏广告页
 */
- (void)interstitialAdWillPresentFullScreenModal:(GDTMobInterstitial *)interstitial;
/**
 *  ç‚¹å‡»æ’屏广告以后弹出全屏广告页
 */
- (void)interstitialAdDidPresentFullScreenModal:(GDTMobInterstitial *)interstitial;
/**
 *  å…¨å±å¹¿å‘Šé¡µå°†è¦å…³é—­
 */
- (void)interstitialAdWillDismissFullScreenModal:(GDTMobInterstitial *)interstitial;
/**
 *  å…¨å±å¹¿å‘Šé¡µè¢«å…³é—­
 */
- (void)interstitialAdDidDismissFullScreenModal:(GDTMobInterstitial *)interstitial;
@end
@interface GDTMobInterstitial : NSObject
/**
 *  GPS精准广告定位模式开关,默认Gps关闭
 *  è¯¦è§£ï¼š[可选]GPS精准定位模式开关,YES为开启GPS,NO为关闭GPS,建议设为开启,可以获取地理位置信息,提高广告的填充率,增加收益。
 */
@property (nonatomic, assign) BOOL isGpsOn;
/**
 *  æ’屏广告预加载是否完成
 */
@property (nonatomic, assign) BOOL isReady;
/**
 *  å§”托对象
 */
@property (nonatomic, weak) id<GDTMobInterstitialDelegate> delegate;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("插屏1.0接口将于近期下线,请尽快切换到插屏2.0");
/**
 *  å¹¿å‘Šå‘起请求方法
 *  è¯¦è§£ï¼š[必选]发起拉取广告请求
 */
- (void)loadAd;
/**
 *  å¹¿å‘Šå±•示方法
 *  è¯¦è§£ï¼š[必选]发起展示广告请求, å¿…须传入用于显示插播广告的UIViewController
 */
- (void)presentFromRootViewController:(UIViewController *)rootViewController;
#pragma mark - DEPRECATED
- (instancetype)initWithAppkey:(NSString *)appkey placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("插屏1.0接口将于近期下线,请尽快切换到插屏2.0");
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTNativeAd.h
New file
@@ -0,0 +1,144 @@
//
//  GDTNativeAd.h
//  GDTMobApp
//
//  Created by GaoChao on 14/11/6.
//  Copyright (c) 2014å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
#import "GDTSDKDefines.h"
extern NSString* const GDTNativeAdDataKeyTitle;
extern NSString* const GDTNativeAdDataKeyDesc;
extern NSString* const GDTNativeAdDataKeyIconUrl;
extern NSString* const GDTNativeAdDataKeyImgUrl;
extern NSString* const GDTNativeAdDataKeyAppRating;
extern NSString* const GDTNativeAdDataKeyAppPrice;
extern NSString* const GDTNativeAdDataKeyImgList;
extern NSString* const GDTNativeAdDataKeyImgWidth;
extern NSString* const GDTNativeAdDataKeyImgHeight;
@interface GDTNativeAdData : NSObject
/*
 *  å¹¿å‘Šå†…容字典
 *  è¯¦è§£ï¼š[必选]开发者调用LoadAd成功之后从该属性中获取广告数据
 *       å¹¿å‘Šæ•°æ®ä»¥å­—典的形式存储,开发者目前可以通过如下键获取数据
 *          1. GDTNativeAdDataKeyTitle      æ ‡é¢˜
 *          2. GDTNativeAdDataKeyDesc       æè¿°
 *          3. GDTNativeAdDataKeyIconUrl    å›¾æ ‡Url
 *          4. GDTNativeAdDataKeyImgUrl     å¤§å›¾Url
 *          5. GDTNativeAdDataKeyAppRating  åº”用类广告的星级
 *          6. GDTNativeAdDataKeyAppPrice   åº”用类广告的价格
 *          7. GDTNativeAdDataKeyImgList    ä¸‰å°å›¾å¹¿å‘Šçš„图片集合
 *          8. GDTNativeAdDataKeyImgWidth   ç´ æå®½åº¦
 *          9. GDTNativeAdDataKeyImgHeight  ç´ æé«˜åº¦
 */
@property (nonatomic, retain, readonly) NSDictionary *properties;
/*
 *  åˆ¤æ–­ä¸¤ä¸ªåŽŸç”Ÿå¹¿å‘Šæ•°æ®å¯¹è±¡æ˜¯å¦ç›¸ç­‰
 */
- (BOOL)equalsAdData:(GDTNativeAdData *)data;
/*
 *  èŽ·å–è¯¥åŽŸç”Ÿå¹¿å‘Šæ˜¯å¦ä¸ºåº”ç”¨ç±»å¹¿å‘Š
 */
- (BOOL)isAppAd;
/*
 *  èŽ·å–è¯¥åŽŸç”Ÿå¹¿å‘Šæ˜¯å¦ä¸ºä¸‰å°å›¾å¹¿å‘Šï¼Œå½“ä¸ºä¸‰å°å›¾å¹¿å‘Šæ—¶ï¼Œå¯ä»¥é€šè¿‡GDTNativeAdDataKeyImgList获取三张图片资源供渲染
 */
- (BOOL)isThreeImgsAd;
/**
 è¿”回广告的eCPM,单位:分
 @return æˆåŠŸè¿”å›žä¸€ä¸ªå¤§äºŽç­‰äºŽ0的值,-1表示无权限或后台出现异常
 */
- (NSInteger)eCPM;
/**
 è¿”回广告的eCPM等级
 @return æˆåŠŸè¿”å›žä¸€ä¸ªåŒ…å«æ•°å­—çš„string,@""或nil表示无权限或后台异常
 */
- (NSString *)eCPMLevel;
@end
@class GDTNativeAd;
@protocol GDTNativeAdDelegate <NSObject>
/**
 *  åŽŸç”Ÿå¹¿å‘ŠåŠ è½½å¹¿å‘Šæ•°æ®æˆåŠŸå›žè°ƒï¼Œè¿”å›žä¸ºGDTNativeAdData对象的数组
 */
- (void)nativeAdSuccessToLoad:(NSArray *)nativeAdDataArray;
/**
 *  åŽŸç”Ÿå¹¿å‘ŠåŠ è½½å¹¿å‘Šæ•°æ®å¤±è´¥å›žè°ƒ
 */
- (void)nativeAdFailToLoad:(NSError *)error;
@optional
/**
 *  åŽŸç”Ÿå¹¿å‘Šç‚¹å‡»ä¹‹åŽå°†è¦å±•ç¤ºå†…åµŒæµè§ˆå™¨æˆ–åº”ç”¨å†…AppStore回调
 */
- (void)nativeAdWillPresentScreen;
/**
 *  åŽŸç”Ÿå¹¿å‘Šç‚¹å‡»ä¹‹åŽåº”ç”¨è¿›å…¥åŽå°æ—¶å›žè°ƒ
 */
- (void)nativeAdApplicationWillEnterBackground;
/**
 * åŽŸç”Ÿå¹¿å‘Šç‚¹å‡»ä»¥åŽï¼Œå†…ç½®AppStore或是内置浏览器被关闭时回调
 */
- (void)nativeAdClosed;
@end
@interface GDTNativeAd : NSObject<SKStoreProductViewControllerDelegate>
/*
 *  viewControllerForPresentingModalView
 *  è¯¦è§£ï¼š[必选]开发者需传入用来弹出目标页的ViewController,一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *controller;
/**
 *  å§”托对象
 */
@property (nonatomic, weak) id<GDTNativeAdDelegate> delegate;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("即将废弃 è¯·ä½¿ç”¨è‡ªæ¸²æŸ“ 2.0");
/**
 *  å¹¿å‘Šå‘起请求方法
 *  è¯¦è§£ï¼š[必选]发起拉取广告请求,在获得广告数据后回调delegate
 *  @param adCount ä¸€æ¬¡æ‹‰å–广告的个数
 */
- (void)loadAd:(int)adCount;
/**
 *  å¹¿å‘Šæ•°æ®æ¸²æŸ“完毕即将展示时调用方法
 *  è¯¦è§£ï¼š[必选]广告数据渲染完毕,即将展示时需调用本方法。
 *      @param nativeAdData å¹¿å‘Šæ¸²æŸ“的数据对象
 *      @param view         æ¸²æŸ“出的广告结果页面
 */
- (void)attachAd:(GDTNativeAdData *)nativeAdData toView:(UIView *)view;
/**
 *  å¹¿å‘Šç‚¹å‡»è°ƒç”¨æ–¹æ³•
 *  è¯¦è§£ï¼šå½“用户点击广告时,开发者需调用本方法,系统会弹出内嵌浏览器、或内置AppStore、
 *      æˆ–打开系统Safari,来展现广告目标页面
 *      @param nativeAdData ç”¨æˆ·ç‚¹å‡»çš„广告数据对象
 */
- (void)clickAd:(GDTNativeAdData *)nativeAdData;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTNativeExpressAd.h
New file
@@ -0,0 +1,169 @@
//
//  GDTNativeExpressAd.h
//  GDTMobApp
//
//  Created by michaelxing on 2017/4/17.
//  Copyright Â© 2017å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
@class GDTNativeExpressAdView;
@class GDTNativeExpressAd;
@protocol GDTNativeExpressAdDelegete <NSObject>
@optional
/**
 * æ‹‰å–原生模板广告成功
 */
- (void)nativeExpressAdSuccessToLoad:(GDTNativeExpressAd *)nativeExpressAd views:(NSArray<__kindof GDTNativeExpressAdView *> *)views;
/**
 * æ‹‰å–原生模板广告失败
 */
- (void)nativeExpressAdFailToLoad:(GDTNativeExpressAd *)nativeExpressAd error:(NSError *)error;
/**
 * åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šæ¸²æŸ“æˆåŠŸ, æ­¤æ—¶çš„ nativeExpressAdView.size.height æ ¹æ® size.width å®Œæˆäº†åŠ¨æ€æ›´æ–°ã€‚
 */
- (void)nativeExpressAdViewRenderSuccess:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šæ¸²æŸ“å¤±è´¥
 */
- (void)nativeExpressAdViewRenderFail:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šæ›å…‰å›žè°ƒ
 */
- (void)nativeExpressAdViewExposure:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šç‚¹å‡»å›žè°ƒ
 */
- (void)nativeExpressAdViewClicked:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šè¢«å…³é—­
 */
- (void)nativeExpressAdViewClosed:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * ç‚¹å‡»åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šä»¥åŽå³å°†å¼¹å‡ºå…¨å±å¹¿å‘Šé¡µ
 */
- (void)nativeExpressAdViewWillPresentScreen:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * ç‚¹å‡»åŽŸç”Ÿæ¨¡æ¿å¹¿å‘Šä»¥åŽå¼¹å‡ºå…¨å±å¹¿å‘Šé¡µ
 */
- (void)nativeExpressAdViewDidPresentScreen:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * å…¨å±å¹¿å‘Šé¡µå°†è¦å…³é—­
 */
- (void)nativeExpressAdViewWillDissmissScreen:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * å…¨å±å¹¿å‘Šé¡µå°†è¦å…³é—­
 */
- (void)nativeExpressAdViewDidDissmissScreen:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * è¯¦è§£:当点击应用下载或者广告调用系统程序打开时调用
 */
- (void)nativeExpressAdViewApplicationWillEnterBackground:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿæ¨¡æ¿è§†é¢‘å¹¿å‘Š player æ’­æ”¾çŠ¶æ€æ›´æ–°å›žè°ƒ
 */
- (void)nativeExpressAdView:(GDTNativeExpressAdView *)nativeExpressAdView playerStatusChanged:(GDTMediaPlayerStatus)status;
/**
 * åŽŸç”Ÿè§†é¢‘æ¨¡æ¿è¯¦æƒ…é¡µ WillPresent å›žè°ƒ
 */
- (void)nativeExpressAdViewWillPresentVideoVC:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿè§†é¢‘æ¨¡æ¿è¯¦æƒ…é¡µ DidPresent å›žè°ƒ
 */
- (void)nativeExpressAdViewDidPresentVideoVC:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿè§†é¢‘æ¨¡æ¿è¯¦æƒ…é¡µ WillDismiss å›žè°ƒ
 */
- (void)nativeExpressAdViewWillDismissVideoVC:(GDTNativeExpressAdView *)nativeExpressAdView;
/**
 * åŽŸç”Ÿè§†é¢‘æ¨¡æ¿è¯¦æƒ…é¡µ DidDismiss å›žè°ƒ
 */
- (void)nativeExpressAdViewDidDismissVideoVC:(GDTNativeExpressAdView *)nativeExpressAdView;
@end
@interface GDTNativeExpressAd : NSObject
/**
 *  å§”托对象
 */
@property (nonatomic, weak) id<GDTNativeExpressAdDelegete> delegate;
/**
 *  éž WiFi ç½‘络,是否自动播放。默认 NO。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL videoAutoPlayOnWWAN;
/**
 *  è‡ªåŠ¨æ’­æ”¾æ—¶ï¼Œæ˜¯å¦é™éŸ³ã€‚é»˜è®¤ YES。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL videoMuted;
/**
 *  è§†é¢‘详情页播放时是否静音。默认NO。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL detailPageVideoMuted;
/**
 è¯·æ±‚视频的时长下限,视频时长有效值范围为[5,60]。
 ä»¥ä¸‹ä¸¤ç§æƒ…况会使用系统默认的最小值设置,1:不设置  2:minVideoDuration大于maxVideoDuration
 */
@property (nonatomic) NSInteger minVideoDuration;
/**
 è¯·æ±‚视频的时长上限,视频时长有效值范围为[5,60]。
 */
@property (nonatomic) NSInteger maxVideoDuration;
@property (nonatomic, readonly) NSString *placementId;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šplacementId - å¹¿å‘Šä½ ID
 *       adSize - å¹¿å‘Šå±•示的宽高
 */
- (instancetype)initWithPlacementId:(NSString *)placementId adSize:(CGSize)size;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 *       adSize - å¹¿å‘Šå±•示的宽高
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId adSize:(CGSize)size GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用 initWithPlacementId:adSize:");
- (void)loadAd:(NSInteger)count;
/**
 è¿”回广告平台名称
 @return å½“使用流量分配功能时,用于区分广告平台;未使用时为空字符串
 */
- (NSString *)adNetworkName;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTNativeExpressAdView.h
New file
@@ -0,0 +1,60 @@
//
//  GDTNativeExpressAdView.h
//  GDTMobApp
//
//  Created by michaelxing on 2017/4/14.
//  Copyright Â© 2017å¹´ Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface GDTNativeExpressAdView : UIView
/**
 * æ˜¯å¦æ¸²æŸ“完毕
 */
@property (nonatomic, assign, readonly) BOOL isReady;
/**
 * æ˜¯å¦æ˜¯è§†é¢‘模板广告
 */
@property (nonatomic, assign, readonly) BOOL isVideoAd;
/*
 *  viewControllerForPresentingModalView
 *  è¯¦è§£ï¼š[必选]开发者需传入用来弹出目标页的ViewController,一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *controller;
/**
 *[必选]
 *原生模板广告渲染
 */
- (void)render;
/**
 * è§†é¢‘模板广告时长,单位 ms
 */
- (CGFloat)videoDuration;
/**
 * è§†é¢‘模板广告已播放时长,单位 ms
 */
- (CGFloat)videoPlayTime;
/**
 è¿”回广告的eCPM,单位:分
 @return æˆåŠŸè¿”å›žä¸€ä¸ªå¤§äºŽç­‰äºŽ0的值,-1表示无权限或后台出现异常
 */
- (NSInteger)eCPM;
/**
 è¿”回广告的eCPM等级
 @return æˆåŠŸè¿”å›žä¸€ä¸ªåŒ…å«æ•°å­—çš„string,@""或nil表示无权限或后台异常
 */
- (NSString *)eCPMLevel;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTRewardVideoAd.h
New file
@@ -0,0 +1,153 @@
//
//  GDTRewardVideoAd.h
//  GDTMobSDK
//
//  Created by royqpwang on 2018/9/1.
//  Copyright Â© 2018å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
NS_ASSUME_NONNULL_BEGIN
@protocol GDTRewardedVideoAdDelegate;
@interface GDTRewardVideoAd : NSObject
@property (nonatomic, getter=isAdValid, readonly) BOOL adValid;
@property (nonatomic) BOOL videoMuted;
@property (nonatomic, assign, readonly) NSInteger expiredTimestamp;
@property (nonatomic, weak) id <GDTRewardedVideoAdDelegate> delegate;
@property (nonatomic, readonly) NSString *placementId;
/**
 æž„造方法
 @param placementId - å¹¿å‘Šä½ ID
 @return GDTRewardVideoAd å®žä¾‹
 */
- (instancetype)initWithPlacementId:(NSString *)placementId;
/**
 æž„造方法
 @param appId - åª’体 ID
 @param placementId - å¹¿å‘Šä½ ID
 @return GDTRewardVideoAd å®žä¾‹
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用 initWithPlacementId:");
/**
 åŠ è½½å¹¿å‘Šæ–¹æ³• æ”¯æŒ iOS8.1 åŠä»¥ä¸Šç³»ç»Ÿ
 */
- (void)loadAd;
/**
 å±•示广告方法
 @param rootViewController ç”¨äºŽ present æ¿€åŠ±è§†é¢‘ VC
 @return æ˜¯å¦å±•示成功
 */
- (BOOL)showAdFromRootViewController:(UIViewController *)rootViewController;
/**
 è¿”回广告的eCPM,单位:分
 @return æˆåŠŸè¿”å›žä¸€ä¸ªå¤§äºŽç­‰äºŽ0的值,-1表示无权限或后台出现异常
 */
- (NSInteger)eCPM;
/**
 è¿”回广告的eCPM等级
 @return æˆåŠŸè¿”å›žä¸€ä¸ªåŒ…å«æ•°å­—çš„string,@""或nil表示无权限或后台异常
 */
- (NSString *)eCPMLevel;
/**
 è¿”回广告平台名称
 @return å½“使用激励视频聚合功能时,用于区分广告平台
 */
- (NSString *)adNetworkName;
@end
@protocol GDTRewardedVideoAdDelegate <NSObject>
@optional
/**
 å¹¿å‘Šæ•°æ®åŠ è½½æˆåŠŸå›žè°ƒ
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidLoad:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘数据下载成功回调,已经下载过的视频会直接回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdVideoDidLoad:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘播放页即将展示回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdWillVisible:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘广告曝光回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidExposed:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘播放页关闭回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidClose:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘广告信息点击回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidClicked:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘广告各种错误信息回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 @param error å…·ä½“错误信息
 */
- (void)gdt_rewardVideoAd:(GDTRewardVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error;
/**
 è§†é¢‘广告播放达到激励条件回调
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidRewardEffective:(GDTRewardVideoAd *)rewardedVideoAd;
/**
 è§†é¢‘广告视频播放完成
 @param rewardedVideoAd GDTRewardVideoAd å®žä¾‹
 */
- (void)gdt_rewardVideoAdDidPlayFinish:(GDTRewardVideoAd *)rewardedVideoAd;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTRewardVideoAdNetworkAdapterProtocol.h
New file
@@ -0,0 +1,31 @@
//
//  GDTRewardVideoAdNetworkAdapterProtocol.h
//  GDTMobApp
//
//  Created by royqpwang on 2019/6/19.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GDTBaseAdNetworkAdapterProtocol.h"
@protocol GDTRewardVideoAdNetworkConnectorProtocol;
NS_ASSUME_NONNULL_BEGIN
@protocol GDTRewardVideoAdNetworkAdapterProtocol <GDTBaseAdNetworkAdapterProtocol>
- (void)loadAd;
- (BOOL)showAdFromRootViewController:(UIViewController *)viewController;
- (BOOL)isAdValid;
- (NSInteger)expiredTimestamp;
@optional
@property (nonatomic) BOOL videoMuted;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTRewardVideoAdNetworkConnectorProtocol.h
New file
@@ -0,0 +1,71 @@
//
//  GDTRewardVideoAdNetworkConnectorProtocol.h
//  GDTMobApp
//
//  Created by royqpwang on 2019/6/19.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
@protocol GDTRewardVideoAdNetworkAdapterProtocol;
@protocol GDTRewardVideoAdNetworkConnectorProtocol <NSObject>
- (void)adapter_rewardVideoAdDidLoad:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘数据下载成功回调,已经下载过的视频会直接回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdVideoDidLoad:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘播放页即将展示回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdWillVisible:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘广告曝光回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdDidExposed:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘播放页关闭回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdDidClose:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘广告信息点击回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdDidClicked:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
/**
 è§†é¢‘广告各种错误信息回调
 @param adapter å®žä¾‹
 @param error å…·ä½“错误信息
 */
- (void)adapter_rewardVideoAd:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter didFailWithError:(NSError *)error;
/**
 è§†é¢‘广告播放达到激励条件回调
 @param adapter å®žä¾‹
 */
- (void)adapter_rewardVideoAdDidRewardEffective:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
- (void)adapter_rewardVideoAdDidPlayFinish:(id<GDTRewardVideoAdNetworkAdapterProtocol>)adapter;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTSDKConfig.h
New file
@@ -0,0 +1,72 @@
//
//  GDTSDKConfig.h
//  GDTMobApp
//
//  Created by GaoChao on 14/8/25.
//  Copyright (c) 2014å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GDTSDKDefines.h"
@interface GDTSDKConfig : NSObject
/**
 SDK æ³¨å†ŒæŽ¥å£ï¼Œè¯·åœ¨ app åˆå§‹åŒ–时调用。
 @param appId - åª’体ID
 @return æ³¨å†Œæ˜¯å¦æˆåŠŸã€‚
*/
+ (BOOL)registerAppId:(NSString *)appId;
/**
 * æä¾›ç»™èšåˆå¹³å°ç”¨æ¥è®¾å®šSDK æµé‡åˆ†ç±»
 */
+ (void)setSdkSrc:(NSString *)sdkSrc;
/**
 * æŸ¥çœ‹SDK流量来源
 */
+ (NSString *)sdkSrc;
/**
 * èŽ·å– SDK ç‰ˆæœ¬
 */
+ (NSString *)sdkVersion;
+ (void)enableGPS:(BOOL)enabled;
/**
* è®¾ç½®æµé‡æ¸ é“号
 æ¸ é“号信息主要用来协助平台提升流量变现效果及您的收益,请如实填写,若渠道号无法满足您的诉求请联系平台负责商务
 æ¸ é“号映射关系为:
 1:百度
 2:头条
 3:广点通
 4:搜狗
 5:其他网盟
 6:oppo
 7:vivo
 8:华为
 9:应用宝
 10:小米
 11:金立
 12:百度手机助手
 13:魅族
 14:AppStore
 999:其他
*/
+ (void)setChannel:(NSInteger)channel;
+ (void)setSDKType:(NSInteger)type;
/**
 åœ¨æ’­æ”¾éŸ³é¢‘时是否使用SDK内部对AVAudioSession设置的category及options,默认使用,若不使用,SDK内部不做任何处理,由调用方在展示广告时自行设置;
 SDK设置的category为AVAudioSessionCategoryAmbient,options为AVAudioSessionCategoryOptionDuckOthers
 */
+ (void)enableDefaultAudioSessionSetting:(BOOL)enabled;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTSDKDefines.h
New file
@@ -0,0 +1,70 @@
//
//  GDTSDKDefines.h
//  GDTMobApp
//
//  Created by royqpwang on 2017/11/6.
//  Copyright Â© 2017å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#if defined(__has_attribute)
#if __has_attribute(deprecated)
#define GDT_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
#define GDT_DEPRECATED_ATTRIBUTE __attribute__((deprecated))
#else
#define GDT_DEPRECATED_MSG_ATTRIBUTE(s)
#define GDT_DEPRECATED_ATTRIBUTE
#endif
#else
#define GDT_DEPRECATED_MSG_ATTRIBUTE(s)
#define GDT_DEPRECATED_ATTRIBUTE
#endif
#define GDTScreenHeight ([UIScreen mainScreen].bounds.size.height)
#define GDTScreenWidth  ([UIScreen mainScreen].bounds.size.width)
#define GDTTangramSchemePrefix  @"gdtmsg://e.qq.com/"
/**
 *  è§†é¢‘播放器状态
 *
 *  æ’­æ”¾å™¨åªå¯èƒ½å¤„于以下状态中的一种
 *
 */
typedef NS_ENUM(NSUInteger, GDTMediaPlayerStatus) {
    GDTMediaPlayerStatusInitial = 0,         // åˆå§‹çŠ¶æ€
    GDTMediaPlayerStatusLoading = 1,         // åŠ è½½ä¸­
    GDTMediaPlayerStatusStarted = 2,         // å¼€å§‹æ’­æ”¾
    GDTMediaPlayerStatusPaused = 3,          // ç”¨æˆ·è¡Œä¸ºå¯¼è‡´æš‚停
    GDTMediaPlayerStatusStoped = 4,          // æ’­æ”¾åœæ­¢
    GDTMediaPlayerStatusError = 5,           // æ’­æ”¾å‡ºé”™
};
typedef enum GDTSDKLoginType {
    GDTSDKLoginTypeUnknow = 0,
    GDTSDKLoginTypeWeiXin = 1,    //微信账号
    GDTSDKLoginTypeQQ = 2,        //QQ账号
} GDTSDKLoginType;
typedef NS_ENUM(NSUInteger, GDTVideoPlayPolicy) {
    GDTVideoPlayPolicyUnknow = 0, // é»˜è®¤å€¼ï¼Œæœªè®¾ç½®
    GDTVideoPlayPolicyAuto = 1,   // ç”¨æˆ·è§’度看起来是自动播放
    GDTVideoPlayPolicyManual = 2  // ç”¨æˆ·è§’度看起来是手动播放或点击后播放
};
typedef NS_ENUM(NSUInteger, GDTVideoRenderType) {
    GDTVideoRenderTypeUnknow = 0,
    GDTVideoRenderTypeSDK = 1,
    GDTVideoRenderTypeDeveloper = 2
};
static inline BOOL isIPhoneXSeries() {
    if (@available(iOS 11.0, *)) {
        UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
        if (mainWindow.safeAreaInsets.bottom > 0.0) {
            return YES;
        }
    }
    return NO;
}
MIduo/Êý¾Ý/lib/GDT/lib/GDTSplashAd.h
New file
@@ -0,0 +1,194 @@
//
//  GDTSplashAd.h
//  GDTMobApp
//
//  å¹¿ç‚¹é€šå¼€å±å¹¿å‘Šï¼Œç›®å‰åªæ”¯æŒiPhone设备上展示垂直方向的开屏广告
//  Created by GaoChao on 15/8/20.
//  Copyright Â© 2015å¹´ Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTSDKDefines.h"
@class GDTSplashAd;
@protocol GDTSplashAdDelegate <NSObject>
@optional
/**
 *  å¼€å±å¹¿å‘ŠæˆåŠŸå±•ç¤º
 */
- (void)splashAdSuccessPresentScreen:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šç´ æåŠ è½½æˆåŠŸ
 */
- (void)splashAdDidLoad:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šå±•示失败
 */
- (void)splashAdFailToPresent:(GDTSplashAd *)splashAd withError:(NSError *)error;
/**
 *  åº”用进入后台时回调
 *  è¯¦è§£: å½“点击下载应用时会调用系统程序打开,应用切换到后台
 */
- (void)splashAdApplicationWillEnterBackground:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šæ›å…‰å›žè°ƒ
 */
- (void)splashAdExposured:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šç‚¹å‡»å›žè°ƒ
 */
- (void)splashAdClicked:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šå°†è¦å…³é—­å›žè°ƒ
 */
- (void)splashAdWillClosed:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šå…³é—­å›žè°ƒ
 */
- (void)splashAdClosed:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šç‚¹å‡»ä»¥åŽå³å°†å¼¹å‡ºå…¨å±å¹¿å‘Šé¡µ
 */
- (void)splashAdWillPresentFullScreenModal:(GDTSplashAd *)splashAd;
/**
 *  å¼€å±å¹¿å‘Šç‚¹å‡»ä»¥åŽå¼¹å‡ºå…¨å±å¹¿å‘Šé¡µ
 */
- (void)splashAdDidPresentFullScreenModal:(GDTSplashAd *)splashAd;
/**
 *  ç‚¹å‡»ä»¥åŽå…¨å±å¹¿å‘Šé¡µå°†è¦å…³é—­
 */
- (void)splashAdWillDismissFullScreenModal:(GDTSplashAd *)splashAd;
/**
 *  ç‚¹å‡»ä»¥åŽå…¨å±å¹¿å‘Šé¡µå·²ç»å…³é—­
 */
- (void)splashAdDidDismissFullScreenModal:(GDTSplashAd *)splashAd;
/**
 * å¼€å±å¹¿å‘Šå‰©ä½™æ—¶é—´å›žè°ƒ
 */
- (void)splashAdLifeTime:(NSUInteger)time;
@end
@interface GDTSplashAd : NSObject
/**
 *  å§”托对象
 */
@property (nonatomic, weak) id<GDTSplashAdDelegate> delegate;
/**
 *  æ‹‰å–广告超时时间,默认为3秒
 *  è¯¦è§£ï¼šæ‹‰å–广告超时时间,开发者调用loadAd方法以后会立即展示backgroundImage,然后在该超时时间内,如果广告拉
 *  å–成功,则立马展示开屏广告,否则放弃此次广告展示机会。
 */
@property (nonatomic, assign) CGFloat fetchDelay;
/**
 *  å¼€å±å¹¿å‘Šçš„背景图片
 *  å¯ä»¥è®¾ç½®èƒŒæ™¯å›¾ç‰‡ä½œä¸ºå¼€å±åŠ è½½æ—¶çš„é»˜è®¤èƒŒæ™¯
 */
@property (nonatomic, strong) UIImage *backgroundImage;
/**
 *  å¼€å±å¹¿å‘Šçš„背景色
 *  å¯ä»¥è®¾ç½®å¼€å±å›¾ç‰‡æ¥ä½œä¸ºå¼€å±åŠ è½½æ—¶çš„é»˜è®¤å›¾ç‰‡
 */
@property (nonatomic, copy) UIColor *backgroundColor;
/**
 * è·³è¿‡æŒ‰é’®çš„位置
 */
@property (nonatomic, assign) CGPoint skipButtonCenter;
/**
 è¿”回广告平台名称
 @return å½“使用流量分配功能时,用于区分广告平台;未使用时为空字符串
 */
- (NSString *)adNetworkName;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šplacementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithPlacementId:(NSString *)placementId;
/**
 é¢„加载闪屏广告接口
 @param placementId å¹¿å‘Šä½ID
 */
+ (void)preloadSplashOrderWithPlacementId:(NSString *)placementId;
#pragma mark - Parallel method
/**
 * è¿”回广告是否可展示
 * å¯¹äºŽå¹¶è¡Œè¯·æ±‚,在调用showAdInWindow前时需判断下
 * @return å½“广告已经加载完成且未曝光时,为YES,否则为NO
 */
- (BOOL)isAdValid;
/**
 *  å‘起拉取广告请求,只拉取不展示
 *  è¯¦è§£ï¼šå¹¿å‘Šç´ æåŠå¹¿å‘Šå›¾ç‰‡æ‹‰å–成功后会回调splashAdDidLoad方法,当拉取失败时会回调splashAdFailToPresent方法
 */
- (void)loadAd;
/**
 *  å±•示广告,调用此方法前需调用isAdValid方法判断广告素材是否有效
 *  è¯¦è§£ï¼šå¹¿å‘Šå±•示成功时会回调splashAdSuccessPresentScreen方法,展示失败时会回调splashAdFailToPresent方法
 */
- (void)showAdInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView skipView:(UIView *)skipView;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId  GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用 initWithPlacementId:");
/**
 *  å¹¿å‘Šå‘起请求并展示在Window中
 *  è¯¦è§£ï¼š[可选]发起拉取广告请求,并将获取的广告以全屏形式展示在传入的Window参数中
 *  æç¤º: Splash广告只支持竖屏
 *  @param window å±•示全屏开屏的容器
 */
- (void)loadAdAndShowInWindow:(UIWindow *)window  GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd å’Œ showAdInWindow:接口");
/**
 *  å¹¿å‘Šå‘起请求并展示在Window中, åŒæ—¶åœ¨å±å¹•底部设置应用自身的Logo页面或是自定义View
 *  è¯¦è§£ï¼š[可选]发起拉取广告请求,并将获取的广告以半屏形式展示在传入的Window的上半部,剩余部分展示传入的bottomView
 *       è¯·æ³¨æ„1.bottomView需设置好宽高,所占的空间不能过大,并保证高度不超过屏幕高度的 25%。2.Splash广告只支持竖屏
 *  @param window å±•示开屏的容器
 *         bottomView è‡ªå®šä¹‰åº•部View,可以在此View中设置应用Logo
 */
- (void)loadAdAndShowInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd å’Œ showAdInWindow:接口");
/**
 *  å¹¿å‘Šå‘起请求并展示在Window中, åŒæ—¶åœ¨å±å¹•底部设置应用自身的Logo页面或是自定义View,skipView是自定义的“跳过”样式
 *  è¯¦è§£ï¼š[可选]发起拉取广告请求,并将获取的广告以半屏形式展示在传入的Window的上半部,剩余部分展示传入的bottomView
 *       è¯·æ³¨æ„1.bottomView需设置好宽高,所占的空间不能过大,并保证高度不超过屏幕高度的 25%。2.Splash广告只支持竖屏
 *  skipView
 *  @param window å±•示开屏的容器
 *         bottomView è‡ªå®šä¹‰åº•部View,可以在此View中设置应用Logo
           skipView è‡ªå®šä¹‰â€è·³è¿‡â€œView.
 */
- (void)loadAdAndShowInWindow:(UIWindow *)window withBottomView:(UIView *)bottomView skipView:(UIView *)skipView GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请分别使用loadAd å’Œ showAdInWindow:接口");
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTUnifiedBannerView.h
New file
@@ -0,0 +1,111 @@
//
//  GDTUnifiedBannerView.h
//  GDTMobSDK
//
//  Created by nimomeng on 2019/3/1.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class GDTUnifiedBannerView;
@protocol GDTUnifiedBannerViewDelegate <NSObject>
@optional
/**
 *  è¯·æ±‚广告条数据成功后调用
 *  å½“接收服务器返回的广告数据成功后调用该函数
 */
- (void)unifiedBannerViewDidLoad:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  è¯·æ±‚广告条数据失败后调用
 *  å½“接收服务器返回的广告数据失败后调用该函数
 */
- (void)unifiedBannerViewFailedToLoad:(GDTUnifiedBannerView *)unifiedBannerView error:(NSError *)error;
/**
 *  banner2.0曝光回调
 */
- (void)unifiedBannerViewWillExpose:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  banner2.0点击回调
 */
- (void)unifiedBannerViewClicked:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  banner2.0广告点击以后即将弹出全屏广告页
 */
- (void)unifiedBannerViewWillPresentFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  banner2.0广告点击以后弹出全屏广告页完毕
 */
- (void)unifiedBannerViewDidPresentFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  å…¨å±å¹¿å‘Šé¡µå³å°†è¢«å…³é—­
 */
- (void)unifiedBannerViewWillDismissFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  å…¨å±å¹¿å‘Šé¡µå·²ç»è¢«å…³é—­
 */
- (void)unifiedBannerViewDidDismissFullScreenModal:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  å½“点击应用下载或者广告调用系统程序打开
 */
- (void)unifiedBannerViewWillLeaveApplication:(GDTUnifiedBannerView *)unifiedBannerView;
/**
 *  banner2.0被用户关闭时调用
 */
- (void)unifiedBannerViewWillClose:(GDTUnifiedBannerView *)unifiedBannerView;
@end
@interface GDTUnifiedBannerView : UIView
/**
 *  å§”托 [可选]
 */
@property (nonatomic, weak) id<GDTUnifiedBannerViewDelegate> delegate;
/**
 *  Banner展现和轮播时的动画效果开关,默认打开
 */
@property (nonatomic) BOOL animated;
/**
 *  å¹¿å‘Šåˆ·æ–°é—´éš”,范围 [30, 120] ç§’,默认值 30 ç§’。设 0 åˆ™ä¸åˆ·æ–°ã€‚ [可选]
 */
@property (nonatomic) int autoSwitchInterval;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šplacementId - å¹¿å‘Šä½ ID
 *       viewController - è§†å›¾æŽ§åˆ¶å™¨
 */
- (instancetype)initWithPlacementId:(NSString *)placementId
                     viewController:(UIViewController *)viewController;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šframe - banner å±•示的位置和大小
 *       placementId - å¹¿å‘Šä½ ID
 *       viewController - è§†å›¾æŽ§åˆ¶å™¨
 */
- (instancetype)initWithFrame:(CGRect)frame
                  placementId:(NSString *)placementId
               viewController:(UIViewController *)viewController;
/**
 *  æ‹‰å–并展示广告
 */
- (void)loadAdAndShow;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTUnifiedInterstitialAd.h
New file
@@ -0,0 +1,236 @@
//
//  GDTUnifiedInterstitialAd.h
//  GDTMobApp
//
//  Created by nimomeng on 2019/3/4.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GDTSDKDefines.h"
NS_ASSUME_NONNULL_BEGIN
@class GDTUnifiedInterstitialAd;
@protocol GDTUnifiedInterstitialAdDelegate <NSObject>
@optional
/**
 *  æ’屏2.0广告预加载成功回调
 *  å½“接收服务器返回的广告数据成功且预加载后调用该函数
 */
- (void)unifiedInterstitialSuccessToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  æ’屏2.0广告预加载失败回调
 *  å½“接收服务器返回的广告数据失败后调用该函数
 */
- (void)unifiedInterstitialFailToLoadAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error;
/**
 *  æ’屏2.0广告将要展示回调
 *  æ’屏2.0广告即将展示回调该函数
 */
- (void)unifiedInterstitialWillPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  æ’屏2.0广告视图展示成功回调
 *  æ’屏2.0广告展示成功回调该函数
 */
- (void)unifiedInterstitialDidPresentScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  æ’屏2.0广告视图展示失败回调
 *  æ’屏2.0广告展示失败回调该函数
 */
- (void)unifiedInterstitialFailToPresent:(GDTUnifiedInterstitialAd *)unifiedInterstitial error:(NSError *)error;
/**
 *  æ’屏2.0广告展示结束回调
 *  æ’屏2.0广告展示结束回调该函数
 */
- (void)unifiedInterstitialDidDismissScreen:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  å½“点击下载应用时会调用系统程序打开其它App或者Appstore时回调
 */
- (void)unifiedInterstitialWillLeaveApplication:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  æ’屏2.0广告曝光回调
 */
- (void)unifiedInterstitialWillExposure:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  æ’屏2.0广告点击回调
 */
- (void)unifiedInterstitialClicked:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  ç‚¹å‡»æ’屏2.0广告以后即将弹出全屏广告页
 */
- (void)unifiedInterstitialAdWillPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  ç‚¹å‡»æ’屏2.0广告以后弹出全屏广告页
 */
- (void)unifiedInterstitialAdDidPresentFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  å…¨å±å¹¿å‘Šé¡µå°†è¦å…³é—­
 */
- (void)unifiedInterstitialAdWillDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 *  å…¨å±å¹¿å‘Šé¡µè¢«å…³é—­
 */
- (void)unifiedInterstitialAdDidDismissFullScreenModal:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 * æ’屏2.0视频广告 player æ’­æ”¾çŠ¶æ€æ›´æ–°å›žè°ƒ
 */
- (void)unifiedInterstitialAd:(GDTUnifiedInterstitialAd *)unifiedInterstitial playerStatusChanged:(GDTMediaPlayerStatus)status;
/**
 * æ’屏2.0视频广告详情页 WillPresent å›žè°ƒ
 */
- (void)unifiedInterstitialAdViewWillPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 * æ’屏2.0视频广告详情页 DidPresent å›žè°ƒ
 */
- (void)unifiedInterstitialAdViewDidPresentVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 * æ’屏2.0视频广告详情页 WillDismiss å›žè°ƒ
 */
- (void)unifiedInterstitialAdViewWillDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
/**
 * æ’屏2.0视频广告详情页 DidDismiss å›žè°ƒ
 */
- (void)unifiedInterstitialAdViewDidDismissVideoVC:(GDTUnifiedInterstitialAd *)unifiedInterstitial;
@end
@interface GDTUnifiedInterstitialAd : NSObject
/**
 *  æ’屏2.0广告预加载是否完成
 */
@property (nonatomic, readonly) BOOL isAdValid;
/**
 *  å§”托对象
 */
@property (nonatomic, weak) id<GDTUnifiedInterstitialAdDelegate> delegate;
@property (nonatomic, readonly) NSString *placementId;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šplacementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithPlacementId:(NSString *)placementId;
/**
 *  æž„造方法
 *  è¯¦è§£ï¼šappId - åª’体 ID
 *       placementId - å¹¿å‘Šä½ ID
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用 initWithPlacementId:");
/**
 *  å¹¿å‘Šå‘起请求方法
 *  è¯¦è§£ï¼š[必选]发起拉取广告请求
 */
- (void)loadAd;
/**
*  æ’屏全屏视频广告发起请求方法
*  è¯¦è§£ï¼š[必选]发起拉取广告请求
*/
- (void)loadFullScreenAd;
/**
 *  å¹¿å‘Šå±•示方法
 *  è¯¦è§£ï¼š[必选]发起展示广告请求, å¿…须传入用于显示插播广告的UIViewController
 */
- (void)presentAdFromRootViewController:(UIViewController *)rootViewController;
/**
*  æ’屏视频全屏广告展示方法
*  è¯¦è§£ï¼š[必选]发起展示广告请求, å¿…须传入用于显示插播广告的UIViewController
*/
- (void)presentFullScreenAdFromRootViewController:(UIViewController *)rootViewController;
/**
 è¿”回广告的eCPM,单位:分
 @return æˆåŠŸè¿”å›žä¸€ä¸ªå¤§äºŽç­‰äºŽ0的值,-1表示无权限或后台出现异常
 */
- (NSInteger)eCPM;
/**
 è¿”回广告的eCPM等级
 @return æˆåŠŸè¿”å›žä¸€ä¸ªåŒ…å«æ•°å­—çš„string,@""或nil表示无权限或后台异常
 */
- (NSString *)eCPMLevel;
/**
 *  éž WiFi ç½‘络,是否自动播放。默认 NO。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL videoAutoPlayOnWWAN;
/**
 *  è‡ªåŠ¨æ’­æ”¾æ—¶ï¼Œæ˜¯å¦é™éŸ³ã€‚é»˜è®¤ YES。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL videoMuted;
/**
 *  è§†é¢‘详情页播放时是否静音。默认NO。loadAd å‰è®¾ç½®ã€‚
 */
@property (nonatomic, assign) BOOL detailPageVideoMuted;
/**
 è¯·æ±‚视频的时长下限,视频时长有效值范围为[5,60]。
 ä»¥ä¸‹ä¸¤ç§æƒ…况会使用系统默认的最小值设置,1:不设置  2:minVideoDuration大于maxVideoDuration
*/
@property (nonatomic) NSInteger minVideoDuration;
/**
 è¯·æ±‚视频的时长上限,视频时长有效值范围为[5,60]。
 */
@property (nonatomic) NSInteger maxVideoDuration;
/**
 * æ˜¯å¦æ˜¯è§†é¢‘插屏2.0广告
 */
@property (nonatomic, assign, readonly) BOOL isVideoAd;
/**
 * è§†é¢‘插屏2.0广告时长,单位 ms
 */
- (CGFloat)videoDuration;
/**
 * è§†é¢‘插屏广告已播放时长,单位 ms
 */
- (CGFloat)videoPlayTime;
/**
 è¿”回广告平台名称
 @return å½“使用流量分配功能时,用于区分广告平台;未使用时为空字符串
 */
- (NSString *)adNetworkName;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTUnifiedNativeAd.h
New file
@@ -0,0 +1,103 @@
//
//  GDTUnifiedNativeAd.h
//  GDTMobSDK
//
//  Created by nimomeng on 2018/10/10.
//  Copyright Â© 2018 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "GDTUnifiedNativeAdDataObject.h"
#import "GDTUnifiedNativeAdView.h"
NS_ASSUME_NONNULL_BEGIN
@protocol GDTUnifiedNativeAdDelegate <NSObject>
/**
 å¹¿å‘Šæ•°æ®å›žè°ƒ
 @param unifiedNativeAdDataObjects å¹¿å‘Šæ•°æ®æ•°ç»„
 @param error é”™è¯¯ä¿¡æ¯
 */
- (void)gdt_unifiedNativeAdLoaded:(NSArray<GDTUnifiedNativeAdDataObject *> * _Nullable)unifiedNativeAdDataObjects error:(NSError * _Nullable)error;
@end
@interface GDTUnifiedNativeAd : NSObject
@property (nonatomic, weak) id<GDTUnifiedNativeAdDelegate> delegate;
/**
 è¯·æ±‚视频的时长下限,视频时长有效值范围为[5,60]。
 ä»¥ä¸‹ä¸¤ç§æƒ…况会使用系统默认的最小值设置,1:不设置  2:minVideoDuration大于maxVideoDuration
*/
@property (nonatomic) NSInteger minVideoDuration;
/**
 è¯·æ±‚视频的最大时长,视频时长有效值范围为[5,60]。
 */
@property (nonatomic) NSInteger maxVideoDuration;
/**
 å¯é€‰å±žæ€§ï¼Œè®¾ç½®æœ¬æ¬¡æ‹‰å–的视频广告从用户角度看到的视频播放策略。
 â€œç”¨æˆ·è§’度”特指用户看到的情况,并非SDK是否自动播放,与自动播放策略 GDTVideoAutoPlayPolicy çš„取值并非一一对应
 ä¾‹å¦‚开发者设置了 GDTVideoAutoPlayPolicyNever è¡¨ç¤º SDK ä¸è‡ªåŠ¨æ’­æ”¾è§†é¢‘ï¼Œä½†æ˜¯å¼€å‘è€…é€šè¿‡ GDTMediaView çš„ play æ–¹æ³•播放视频,这在用户看来仍然是自动播放的。
 å‡†ç¡®çš„设置 GDTVideoPlayPolicy æœ‰åŠ©äºŽæé«˜è§†é¢‘å¹¿å‘Šçš„eCPM值,如果广告位仅支持图文广告,则无需调用。
 éœ€è¦åœ¨ loadAd å‰è®¾ç½®æ­¤å±žæ€§ã€‚
 */
@property (nonatomic, assign) GDTVideoPlayPolicy videoPlayPolicy;
/**
 å¯é€‰å±žæ€§ï¼Œè®¾ç½®æœ¬æ¬¡æ‹‰å–的视频广告封面是由SDK渲染还是开发者自行渲染。
 SDK æ¸²æŸ“,指视频广告 containerView ç›´æŽ¥åœ¨ feed æµç­‰åœºæ™¯å±•示,用户可以直接看到渲染的视频广告。Demo å·¥ç¨‹ä¸­çš„ â€œè§†é¢‘Feed” å°±æ˜¯ SDK æ¸²æŸ“。
 å¼€å‘者自行渲染,指开发者获取到广告对象后,先用封面图字段在 feed æµä¸­å…ˆæ¸²æŸ“出一个封面图入口,用户点击封面图,再进入一个有 conainterView çš„详细页,播放视频。Demo å·¥ç¨‹ä¸­çš„ "竖版 Feed è§†é¢‘" å°±æ˜¯å¼€å‘者渲染的场景。
 */
@property (nonatomic, assign) GDTVideoRenderType videoRenderType;
/**
 æž„造方法
 @param placementId å¹¿å‘Šä½ID
 @return GDTUnifiedNativeAd å®žä¾‹
 */
- (instancetype)initWithPlacementId:(NSString *)placementId;
/**
 æž„造方法
 @param appId åª’体ID
 @param placementId å¹¿å‘Šä½ID
 @return GDTUnifiedNativeAd å®žä¾‹
 */
- (instancetype)initWithAppId:(NSString *)appId placementId:(NSString *)placementId GDT_DEPRECATED_MSG_ATTRIBUTE("接口即将废弃,请使用 initWithPlacementId:");
/**
 åŠ è½½å¹¿å‘Š
 */
- (void)loadAd;
/**
 åŠ è½½å¹¿å‘Š
 @param adCount åŠ è½½æ¡æ•°
 */
- (void)loadAdWithAdCount:(NSInteger)adCount;
/**
 è¿”回广告平台名称
 @return å½“使用流量分配功能时,用于区分广告平台;未使用时为空字符串
 */
- (NSString *)adNetworkName;
/**
 * å½“需要支持 VAST å¹¿å‘Šæ—¶ï¼Œéœ€æµé‡è‡ªè¡Œé…ç½® adapter çš„ vastClassName
 */
- (void)setVastClassName:(NSString *)vastClassName;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/GDTUnifiedNativeAdDataObject.h
New file
@@ -0,0 +1,151 @@
//
//  GDTUnifiedNativeAdDataObject.h
//  GDTMobSDK
//
//  Created by nimomeng on 2018/10/10.
//  Copyright Â© 2018 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "GDTVideoConfig.h"
typedef NS_ENUM(NSInteger, GDTVastAdEventType) {
    GDTVastAdEventTypeUnknow,
    GDTVastAdEventTypeLoaded,
    GDTVastAdEventTypeStarted,
    GDTVastAdEventTypeFirstQuartile,
    GDTVastAdEventTypeMidPoint,
    GDTVastAdEventTypeThirdQuartile,
    GDTVastAdEventTypeComplete,
    GDTVastAdEventTypeAllAdsComplete,
    GDTVastAdEventTypeExposed,
    GDTVastAdEventTypeClicked,
};
@interface GDTUnifiedNativeAdDataObject : NSObject
/**
 å¹¿å‘Šæ ‡é¢˜
 */
@property (nonatomic, copy, readonly) NSString *title;
/**
 å¹¿å‘Šæè¿°
 */
@property (nonatomic, copy, readonly) NSString *desc;
/**
 å¹¿å‘Šå¤§å›¾Url
 */
@property (nonatomic, copy, readonly) NSString *imageUrl;
/**
 ç´ æå®½åº¦ï¼Œå•图广告代表大图 imageUrl å®½åº¦ã€å¤šå›¾å¹¿å‘Šä»£è¡¨å°å›¾ mediaUrlList å®½åº¦
 */
@property (nonatomic, readonly) NSInteger imageWidth;
/**
 ç´ æé«˜åº¦ï¼Œå•图广告代表大图 imageUrl é«˜åº¦ã€å¤šå›¾å¹¿å‘Šä»£è¡¨å°å›¾ mediaUrlList é«˜åº¦
 */
@property (nonatomic, readonly) NSInteger imageHeight;
/**
 åº”用类广告App å›¾æ ‡Url
 */
@property (nonatomic, copy, readonly) NSString *iconUrl;
/**
 ä¸‰å°å›¾å¹¿å‘Šçš„图片Url集合
 */
@property (nonatomic, copy, readonly) NSArray *mediaUrlList;
/**
 åº”用类广告的星级(5星制度)
 */
@property (nonatomic, readonly) CGFloat appRating;
/**
 åº”用类广告的价格
 */
@property (nonatomic, strong, readonly) NSNumber *appPrice;
/**
 æ˜¯å¦ä¸ºåº”用类广告
 */
@property (nonatomic, readonly) BOOL isAppAd;
/**
 æ˜¯å¦ä¸ºè§†é¢‘广告
 */
@property (nonatomic, readonly) BOOL isVideoAd;
/**
 æ˜¯å¦ä¸ºä¸‰å°å›¾å¹¿å‘Š
 */
@property (nonatomic, readonly) BOOL isThreeImgsAd;
/**
 è¿”回广告的eCPM,单位:分
 @return æˆåŠŸè¿”å›žä¸€ä¸ªå¤§äºŽç­‰äºŽ0的值,-1表示无权限或后台出现异常
 */
@property (nonatomic, readonly) NSInteger eCPM;
/**
 è¿”回广告的eCPM等级
 @return æˆåŠŸè¿”å›žä¸€ä¸ªåŒ…å«æ•°å­—çš„string,@""或nil表示无权限或后台异常
 */
@property (nonatomic, readonly) NSString *eCPMLevel;
/**
 å¹¿å‘Šå¯¹åº”çš„CTA文案,自定义CTA视图时建议使用此字段
 å¹¿å‘Šå¯¹åº”çš„callToAction文案,比如“立即预约”或“电话咨询”, è‡ªå®šä¹‰callToAction视图时建议使用此字段
 è¯¥å­—段在部分广告类型中可能为空
 */
@property (nonatomic, readonly) NSString *callToAction;
/**
返回广告是否可以跳过,用于做前贴片场景
@return YES è¡¨ç¤ºå¯è·³è¿‡ã€NO è¡¨ç¤ºä¸å¯è·³è¿‡
*/
@property (nonatomic, readonly) BOOL skippable;
/**
 è§†é¢‘广告播放配置
 */
@property (nonatomic, strong) GDTVideoConfig *videoConfig;
/**
 * è§†é¢‘广告时长,单位 ms
 */
@property (nonatomic, readonly) CGFloat duration;
/**
 *  VAST Tag Url,可能为空。
 */
@property (nonatomic, copy, readonly) NSString *vastTagUrl;
/**
 * VAST Content,可能为空。
 */
@property (nonatomic, copy, readonly) NSString *vastContent;
/**
 * æ˜¯å¦ä¸º VAST å¹¿å‘Š
 */
@property (nonatomic, assign, readonly) BOOL isVastAd;
/**
 åˆ¤æ–­ä¸¤ä¸ªè‡ªæ¸²æŸ“2.0广告数据是否相等
 @param dataObject éœ€è¦å¯¹æ¯”的自渲染2.0广告数据对象
 @return YES or NO
 */
- (BOOL)equalsAdData:(GDTUnifiedNativeAdDataObject *)dataObject;
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTUnifiedNativeAdView.h
New file
@@ -0,0 +1,160 @@
//
//  GDTUnifiedNativeAdView.h
//  GDTMobSDK
//
//  Created by nimomeng on 2018/10/10.
//  Copyright Â© 2018 Tencent. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GDTLogoView.h"
#import "GDTMediaView.h"
#import "GDTUnifiedNativeAdDataObject.h"
#import "GDTSDKDefines.h"
@class GDTUnifiedNativeAdView;
//视频广告时长Key
extern NSString* const kGDTUnifiedNativeAdKeyVideoDuration;
@protocol GDTUnifiedNativeAdViewDelegate <NSObject>
@optional
/**
 å¹¿å‘Šæ›å…‰å›žè°ƒ
 @param unifiedNativeAdView GDTUnifiedNativeAdView å®žä¾‹
 */
- (void)gdt_unifiedNativeAdViewWillExpose:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
/**
 å¹¿å‘Šç‚¹å‡»å›žè°ƒ
 @param unifiedNativeAdView GDTUnifiedNativeAdView å®žä¾‹
 */
- (void)gdt_unifiedNativeAdViewDidClick:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
/**
 å¹¿å‘Šè¯¦æƒ…页关闭回调
 @param unifiedNativeAdView GDTUnifiedNativeAdView å®žä¾‹
 */
- (void)gdt_unifiedNativeAdDetailViewClosed:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
/**
 å½“点击应用下载或者广告调用系统程序打开时调用
 @param unifiedNativeAdView GDTUnifiedNativeAdView å®žä¾‹
 */
- (void)gdt_unifiedNativeAdViewApplicationWillEnterBackground:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
/**
 å¹¿å‘Šè¯¦æƒ…页面即将展示回调
 @param unifiedNativeAdView GDTUnifiedNativeAdView å®žä¾‹
 */
- (void)gdt_unifiedNativeAdDetailViewWillPresentScreen:(GDTUnifiedNativeAdView *)unifiedNativeAdView;
/**
 è§†é¢‘广告播放状态更改回调
 @param nativeExpressAdView GDTUnifiedNativeAdView å®žä¾‹
 @param status è§†é¢‘广告播放状态
 @param userInfo è§†é¢‘广告信息
 */
- (void)gdt_unifiedNativeAdView:(GDTUnifiedNativeAdView *)unifiedNativeAdView playerStatusChanged:(GDTMediaPlayerStatus)status userInfo:(NSDictionary *)userInfo;
@end
@interface GDTUnifiedNativeAdView:UIView
/**
 ç»‘定的数据对象
 */
@property (nonatomic, strong, readonly) GDTUnifiedNativeAdDataObject *dataObject;
/**
 è§†é¢‘广告的媒体View,绑定数据对象后自动生成,可自定义布局
 */
@property (nonatomic, strong, readonly) GDTMediaView *mediaView;
/**
 è…¾è®¯å¹¿å‘Š LogoView,自动生成,可自定义布局
 */
@property (nonatomic, strong, readonly) GDTLogoView *logoView;
/**
 å¹¿å‘Š View æ—¶é—´å›žè°ƒå¯¹è±¡
 */
@property (nonatomic, weak) id<GDTUnifiedNativeAdViewDelegate> delegate;
/*
 *  viewControllerForPresentingModalView
 *  è¯¦è§£ï¼šå¼€å‘者需传入用来弹出目标页的ViewController,一般为当前ViewController
 */
@property (nonatomic, weak) UIViewController *viewController;
/**
 è‡ªæ¸²æŸ“2.0视图注册方法
 @param dataObject æ•°æ®å¯¹è±¡ï¼Œå¿…传字段
 @param clickableViews å¯ç‚¹å‡»çš„视图数组,此数组内的广告元素才可以响应广告对应的点击事件
 */
- (void)registerDataObject:(GDTUnifiedNativeAdDataObject *)dataObject
            clickableViews:(NSArray<UIView *> *)clickableViews;
/**
 æ³¨å†Œå¯ç‚¹å‡»çš„callToAction视图的方法
 å»ºè®®å¼€å‘者使用GDTUnifiedNativeAdDataObject中的callToAction字段来创建视图,并取代自定义的下载或打开等button,
 è°ƒç”¨æ­¤æ–¹æ³•之前必须先调用registerDataObject:clickableViews
 @param callToActionView CTA视图, ç³»ç»Ÿè‡ªåŠ¨å¤„ç†ç‚¹å‡»äº‹ä»¶
 */
- (void)registerClickableCallToActionView:(UIView *)callToActionView;
/**
 æ³¨é”€æ•°æ®å¯¹è±¡ï¼Œåœ¨ tableView、collectionView ç­‰åœºæ™¯éœ€è¦å¤ç”¨ GDTUnifiedNativeAdView æ—¶ï¼Œ
 éœ€è¦åœ¨åˆé€‚的时机,例如 cell çš„ prepareForReuse æ–¹æ³•内执行 unregisterDataObject æ–¹æ³•,
 å°†å¹¿å‘Šå¯¹è±¡ä¸Ž GDTUnifiedNativeAdView è§£ç»‘,具体可参考示例 demo çš„ UnifiedNativeAdBaseTableViewCell ç±»
 */
- (void)unregisterDataObject;
//#pragma mark - DEPRECATED
///**
// æ­¤æ–¹æ³•已经废弃
// è‡ªæ¸²æŸ“2.0视图注册方法
//
// @param dataObject æ•°æ®å¯¹è±¡ï¼Œå¿…传字段
// @param logoView logo视图
// @param viewController æ‰€åœ¨ViewController,必传字段。支持在register之后对其进行修改
// @param clickableViews å¯ç‚¹å‡»çš„视图数组,此数组内的广告元素才可以响应广告对应的点击事件
// */
//- (void)registerDataObject:(GDTUnifiedNativeAdDataObject *)dataObject
//                  logoView:(GDTLogoView *)logoView
//            viewController:(UIViewController *)viewController
//            clickableViews:(NSArray<UIView *> *)clickableViews GDT_DEPRECATED_MSG_ATTRIBUTE("use registerDataObject:clickableViews: instead.");
//
//
///**
// æ­¤æ–¹æ³•已经废弃
// è‡ªæ¸²æŸ“2.0视图注册方法
//
// @param dataObject æ•°æ®å¯¹è±¡ï¼Œå¿…传字段
// @param mediaView åª’体对象视图,此处放视频播放器的容器视图
// @param logoView logo视图
// @param viewController æ‰€åœ¨ViewController,必传字段。支持在register之后对其进行修改
// @param clickableViews å¯ç‚¹å‡»çš„视图数组,此数组内的广告元素才可以响应广告对应的点击事件
// */
//- (void)registerDataObject:(GDTUnifiedNativeAdDataObject *)dataObject
//                 mediaView:(GDTMediaView *)mediaView
//                  logoView:(GDTLogoView *)logoView
//            viewController:(UIViewController *)viewController
//            clickableViews:(NSArray<UIView *> *)clickableViews GDT_DEPRECATED_MSG_ATTRIBUTE("use registerDataObject:clickableViews: instead.");
@end
MIduo/Êý¾Ý/lib/GDT/lib/GDTVideoConfig.h
New file
@@ -0,0 +1,68 @@
//
//  GDTVideoConfig.h
//  GDTMobApp
//
//  Created by royqpwang on 2019/5/16.
//  Copyright Â© 2019 Tencent. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef NS_ENUM(NSInteger, GDTVideoAutoPlayPolicy) {
    GDTVideoAutoPlayPolicyWIFI = 0, // WIFI ä¸‹è‡ªåŠ¨æ’­æ”¾
    GDTVideoAutoPlayPolicyAlways = 1, // æ€»æ˜¯è‡ªåŠ¨æ’­æ”¾ï¼Œæ— è®ºç½‘ç»œæ¡ä»¶
    GDTVideoAutoPlayPolicyNever = 2, // ä»Žä¸è‡ªåŠ¨æ’­æ”¾ï¼Œæ— è®ºç½‘ç»œæ¡ä»¶
};
NS_ASSUME_NONNULL_BEGIN
@interface GDTVideoConfig : NSObject
/**
 è§†é¢‘自动播放策略,默认 GDTVideoAutoPlayPolicyAlways,
 é€‰æ‹© GDTVideoAutoPlayPolicyNever ç­–略时,需要开发者调用 GDTMediaView çš„ play\pause æ–¹æ³•触发视频播、暂停,
 æˆ–者开启 userControlEnable è®¾ç½®ï¼Œè®©ç”¨æˆ·ç‚¹å‡» MediaView æŽ§åˆ¶æ’­æ”¾çŠ¶æ€
 */
@property (nonatomic, assign) GDTVideoAutoPlayPolicy autoPlayPolicy;
/**
 æ˜¯å¦é™éŸ³æ’­æ”¾è§†é¢‘广告,视频初始状态是否静音,默认 YES,
 å¯é€šè¿‡ GDTMediaView muteEnable: æ–¹æ³•实时控制播放器j静音状态,
 */
@property (nonatomic, assign) BOOL videoMuted;
/**
 è§†é¢‘详情页播放时是否静音,默认NO,
 */
@property (nonatomic, assign) BOOL detailPageVideoMuted;
/**
 æ˜¯å¦å¯åŠ¨è‡ªåŠ¨ç»­æ’­åŠŸèƒ½ï¼Œå½“åœ¨ tableView ç­‰åœºæ™¯æ’­æ”¾å™¨è¢«é”€æ¯æ—¶ï¼Œå¹¿å‘Šå±•示时继续从上次播放位置续播,默认 NO
 */
@property (nonatomic, assign) BOOL autoResumeEnable;
/**
 å¹¿å‘Šå‘生点击行为时,是否展示视频详情页
 è®¾ä¸º NO æ—¶ï¼Œç”¨æˆ·ç‚¹å‡» clickableViews ä¼šç›´æŽ¥æ‰“å¼€ App Store æˆ–者广告落地页
 */
@property (nonatomic, assign) BOOL detailPageEnable;
/**
 æ˜¯å¦æ”¯æŒç”¨æˆ·ç‚¹å‡» MediaView æ”¹å˜è§†é¢‘播放暂停状态,默认 NO
 è®¾ä¸º YES æ—¶ï¼Œç”¨æˆ·ç‚¹å‡»ä¼šåˆ‡æ¢æ’­æ”¾å™¨æ’­æ”¾ã€æš‚停状态
 */
@property (nonatomic, assign) BOOL userControlEnable;
/**
 æ˜¯å¦å±•示播放进度条,默认 YES
 */
@property (nonatomic, assign) BOOL progressViewEnable;
/**
 æ˜¯å¦å±•示播放器封面图,默认 YES
 */
@property (nonatomic, assign) BOOL coverImageEnable;
@end
NS_ASSUME_NONNULL_END
MIduo/Êý¾Ý/lib/GDT/lib/libGDTMobSDK.a
Binary files differ