GDTSDKDefines.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // GDTSDKDefines.h
  3. // GDTMobApp
  4. //
  5. // Created by royqpwang on 2017/11/6.
  6. // Copyright © 2017年 Tencent. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #if defined(__has_attribute)
  10. #if __has_attribute(deprecated)
  11. #define GDT_DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
  12. #define GDT_DEPRECATED_ATTRIBUTE __attribute__((deprecated))
  13. #else
  14. #define GDT_DEPRECATED_MSG_ATTRIBUTE(s)
  15. #define GDT_DEPRECATED_ATTRIBUTE
  16. #endif
  17. #else
  18. #define GDT_DEPRECATED_MSG_ATTRIBUTE(s)
  19. #define GDT_DEPRECATED_ATTRIBUTE
  20. #endif
  21. #define GDTScreenHeight ([UIScreen mainScreen].bounds.size.height)
  22. #define GDTScreenWidth ([UIScreen mainScreen].bounds.size.width)
  23. #define GDTPerformSelector(target,selector,type,defualtValue) \
  24. ({\
  25. type result = defualtValue;\
  26. if ([target respondsToSelector:selector]) {\
  27. result = (type)[target performSelector:selector];\
  28. }\
  29. (result);\
  30. })
  31. /**
  32. * 如果 object 是非空的 NSString 或 NSNumber,则转换为 NSString;如果 object 是 nil,则返回 alter。
  33. *
  34. * @param object 要转换的对象
  35. * @param alter 备选对象,可以是任意 NSObject 或 nil
  36. */
  37. #define GDTAlterString(object, alter) ({\
  38. id theObject = object;\
  39. NSString *string = alter;\
  40. if ([theObject isKindOfClass:[NSString class]]) {\
  41. string = (NSString *)theObject;\
  42. } else if ([theObject isKindOfClass:[NSNumber class]]) {\
  43. string = [(NSNumber *)theObject stringValue];\
  44. }\
  45. string;\
  46. })\
  47. /*
  48. * 确保object是NSString,如果是NSNumber,转换成NSString,如果是其他类,返回空字符串
  49. */
  50. #define GDTString(object) GDTAlterString(object, @"")
  51. /**
  52. * 判断对象是否是有效的NSString
  53. *
  54. * @param string 对象
  55. * @return 对象不为空且是 NSString 类型且字符串长度大于 0 则返回 YES, 否则返回 NO
  56. */
  57. #define NSStringIsNotEmpty(string) ([string isKindOfClass:[NSString class]] && string.length)
  58. /**
  59. * 视频播放器状态
  60. *
  61. * 播放器只可能处于以下状态中的一种
  62. *
  63. */
  64. typedef NS_ENUM(NSUInteger, GDTMediaPlayerStatus) {
  65. GDTMediaPlayerStatusInitial = 0, // 初始状态
  66. GDTMediaPlayerStatusLoading = 1, // 加载中
  67. GDTMediaPlayerStatusStarted = 2, // 开始播放
  68. GDTMediaPlayerStatusPaused = 3, // 用户行为导致暂停
  69. GDTMediaPlayerStatusError = 4, // 播放出错
  70. GDTMediaPlayerStatusStoped = 5, // 播放停止
  71. GDTMediaPlayerStatusWillStart = 10, // 即将播放
  72. };
  73. typedef enum GDTSDKLoginType {
  74. GDTSDKLoginTypeUnknow = 0,
  75. GDTSDKLoginTypeWeiXin = 1, //微信账号
  76. GDTSDKLoginTypeQQ = 2, //QQ账号
  77. } GDTSDKLoginType;
  78. typedef NS_ENUM(NSUInteger, GDTVideoPlayPolicy) {
  79. GDTVideoPlayPolicyUnknow = 0, // 默认值,未设置
  80. GDTVideoPlayPolicyAuto = 1, // 用户角度看起来是自动播放
  81. GDTVideoPlayPolicyManual = 2 // 用户角度看起来是手动播放或点击后播放
  82. };
  83. typedef NS_ENUM(NSUInteger, GDTVideoRenderType) {
  84. GDTVideoRenderTypeUnknow = 0,
  85. GDTVideoRenderTypeSDK = 1,
  86. GDTVideoRenderTypeDeveloper = 2
  87. };
  88. typedef NS_ENUM (NSUInteger, GDTRewardAdType) {
  89. GDTRewardAdTypeVideo = 0,//激励视频
  90. GDTRewardAdTypePage = 1 //激励浏览
  91. };
  92. static inline BOOL isIPhoneXSeries() {
  93. if (@available(iOS 11.0, *)) {
  94. UIWindow *mainWindow = [[[UIApplication sharedApplication] delegate] window];
  95. if (mainWindow.safeAreaInsets.bottom > 0.0) {
  96. return YES;
  97. }
  98. }
  99. return NO;
  100. }
  101. typedef NS_ENUM(NSInteger, GDTAdBiddingLossReason) {
  102. GDTAdBiddingLossReasonLowPrice = 1, // 有广告回包,竞败(竞争力不足)
  103. GDTAdBiddingLossReasonNoAd = 2, // 无广告回包
  104. GDTAdBiddingLossReasonAdSuccNoBid = 101, // 有回包但未竞价
  105. GDTAdBiddingLossReasonOther = 10001 // 其他
  106. };