You've already forked Commercialization.topon
Compare commits
1 Commits
10a50a6f8b
...
1.3.2ng
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e9d5e63ac |
@@ -40,16 +40,6 @@ namespace AnyThinkAds.Api
|
||||
public readonly int abtest_id;
|
||||
|
||||
public readonly string reward_custom_data;
|
||||
public readonly int placement_type;
|
||||
public readonly string shared_placement_id;
|
||||
public readonly string bid_floor;
|
||||
public readonly int dismiss_type;
|
||||
public readonly int ad_source_type;
|
||||
public readonly string ad_source_custom_ext;
|
||||
public readonly string network_name;
|
||||
public readonly string show_custom_ext;
|
||||
public readonly string e_c;
|
||||
public readonly int s_id;
|
||||
|
||||
private string callbackJson;
|
||||
|
||||
@@ -104,16 +94,6 @@ namespace AnyThinkAds.Api
|
||||
|
||||
reward_custom_data = jsonData.ContainsKey("reward_custom_data") ? (string)jsonData["reward_custom_data"] : "";
|
||||
|
||||
placement_type = int.Parse(jsonData.ContainsKey("placement_type") ? jsonData["placement_type"].ToString() : "0");
|
||||
shared_placement_id = jsonData.ContainsKey("shared_placement_id") ? jsonData["shared_placement_id"].ToString() : "";
|
||||
bid_floor = jsonData.ContainsKey("bid_floor") ? jsonData["bid_floor"].ToString() : "";
|
||||
dismiss_type = int.Parse(jsonData.ContainsKey("dismiss_type") ? jsonData["dismiss_type"].ToString() : "0");
|
||||
ad_source_type = int.Parse(jsonData.ContainsKey("ad_source_type") ? jsonData["ad_source_type"].ToString() : "0");
|
||||
ad_source_custom_ext = jsonData.ContainsKey("ad_source_custom_ext") ? jsonData["ad_source_custom_ext"].ToString() : "";
|
||||
network_name = jsonData.ContainsKey("network_name") ? jsonData["network_name"].ToString() : "";
|
||||
show_custom_ext = jsonData.ContainsKey("show_custom_ext") ? jsonData["show_custom_ext"].ToString() : "";
|
||||
e_c = jsonData.ContainsKey("e_c") ? jsonData["e_c"].ToString() : "";
|
||||
s_id = int.Parse(jsonData.ContainsKey("s_id") ? jsonData["s_id"].ToString() : "0");
|
||||
}
|
||||
catch (System.Exception e) {
|
||||
System.Console.WriteLine("Exception caught: {0}", e);
|
||||
@@ -170,16 +150,6 @@ namespace AnyThinkAds.Api
|
||||
dataDictionary.Add("custom_rule", custom_rule);
|
||||
dataDictionary.Add("ext_info", ext_info);
|
||||
dataDictionary.Add("reward_custom_data", reward_custom_data);
|
||||
dataDictionary.Add("placement_type", placement_type);
|
||||
dataDictionary.Add("shared_placement_id", shared_placement_id);
|
||||
dataDictionary.Add("bid_floor", bid_floor);
|
||||
dataDictionary.Add("dismiss_type", dismiss_type);
|
||||
dataDictionary.Add("ad_source_type", ad_source_type);
|
||||
dataDictionary.Add("ad_source_custom_ext", ad_source_custom_ext);
|
||||
dataDictionary.Add("network_name", network_name);
|
||||
dataDictionary.Add("show_custom_ext", show_custom_ext);
|
||||
dataDictionary.Add("e_c", e_c);
|
||||
dataDictionary.Add("s_id", s_id);
|
||||
|
||||
return dataDictionary;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 03106b07c17e248179d51e195b5ea505
|
||||
guid: 6b000e45df70e44c683d126c70c6c7c5
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -198,13 +198,12 @@ namespace AnyThinkAds.iOS {
|
||||
public void showDebuggerUI()
|
||||
{
|
||||
Debug.Log("Unity:ATSDKAPIClient::showDebuggerUI()");
|
||||
ATManager.showDebuggerUI("");
|
||||
ATManager.showDebuggerUI();
|
||||
}
|
||||
|
||||
public void showDebuggerUI(string debugKey)
|
||||
{
|
||||
Debug.Log("Unity:ATSDKAPIClient::showDebuggerUI(debugKey)");
|
||||
ATManager.showDebuggerUI(debugKey);
|
||||
//TODO 待iOS支持线上测试的SDK版本上线
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "ATBannerAdWrapper.h"
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkBanner/AnyThinkBanner.h>
|
||||
#import "ATUnityUtilities.h"
|
||||
//5.6.6版本以上支持 admob 自适应banner (用到时再import该头文件)
|
||||
//#import <GoogleMobileAds/GoogleMobileAds.h>
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
|
||||
#import "ATBaseUnityWrapper.h"
|
||||
#import "ATUnityUtilities.h"
|
||||
#import "ATUnitySafeThreadDictionary.h"
|
||||
@interface ATBaseUnityWrapper()
|
||||
@property(nonatomic, strong) ATUnitySafeThreadDictionary<NSString*, NSValue*> *callbacks;
|
||||
@property(nonatomic, readonly) NSMutableDictionary<NSString*, NSValue*> *callbacks;
|
||||
@property(nonatomic, readonly) dispatch_queue_t callbackAccessQueue;
|
||||
@end
|
||||
@implementation ATBaseUnityWrapper
|
||||
+(instancetype) sharedInstance {
|
||||
@@ -20,29 +20,35 @@
|
||||
-(instancetype) init {
|
||||
self = [super init];
|
||||
if (self != nil) {
|
||||
_callbacks = [ATUnitySafeThreadDictionary<NSString*, NSValue*> dictionary];
|
||||
|
||||
_callbacks = [NSMutableDictionary<NSString*, NSValue*> dictionary];
|
||||
_callbackAccessQueue = dispatch_queue_create("com.anythink.UnityPackage", DISPATCH_QUEUE_CONCURRENT);
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void) setCallBack:(void (*)(const char *, const char *))callback forKey:(NSString *)key {
|
||||
__weak ATBaseUnityWrapper* weakSelf = self;
|
||||
if (callback != NULL && [key length] > 0) {
|
||||
[self.callbacks setValue:[NSValue valueWithPointer:(void*)callback] forKey:key];
|
||||
}
|
||||
if (callback != NULL && [key length] > 0)
|
||||
dispatch_barrier_async(_callbackAccessQueue, ^{
|
||||
weakSelf.callbacks[key] = [NSValue valueWithPointer:(void*)callback];
|
||||
});
|
||||
}
|
||||
|
||||
-(void) removeCallbackForKey:(NSString *)key {
|
||||
if ([key length] > 0) {
|
||||
[self.callbacks removeObjectForKey:key];
|
||||
}
|
||||
__weak ATBaseUnityWrapper* weakSelf = self;
|
||||
if ([key length] > 0)
|
||||
dispatch_barrier_async(_callbackAccessQueue, ^{
|
||||
[weakSelf.callbacks removeObjectForKey:key];
|
||||
});
|
||||
}
|
||||
|
||||
-(void(*)(const char*, const char *)) callbackForKey:(NSString*)key {
|
||||
__block void(*callback)(const char*, const char *) = NULL;
|
||||
if ([key length] > 0) {
|
||||
callback = (void(*)(const char*, const char *))[self.callbacks[key] pointerValue];
|
||||
__weak ATBaseUnityWrapper* weakSelf = self;
|
||||
dispatch_barrier_sync(_callbackAccessQueue, ^{
|
||||
callback = (void(*)(const char*, const char *))[weakSelf.callbacks[key] pointerValue];
|
||||
});
|
||||
}
|
||||
return callback;
|
||||
}
|
||||
@@ -55,100 +61,89 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(void) invokeCallback:(NSString*)callback placementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary*)extraParams {
|
||||
|
||||
__block NSDictionary* extra = extraParams;
|
||||
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
@try {
|
||||
-(void) invokeCallback:(NSString*)callback placementID:(NSString*)placementID error:(NSError*)error extra:(NSDictionary*)extra {
|
||||
if ([self callbackForKey:placementID] != NULL) {
|
||||
if ([callback isKindOfClass:[NSString class]] && [callback length] > 0) {
|
||||
|
||||
if ([self callbackForKey:placementID] != NULL) {
|
||||
if ([callback isKindOfClass:[NSString class]] && [callback length] > 0) {
|
||||
|
||||
NSMutableDictionary *paraDict = [NSMutableDictionary dictionaryWithObject:callback forKey:@"callback"];
|
||||
|
||||
NSMutableDictionary *msgDict = [NSMutableDictionary dictionary];
|
||||
|
||||
if (![ATUnityUtilities isEmpty:extra]) {
|
||||
|
||||
// 过滤SDK返回参数的 user_load_extra_data 中不支持的类型
|
||||
if (extra[kATUnityUserExtraDataKey] != nil) {
|
||||
NSMutableDictionary *extraDictM = [NSMutableDictionary dictionaryWithDictionary:extra];
|
||||
NSMutableDictionary *extraDataTemp = [NSMutableDictionary dictionary];
|
||||
NSMutableDictionary *extraDataDictM = [NSMutableDictionary dictionaryWithDictionary:extra[kATUnityUserExtraDataKey]];
|
||||
for (NSString *key in extraDataDictM.allKeys) {
|
||||
if ([extraDataDictM[key] isKindOfClass:[NSString class]] || [extraDataDictM[key] isKindOfClass:[NSNumber class]]) {
|
||||
[extraDataTemp setValue:extraDataDictM[key] forKey:key];
|
||||
}
|
||||
}
|
||||
if ([extraDataTemp count]) {
|
||||
[extraDictM setValue:extraDataTemp forKey:kATUnityUserExtraDataKey];
|
||||
} else {
|
||||
[extraDictM removeObjectForKey:kATUnityUserExtraDataKey];
|
||||
}
|
||||
extra = extraDictM;
|
||||
}
|
||||
|
||||
if (extra[@"extra"] != nil) {
|
||||
msgDict[@"extra"] = extra[@"extra"];
|
||||
msgDict[@"rewarded"] = extra[@"rewarded"];
|
||||
} else {
|
||||
msgDict[@"extra"] = extra;
|
||||
NSMutableDictionary *paraDict = [NSMutableDictionary dictionaryWithObject:callback forKey:@"callback"];
|
||||
|
||||
NSMutableDictionary *msgDict = [NSMutableDictionary dictionary];
|
||||
|
||||
if (![ATUnityUtilities isEmpty:extra]) {
|
||||
|
||||
// 过滤SDK返回参数的 user_load_extra_data 中不支持的类型
|
||||
if (extra[kATUnityUserExtraDataKey] != nil) {
|
||||
NSMutableDictionary *extraDictM = [NSMutableDictionary dictionaryWithDictionary:extra];
|
||||
NSMutableDictionary *extraDataTemp = [NSMutableDictionary dictionary];
|
||||
NSMutableDictionary *extraDataDictM = [NSMutableDictionary dictionaryWithDictionary:extra[kATUnityUserExtraDataKey]];
|
||||
for (NSString *key in extraDataDictM.allKeys) {
|
||||
if ([extraDataDictM[key] isKindOfClass:[NSString class]] || [extraDataDictM[key] isKindOfClass:[NSNumber class]]) {
|
||||
[extraDataTemp setValue:extraDataDictM[key] forKey:key];
|
||||
}
|
||||
}
|
||||
|
||||
paraDict[@"msg"] = msgDict;
|
||||
|
||||
if ([placementID isKindOfClass:[NSString class]] && ![ATUnityUtilities isEmpty:placementID]) {
|
||||
msgDict[@"placement_id"] = placementID;
|
||||
};
|
||||
|
||||
if ([error isKindOfClass:[NSError class]]) {
|
||||
|
||||
NSMutableDictionary *errorDict = [NSMutableDictionary dictionaryWithObject:[NSString stringWithFormat:@"%ld", error.code] forKey:@"code"];
|
||||
|
||||
if (![ATUnityUtilities isEmpty:error.userInfo[NSLocalizedDescriptionKey]]) {
|
||||
errorDict[@"desc"] = [NSString stringWithFormat:@"%@",error.userInfo[NSLocalizedDescriptionKey]];
|
||||
} else {
|
||||
errorDict[@"desc"] = @"";
|
||||
}
|
||||
if (![ATUnityUtilities isEmpty:error.userInfo[NSLocalizedFailureReasonErrorKey]]) {
|
||||
errorDict[@"reason"] = [NSString stringWithFormat:@"%@",error.userInfo[NSLocalizedFailureReasonErrorKey]];
|
||||
} else {
|
||||
errorDict[@"reason"] = @"";
|
||||
}
|
||||
msgDict[@"error"] = errorDict;
|
||||
if ([extraDataTemp count]) {
|
||||
[extraDictM setValue:extraDataTemp forKey:kATUnityUserExtraDataKey];
|
||||
} else {
|
||||
[extraDictM removeObjectForKey:kATUnityUserExtraDataKey];
|
||||
}
|
||||
|
||||
[self callbackForKey:placementID]([self scriptWrapperClass].UTF8String, paraDict.jsonString.UTF8String);
|
||||
extra = extraDictM;
|
||||
}
|
||||
|
||||
if (extra[@"extra"] != nil) {
|
||||
msgDict[@"extra"] = extra[@"extra"];
|
||||
msgDict[@"rewarded"] = extra[@"rewarded"];
|
||||
} else {
|
||||
msgDict[@"extra"] = extra;
|
||||
}
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
|
||||
} @finally {}
|
||||
|
||||
});
|
||||
paraDict[@"msg"] = msgDict;
|
||||
|
||||
if ([placementID isKindOfClass:[NSString class]] && ![ATUnityUtilities isEmpty:placementID]) {
|
||||
msgDict[@"placement_id"] = placementID;
|
||||
};
|
||||
|
||||
if ([error isKindOfClass:[NSError class]]) {
|
||||
|
||||
NSMutableDictionary *errorDict = [NSMutableDictionary dictionaryWithObject:[NSString stringWithFormat:@"%ld", error.code] forKey:@"code"];
|
||||
|
||||
if (![ATUnityUtilities isEmpty:error.userInfo[NSLocalizedDescriptionKey]]) {
|
||||
errorDict[@"desc"] = [NSString stringWithFormat:@"%@",error.userInfo[NSLocalizedDescriptionKey]];
|
||||
} else {
|
||||
errorDict[@"desc"] = @"";
|
||||
}
|
||||
if (![ATUnityUtilities isEmpty:error.userInfo[NSLocalizedFailureReasonErrorKey]]) {
|
||||
errorDict[@"reason"] = [NSString stringWithFormat:@"%@",error.userInfo[NSLocalizedFailureReasonErrorKey]];
|
||||
} else {
|
||||
errorDict[@"reason"] = @"";
|
||||
}
|
||||
msgDict[@"error"] = errorDict;
|
||||
}
|
||||
|
||||
[self callbackForKey:placementID]([self scriptWrapperClass].UTF8String, paraDict.jsonString.UTF8String);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSArray *)jsonStrToArray:(NSString *)jsonString{
|
||||
|
||||
|
||||
|
||||
NSError *error;
|
||||
NSArray *array = [NSArray array];
|
||||
|
||||
@try {
|
||||
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
|
||||
|
||||
array = [NSJSONSerialization JSONObjectWithData:jsonData
|
||||
options:NSJSONReadingMutableContainers
|
||||
error:&error];
|
||||
options:NSJSONReadingMutableContainers
|
||||
error:&error];
|
||||
if(error){
|
||||
return [NSArray array];
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
NSLog(@"jsonStrToArray --- exception:%@",exception);
|
||||
} @finally {}
|
||||
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#import "ATInterstitialAdWrapper.h"
|
||||
#import "ATUnityUtilities.h"
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkInterstitial/AnyThinkInterstitial.h>
|
||||
|
||||
NSString *const kLoadUseRVAsInterstitialKey = @"UseRewardedVideoAsInterstitial";
|
||||
NSString *const kInterstitialExtraAdSizeKey = @"interstitial_ad_size";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import "ATBaseUnityWrapper.h"
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkNative/ATNativeADDelegate.h>
|
||||
|
||||
extern NSString *const kParsedPropertiesFrameKey;
|
||||
extern NSString *const kParsedPropertiesBackgroundColorKey;
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
#import "ATUnityUtilities.h"
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkNative/ATAdManager+Native.h>
|
||||
#import <AnyThinkNative/ATNativeAdConfiguration.h>
|
||||
#import <AnyThinkNative/ATNativeADView.h>
|
||||
#import "ATAutolayoutCategories.h"
|
||||
#import "ATUnityManager.h"
|
||||
#import "ATNativeSelfRenderView.h"
|
||||
@@ -184,12 +186,9 @@ UIEdgeInsets SafeAreaInsets_ATUnityNative() {
|
||||
|
||||
CGRect adViewFrame = CGRectFromString(at_parseUnityProperties(metrics[@"parent"])[kParsedPropertiesFrameKey]);
|
||||
CGRect mediaViewFrame = CGRectFromString(parsedMetrics[kNativeAssetMainImage][kParsedPropertiesFrameKey]);
|
||||
CGRect logoFrame = CGRectFromString(parsedMetrics[kNativeAssetSponsorImage][kParsedPropertiesFrameKey]);
|
||||
ATNativeADConfiguration *configuration = [ATNativeADConfiguration new];
|
||||
configuration.ADFrame = CGRectMake(0, 0, CGRectGetWidth(adViewFrame), CGRectGetHeight(adViewFrame));
|
||||
configuration.mediaViewFrame = mediaViewFrame;
|
||||
configuration.logoViewFrame = logoFrame;
|
||||
|
||||
configuration.delegate = self;
|
||||
if (extraDict[kATNativeAdAdaptiveHeightKey] != nil) {
|
||||
configuration.sizeToFit = [extraDict[kATNativeAdAdaptiveHeightKey] boolValue];
|
||||
@@ -207,13 +206,13 @@ UIEdgeInsets SafeAreaInsets_ATUnityNative() {
|
||||
|
||||
selfRenderView.backgroundColor = [UIColor colorWithHexString:parsedMetrics[kNativeAssetMainImage][@"background_color"]];
|
||||
|
||||
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"AnyThinkSDK" ofType:@"bundle"]];
|
||||
|
||||
UIImage * img = [UIImage imageNamed:@"icon_webview_close" inBundle:bundle compatibleWithTraitCollection:nil];
|
||||
[selfRenderView.dislikeButton setImage:img forState:0];
|
||||
|
||||
ATNativeADView *adview = [self getNativeADView:configuration offer:offer selfRenderView:selfRenderView withPlacementId:placementID];
|
||||
[self prepareWithNativePrepareInfo:selfRenderView nativeADView:adview];
|
||||
[offer rendererWithConfiguration:configuration selfRenderView:selfRenderView nativeADView:adview];
|
||||
// 是否隐藏内部渲染logoView
|
||||
if (logoFrame.size.width == 0 || logoFrame.size.height == 0) {
|
||||
adview.logoImageView.hidden = YES;
|
||||
}
|
||||
adview.ctaLabel.hidden = [adview.nativeAd.ctaText length] == 0;
|
||||
if (adview != nil) {
|
||||
[self removeNativeAdViewWithPlacementID:placementID];
|
||||
@@ -252,6 +251,7 @@ UIEdgeInsets SafeAreaInsets_ATUnityNative() {
|
||||
prepareInfo.ratingLabel = selfRenderView.ratingLabel;
|
||||
prepareInfo.iconImageView = selfRenderView.iconImageView;
|
||||
prepareInfo.mainImageView = selfRenderView.mainImageView;
|
||||
prepareInfo.logoImageView = selfRenderView.logoImageView;
|
||||
prepareInfo.dislikeButton = selfRenderView.dislikeButton;
|
||||
prepareInfo.ctaLabel = selfRenderView.ctaLabel;
|
||||
prepareInfo.mediaView = selfRenderView.mediaView;
|
||||
@@ -290,6 +290,8 @@ UIEdgeInsets SafeAreaInsets_ATUnityNative() {
|
||||
|
||||
selfRenderView.mediaView = mediaView;
|
||||
[selfRenderView addSubview:mediaView];
|
||||
//避免被遮挡
|
||||
[selfRenderView bringSubviewToFront:selfRenderView.logoImageView];
|
||||
}
|
||||
|
||||
[nativeADView registerClickableViewArray:array];
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkNative/AnyThinkNative.h>
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@@ -21,6 +21,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property(nonatomic, strong) UILabel *ratingLabel;
|
||||
@property(nonatomic, strong) UIImageView *iconImageView;
|
||||
@property(nonatomic, strong) UIImageView *mainImageView;
|
||||
@property(nonatomic, strong) UIImageView *logoImageView;
|
||||
@property(nonatomic, strong) UIImageView *sponsorImageView;
|
||||
@property(nonatomic, strong) UIButton *dislikeButton;
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
//
|
||||
|
||||
#import "ATNativeSelfRenderView.h"
|
||||
#import <AnyThinkSDK/ATImageLoader.h>
|
||||
#import "ATNativeAdWrapper.h"
|
||||
#import "ATAutolayoutCategories.h"
|
||||
#import "ATUnityUtilities.h"
|
||||
@@ -96,26 +97,25 @@
|
||||
self.mainImageView.translatesAutoresizingMaskIntoConstraints = false;
|
||||
[self addSubview:self.mainImageView];
|
||||
|
||||
self.logoImageView = [[UIImageView alloc]init];
|
||||
self.logoImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
self.logoImageView.userInteractionEnabled = YES;
|
||||
self.logoImageView.translatesAutoresizingMaskIntoConstraints = false;
|
||||
[self addSubview:self.logoImageView];
|
||||
|
||||
self.dislikeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
self.dislikeButton.translatesAutoresizingMaskIntoConstraints = false;
|
||||
self.dislikeButton.backgroundColor = [UIColor whiteColor];
|
||||
[self.dislikeButton setImage:[self getCloseImage] forState:0];
|
||||
[self addSubview:self.dislikeButton];
|
||||
}
|
||||
|
||||
|
||||
- (UIImage *)getCloseImage {
|
||||
UIImage *closeImg = [UIImage imageNamed:@"icon_webview_close" inBundle:[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"AnyThinkSDK" ofType:@"bundle"]] compatibleWithTraitCollection:nil];
|
||||
|
||||
NSString *imageBase64String = @"iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAAXNSR0IArs4c6QAAAIRlWElmTU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAEigAwAEAAAAAQAAAEgAAAAAYwsr7AAAAAlwSFlzAAALEwAACxMBAJqcGAAAABxpRE9UAAAAAgAAAAAAAAAkAAAAKAAAACQAAAAkAAACiSuooU0AAAJVSURBVHgB5JqhbsMwEECLisqGhldYNNaxqlJRP2CoY8Wjo/ub4UllI5VGy8f6ASMBA0XbvWiuXKtpnOQcO+lJJ8eRY989351dqYNBuzKU5W5EJ6IPogvRx39dS2ureb+U94zlm1vR3glQcA5Hn0RtCHWfmetOdCTaSbGh1IXg+52B1QlQgLkX1YoUX0iMIyVZO8moignGhWhACas0hMKJUa6hsfvYRJ2KJkTNVDQ2iLL1sRFbWxXyPMWoKYKFra3VJlIqRhEuct73PTYHT7mJLOJrUKrj8CGIcISm6nRVu/BFVfoQOS5EtUgib93J+9KnnjaSkXzdxYLsu4H4ho+1ZChfdeko94XijsNHfK0sXbgEus7W7eNrJelz3SmCWKkeXUNquaC8U61P9x0XQlm/9H5ERb/G6DHgONWGl4qRSvRsNpv3/X7/tdvtPufz+YssaAxQb99ElNe6GEWNowc4v5ZkWfYdCtK5tRQ2ozCKVE4udtPikz+GgOTCMWvOZjONiD37M2SpQH+93W4/jLF2qwmpCA5raPggc8DiREbSU6kP4/H4GUNtOOZZA1IRnMPh8LNarV61/JB5Toq1SnoZ46g5ISC1CIdgmYgehZBSiSAzjzakluHA4iTNVOFoQ4oABx7H04zfIEEAMW/TSIoEx/DgfwR5rpkXQdq6kCLDgUVeh6bsdGitCikBODCBTV6MggNiA3whJQIHJgsANf55gfO+Wgap6KIZ4J7jYzNs2gUEyEuQzKXSbiPBAWAOyIek+hhfSBHhGJ/904Pd19QySAnAWf8BAAD///Z/hqsAAAJUSURBVOWaoVLDQBCGT6HqUGgqq3CVnc5U9QFQwVVja3mMGjSamTpMXwBbXB8AU4Gogv1DfyYtuSS929xd2p25WSYkd/992d3bMBhjzCzmWK1Wb98W2263n+PxeB5Tn6wdD9ByuXy1sPm7nAAkcx8DUhM4pBQREtiEB2SDs9vtvgCDYIo+EqQpAE1kBKtDVXCyLHtCzUkIUg5oGApQHRzqSAgS2JgBhbXpm8KhhkQggY25pqi2/KlwqCMBSDeixVzJeKAobe8KhzoiQxIZv4ZipF6ofeFQUyRIeYHe89GvQ1pwIkK6JRx4pJlaBGnDobbAkdQDmKKppNlisXguNnj8GU0g+hxZ0OtFVEHabDYfvvPvnz9IL0IaaEwOkYRCrwWH+qogjUajOe/z8AfpJfPkhjTzPs3W6/U7wcBrwxGNeQTaIPX7/Ufe4+jz7y95ttTu5KpaCrQFhxqLkLDWixh/5+HBwGoqUSSzzxDqCm+z0ctSXAvR8684H9PyjiIA6uiojB6CQhRF+RtRZKiVtYdw6PEN0tUocNVdenIRSJkfXhAk7PVku5RUQ2phr06Giu7dG8kcrmHf9nPYW+2pVUfunOvRyXXHBkvlMySxSMKeVO2c+qNG/Y4LvXOIJPXIOQaJvO1i4YZm1NMg1pNVutRtQys0BzX0Dl1oJqHRuc/RIIqUSzGaoClYSjUBiZMhBVCoNdASNWpswJDnsUAlDaYMGFJvKqPtzwWsMZCRZMSIrlpDVGnCQqR0HkoVNRROvHGcLtgo6lZZ7eL1yf5ePIP/IwgaKT805vxmzF7SHAAAAABJRU5ErkJggg==";
|
||||
|
||||
UIImage *closeImage = [UIImage imageWithData:[[NSData alloc] initWithBase64EncodedString:imageBase64String options:NSDataBase64DecodingIgnoreUnknownCharacters]];
|
||||
NSLog(@"getCloseImage--%@",closeImage);
|
||||
return closeImage;
|
||||
self.dislikeButton.backgroundColor = [UIColor whiteColor];
|
||||
[self.dislikeButton setImage:closeImg forState:0];
|
||||
[self addSubview:self.dislikeButton];
|
||||
}
|
||||
|
||||
|
||||
- (void)setupUI{
|
||||
|
||||
|
||||
if (self.nativeAdOffer.nativeAd.icon) {
|
||||
self.iconImageView.image = self.nativeAdOffer.nativeAd.icon;
|
||||
}
|
||||
@@ -125,6 +125,8 @@
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.iconImageView setImage:image];
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}];
|
||||
|
||||
@@ -137,12 +139,28 @@
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.mainImageView setImage:image];
|
||||
});
|
||||
|
||||
}
|
||||
}];
|
||||
|
||||
|
||||
NSLog(@"🔥----imageUrl:%@",self.nativeAdOffer.nativeAd.imageUrl);
|
||||
|
||||
[[ATImageLoader shareLoader]loadImageWithURL:[NSURL URLWithString:self.nativeAdOffer.nativeAd.logoUrl] completion:^(UIImage *image, NSError *error) {
|
||||
|
||||
if (!error) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.logoImageView setImage:image];
|
||||
});
|
||||
}
|
||||
}];
|
||||
|
||||
|
||||
|
||||
NSLog(@"🔥----logoUrl:%@",self.nativeAdOffer.nativeAd.logoUrl);
|
||||
|
||||
|
||||
|
||||
self.advertiserLabel.text = self.nativeAdOffer.nativeAd.advertiser;
|
||||
|
||||
|
||||
@@ -164,8 +182,7 @@
|
||||
self.textLabel.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
-(void) configureMetrics:(NSDictionary *)metrics {
|
||||
|
||||
NSDictionary<NSString*, UIView*> *views = @{kNativeAssetTitle:_titleLabel, kNativeAssetText:_textLabel, kNativeAssetCta:_ctaLabel, kNativeAssetRating:_ratingLabel, kNativeAssetAdvertiser:_advertiserLabel, kNativeAssetIcon:_iconImageView, kNativeAssetMainImage:_mainImageView, kNativeAssetDislike:_dislikeButton};
|
||||
NSDictionary<NSString*, UIView*> *views = @{kNativeAssetTitle:_titleLabel, kNativeAssetText:_textLabel, kNativeAssetCta:_ctaLabel, kNativeAssetRating:_ratingLabel, kNativeAssetAdvertiser:_advertiserLabel, kNativeAssetIcon:_iconImageView, kNativeAssetMainImage:_mainImageView, kNativeAssetSponsorImage:_logoImageView, kNativeAssetDislike:_dislikeButton};
|
||||
[views enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
|
||||
CGRect frame = CGRectFromString(metrics[key][kParsedPropertiesFrameKey]);
|
||||
[self addConstraintsWithVisualFormat:[NSString stringWithFormat:@"|-x-[%@(w)]", key] options:0 metrics:@{@"x":@(frame.origin.x), @"w":@(frame.size.width)} views:views];
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#import "ATRewardedVideoWrapper.h"
|
||||
#import "ATUnityUtilities.h"
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkRewardedVideo/AnyThinkRewardedVideo.h>
|
||||
|
||||
NSString *const kLoadExtraUserIDKey = @"UserId";
|
||||
NSString *const kLoadExtraMediaExtraKey = @"UserExtraData";
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#import "ATSplashAdWrapper.h"
|
||||
#import "ATUnityUtilities.h"
|
||||
#import <AnyThinkSDK/AnyThinkSDK.h>
|
||||
#import <AnyThinkSplash/AnyThinkSplash.h>
|
||||
|
||||
@interface ATSplashAdWrapper () <ATSplashDelegate>
|
||||
|
||||
@@ -69,7 +69,11 @@
|
||||
}
|
||||
NSString *defaultAdSourceConfig = extra[@"default_adSource_config"];
|
||||
NSLog(@"ATSplashAdWrapper::extra = %@", extra);
|
||||
[[ATAdManager sharedManager] loadADWithPlacementID:placementID extra:extra delegate:self containerView:nil];
|
||||
[[ATAdManager sharedManager] loadADWithPlacementID:placementID
|
||||
extra:extra
|
||||
delegate:self
|
||||
containerView:nil
|
||||
defaultAdSourceConfig:defaultAdSourceConfig];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -99,7 +99,9 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
return [NSNumber numberWithBool:[self startSDKWithAppID:firstObject appKey:lastObject]];
|
||||
} else if ([selector isEqualToString:@"subjectToGDPR"]) {
|
||||
return [NSNumber numberWithBool:[self subjectToGDPR]];
|
||||
}else if ([selector isEqualToString:@"showGDPRConsentDialog:"]) {
|
||||
} else if ([selector isEqualToString:@"presentDataConsentDialog"]) {
|
||||
[self presentDataConsentDialog];
|
||||
} else if ([selector isEqualToString:@"showGDPRConsentDialog:"]) {
|
||||
[self showGDPRConsentDialog:callback];
|
||||
} else if ([selector isEqualToString:@"getUserLocation:"]) {
|
||||
[self getUserLocation:callback];
|
||||
@@ -138,17 +140,17 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
} else if ([selector isEqualToString:@"getArea:"]) {
|
||||
[self getArea:callback];
|
||||
} else if ([selector isEqualToString:@"setWXStatus:"]) {
|
||||
[self setWXStatus:[NSNumber numberWithDouble:firstObject.boolValue]];
|
||||
[self setWXStatus:firstObject];
|
||||
} else if ([selector isEqualToString:@"setLocationLongitude:dimension:"]) {
|
||||
[self setLocationLongitude:[NSNumber numberWithDouble:firstObject.doubleValue] dimension:[NSNumber numberWithDouble:lastObject.doubleValue]];
|
||||
}else if ([selector isEqualToString:@"showDebuggerUI:"]) {
|
||||
[self showDebuggerUI:firstObject];
|
||||
} else if ([selector isEqualToString:@"showDebuggerUI"]) {
|
||||
[self showDebuggerUI];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(BOOL) startSDKWithAppID:(NSString*)appID appKey:(NSString*)appKey {
|
||||
[[ATSDKGlobalSetting sharedManager] setSystemPlatformType:ATSystemPlatformTypeUnity];
|
||||
[[ATAPI sharedInstance]setSystemPlatformType:ATSystemPlatformTypeUnity];
|
||||
return [[ATAPI sharedInstance] startWithAppID:appID appKey:appKey error:nil];
|
||||
}
|
||||
|
||||
@@ -156,6 +158,12 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
return [@[@"AT", @"BE", @"BG", @"HR", @"CY", @"CZ", @"DK", @"EE", @"FI", @"FR", @"DE", @"GR", @"HU", @"IS", @"IE", @"IT", @"LV", @"LI", @"LT", @"LU", @"MT", @"NL", @"NO", @"PL", @"PT", @"RO", @"SK", @"SI", @"ES", @"SE", @"GB", @"UK"] containsObject:[[CTTelephonyNetworkInfo new].subscriberCellularProvider.isoCountryCode length] > 0 ? [[CTTelephonyNetworkInfo new].subscriberCellularProvider.isoCountryCode uppercaseString] : @""];
|
||||
}
|
||||
|
||||
-(void) presentDataConsentDialog {
|
||||
[[ATAPI sharedInstance] presentDataConsentDialogInViewController:[UIApplication sharedApplication].delegate.window.rootViewController dismissalCallback:^{
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
-(void) showGDPRConsentDialog:(void(*)(const char*))callback {
|
||||
[[ATAPI sharedInstance] showGDPRConsentDialogInViewController:[UIApplication sharedApplication].delegate.window.rootViewController dismissalCallback:^{
|
||||
if (callback != NULL) { callback(@"".UTF8String); }
|
||||
@@ -181,24 +189,24 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
}
|
||||
|
||||
-(void) setChannel:(NSString*)channel {
|
||||
[[ATSDKGlobalSetting sharedManager] setChannel:channel];
|
||||
[[ATAPI sharedInstance] setChannel:channel];
|
||||
}
|
||||
|
||||
-(void) setSubChannel:(NSString*)subChannel {
|
||||
[[ATSDKGlobalSetting sharedManager] setSubchannel:subChannel];
|
||||
[[ATAPI sharedInstance] setSubchannel:subChannel];
|
||||
}
|
||||
|
||||
-(void) setCustomData:(NSString*)customDataStr {
|
||||
if ([customDataStr isKindOfClass:[NSString class]] && [customDataStr length] > 0) {
|
||||
NSDictionary *customData = [NSJSONSerialization JSONObjectWithData:[customDataStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
|
||||
[[ATSDKGlobalSetting sharedManager] setCustomData:customData];
|
||||
[[ATAPI sharedInstance] setCustomData:customData];
|
||||
}
|
||||
}
|
||||
|
||||
-(void) setCustomData:(NSString*)customDataStr forPlacementID:(NSString*)placementID {
|
||||
if ([customDataStr isKindOfClass:[NSString class]] && [customDataStr length] > 0) {
|
||||
NSDictionary *customData = [NSJSONSerialization JSONObjectWithData:[customDataStr dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
|
||||
[[ATSDKGlobalSetting sharedManager] setCustomData:customData forPlacementID:placementID];
|
||||
[[ATAPI sharedInstance] setCustomData:customData forPlacementID:placementID];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,7 +219,7 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
}
|
||||
|
||||
-(void) setDataConsent:(NSNumber*)dataConsent {
|
||||
[[ATAPI sharedInstance] setDataConsentSet:[@{@0:@(ATDataConsentSetPersonalized), @1:@(ATDataConsentSetNonpersonalized), @2:@(ATDataConsentSetUnknown)}[dataConsent] integerValue] consentString:@{}];
|
||||
[[ATAPI sharedInstance] setDataConsentSet:[@{@0:@(ATDataConsentSetPersonalized), @1:@(ATDataConsentSetNonpersonalized), @2:@(ATDataConsentSetUnknown)}[dataConsent] integerValue] consentString:nil];
|
||||
}
|
||||
|
||||
-(BOOL) inDataProtectionArea {
|
||||
@@ -222,7 +230,7 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
NSLog(@"ATUnityManager::deniedUploadDeviceInfo = %@", deniedInfo);
|
||||
if (![ATUnityUtilities isEmpty:deniedInfo]) {
|
||||
NSArray *deniedInfoArray = [NSJSONSerialization JSONObjectWithData:[deniedInfo dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
|
||||
[[ATSDKGlobalSetting sharedManager] setDeniedUploadInfoArray:deniedInfoArray];
|
||||
[[ATAPI sharedInstance] setDeniedUploadInfoArray:deniedInfoArray];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,7 +266,7 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
NSLog(@"ATUnityManager::setExcludeBundleIdArray = %@", bundleIds);
|
||||
if (![ATUnityUtilities isEmpty:bundleIds]) {
|
||||
NSArray *bundleIdArray = [NSJSONSerialization JSONObjectWithData:[bundleIds dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
|
||||
[[ATSDKGlobalSetting sharedManager] setExludeAppleIdArray:bundleIdArray];
|
||||
[[ATAPI sharedInstance] setExludeAppleIdArray:bundleIdArray];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,60 +301,38 @@ char * at_get_string_message_for_unity(const char *msg, void(*callback)(const ch
|
||||
}];
|
||||
}
|
||||
|
||||
-(void) setWXStatus:(NSNumber *)flag {
|
||||
NSLog(@"ATUnityManager::setWXStatus=%d",flag.boolValue);
|
||||
[ATSDKGlobalSetting sharedManager].isInstallWX = flag.boolValue;
|
||||
-(void) setWXStatus:(NSString *)statusStr {
|
||||
NSLog(@"ATUnityManager::setWXStatus=%@",statusStr);
|
||||
[[ATAPI sharedInstance] setWXStatus:[statusStr boolValue]];
|
||||
}
|
||||
|
||||
-(void) setLocationLongitude:(NSNumber*)longitude dimension:(NSNumber*)latitude {
|
||||
NSLog(@"ATUnityManager::setLocationLongitude=%@ dimension=%@",longitude,latitude);
|
||||
[[ATSDKGlobalSetting sharedManager] setLocationLongitude:longitude.doubleValue dimension:latitude.doubleValue];
|
||||
[[ATAPI sharedInstance] setLocationLongitude:longitude.doubleValue dimension:latitude.doubleValue];
|
||||
}
|
||||
|
||||
- (void)showDebuggerUI:(NSString *)debugKey {
|
||||
NSLog(@"ATUnityManager::showDebuggerUI with key: %@", debugKey);
|
||||
|
||||
-(void) showDebuggerUI
|
||||
{
|
||||
// 此处用反射方式调用,发布时可以不用导入AnyThinkDebuggerUISDK库
|
||||
NSLog(@"ATUnityManager::showDebuggerUI");
|
||||
NSString *classStr = @"ATDebuggerAPI";
|
||||
Class debuggerAPIClass = NSClassFromString(classStr);
|
||||
if(!debuggerAPIClass) {
|
||||
NSLog(@"ATUnityManager::showDebuggerUI - NO %@", classStr);
|
||||
NSLog(@"ATUnityManager::showDebuggerUI- NO %@",classStr);
|
||||
return;
|
||||
}
|
||||
|
||||
SEL sharedInstanceSel = @selector(sharedInstance);
|
||||
if (![debuggerAPIClass respondsToSelector:sharedInstanceSel]) {
|
||||
NSLog(@"ATUnityManager::showDebuggerUI - NO sharedInstance selector");
|
||||
return;
|
||||
}
|
||||
|
||||
// 通过sharedInstanceSel获取单例对象
|
||||
id debugger = [debuggerAPIClass performSelector:sharedInstanceSel];
|
||||
|
||||
NSString *functionStr = @"showDebuggerInViewController:showType:debugkey:";
|
||||
SEL sel = NSSelectorFromString(functionStr);
|
||||
if ([debugger respondsToSelector:sel]) {
|
||||
NSMethodSignature *signature = [debugger methodSignatureForSelector:sel];
|
||||
if (signature) {
|
||||
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
|
||||
[invocation setTarget:debugger];
|
||||
[invocation setSelector:sel];
|
||||
|
||||
// 设置参数
|
||||
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
|
||||
UIViewController *rootViewController = keyWindow.rootViewController;
|
||||
NSNumber *showType = @1; // 假设 showType 为1
|
||||
|
||||
[invocation setArgument:&rootViewController atIndex:2]; // 注意:参数索引从2开始,0和1被target和selector占用
|
||||
[invocation setArgument:&showType atIndex:3];
|
||||
[invocation setArgument:&debugKey atIndex:4];
|
||||
|
||||
// 调用方法
|
||||
[invocation invoke];
|
||||
}
|
||||
} else {
|
||||
NSLog(@"ATUnityManager::showDebuggerUI - NO %@", functionStr);
|
||||
NSObject *debuger = [debuggerAPIClass performSelector:@selector(sharedInstance)];
|
||||
NSString *fuctionStr = @"showDebuggerInViewController:showType:";
|
||||
SEL sel = NSSelectorFromString(fuctionStr);
|
||||
if(!debuger || ![debuger respondsToSelector:sel]) {
|
||||
NSLog(@"ATUnityManager::showDebuggerUI- NO %@",fuctionStr);
|
||||
return;
|
||||
} else {
|
||||
UIWindow *win = [UIApplication sharedApplication].keyWindow;
|
||||
[debuger performSelector:sel withObject:win.rootViewController withObject:@1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
// ATSafeThreadDictionary.h
|
||||
// ATSDK
|
||||
//
|
||||
// Created by topon on 2020/9/21.
|
||||
// Copyright © 2020 AnyThink. All rights reserved.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/**
|
||||
A simple implementation of thread safe mutable dictionary.
|
||||
|
||||
@discussion Generally, access performance is lower than NSMutableDictionary,
|
||||
but higher than using @synchronized, NSLock, or pthread_mutex_t.
|
||||
|
||||
@warning Fast enumerate(for...in) and enumerator is not thread safe,
|
||||
use enumerate using block instead. When enumerate or sort with block/callback,
|
||||
do *NOT* send message to the dictionary inside the block/callback.
|
||||
*/
|
||||
@interface ATUnitySafeThreadDictionary<KeyType, ObjectType> : NSMutableDictionary
|
||||
|
||||
@end
|
||||
@@ -1,27 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6c22f00d8a049491f9fb73e80d266bd3
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,261 +0,0 @@
|
||||
// ATSafeThreadDictionary.h
|
||||
// ATSDK
|
||||
//
|
||||
// Created by topon on 2020/9/21.
|
||||
// Copyright © 2020 AnyThink. All rights reserved.
|
||||
//
|
||||
|
||||
#import "ATUnitySafeThreadDictionary.h"
|
||||
#import <pthread.h>
|
||||
|
||||
|
||||
#define INIT(...) self = super.init; \
|
||||
if (!self) return nil; \
|
||||
__VA_ARGS__; \
|
||||
if (!_dic) return nil; \
|
||||
[self __initMutex:&_mutex_lock];\
|
||||
return self;
|
||||
|
||||
|
||||
#define LOCK(...) pthread_mutex_lock(&_mutex_lock); \
|
||||
__VA_ARGS__; \
|
||||
pthread_mutex_unlock(&_mutex_lock);
|
||||
|
||||
@implementation ATUnitySafeThreadDictionary {
|
||||
NSMutableDictionary *_dic; //Subclass a class cluster...
|
||||
pthread_mutex_t _mutex_lock;
|
||||
pthread_mutexattr_t _attr;
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - init
|
||||
|
||||
- (void)__initMutex:(pthread_mutex_t *)mutex {
|
||||
// 递归锁:允许同一个线程对一把锁进行重复加锁
|
||||
// 初始化属性
|
||||
pthread_mutexattr_init(&_attr);
|
||||
pthread_mutexattr_settype(&_attr, PTHREAD_MUTEX_RECURSIVE);
|
||||
// 初始化锁
|
||||
pthread_mutex_init(mutex, &_attr);
|
||||
}
|
||||
|
||||
- (instancetype)init {
|
||||
|
||||
INIT(_dic = [[NSMutableDictionary alloc] init]);
|
||||
}
|
||||
|
||||
- (instancetype)initWithObjects:(NSArray *)objects forKeys:(NSArray *)keys {
|
||||
INIT(_dic = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys]);
|
||||
}
|
||||
|
||||
- (instancetype)initWithCapacity:(NSUInteger)capacity {
|
||||
INIT(_dic = [[NSMutableDictionary alloc] initWithCapacity:capacity]);
|
||||
}
|
||||
|
||||
- (instancetype)initWithObjects:(const id[])objects forKeys:(const id <NSCopying>[])keys count:(NSUInteger)cnt {
|
||||
INIT(_dic = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys count:cnt]);
|
||||
}
|
||||
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)otherDictionary {
|
||||
INIT(_dic = [[NSMutableDictionary alloc] initWithDictionary:otherDictionary]);
|
||||
}
|
||||
|
||||
- (instancetype)initWithDictionary:(NSDictionary *)otherDictionary copyItems:(BOOL)flag {
|
||||
INIT(_dic = [[NSMutableDictionary alloc] initWithDictionary:otherDictionary copyItems:flag]);
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - method
|
||||
|
||||
- (NSUInteger)count {
|
||||
LOCK(NSUInteger c = _dic.count); return c;
|
||||
}
|
||||
|
||||
- (id)objectForKey:(id)aKey {
|
||||
LOCK(id o = [_dic objectForKey:aKey]); return o;
|
||||
}
|
||||
|
||||
- (NSEnumerator *)keyEnumerator {
|
||||
LOCK(NSEnumerator * e = [_dic keyEnumerator]); return e;
|
||||
}
|
||||
|
||||
- (NSArray *)allKeys {
|
||||
LOCK(NSArray * a = [_dic allKeys]); return a;
|
||||
}
|
||||
|
||||
- (NSArray *)allKeysForObject:(id)anObject {
|
||||
LOCK(NSArray * a = [_dic allKeysForObject:anObject]); return a;
|
||||
}
|
||||
|
||||
- (NSArray *)allValues {
|
||||
LOCK(NSArray * a = [_dic allValues]); return a;
|
||||
}
|
||||
|
||||
- (NSString *)description {
|
||||
LOCK(NSString * d = [_dic description]); return d;
|
||||
}
|
||||
|
||||
- (NSString *)descriptionInStringsFileFormat {
|
||||
LOCK(NSString * d = [_dic descriptionInStringsFileFormat]); return d;
|
||||
}
|
||||
|
||||
- (NSString *)descriptionWithLocale:(id)locale {
|
||||
LOCK(NSString * d = [_dic descriptionWithLocale:locale]); return d;
|
||||
}
|
||||
|
||||
- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level {
|
||||
LOCK(NSString * d = [_dic descriptionWithLocale:locale indent:level]); return d;
|
||||
}
|
||||
|
||||
- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary {
|
||||
if (otherDictionary == self) return YES;
|
||||
|
||||
if ([otherDictionary isKindOfClass:ATUnitySafeThreadDictionary.class]) {
|
||||
ATUnitySafeThreadDictionary *other = (id)otherDictionary;
|
||||
BOOL isEqual;
|
||||
pthread_mutex_lock(&_mutex_lock);
|
||||
pthread_mutex_lock(&(other->_mutex_lock));
|
||||
isEqual = [_dic isEqual:other->_dic];
|
||||
pthread_mutex_unlock(&_mutex_lock);
|
||||
pthread_mutex_unlock(&(other->_mutex_lock));
|
||||
return isEqual;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSEnumerator *)objectEnumerator {
|
||||
LOCK(NSEnumerator * e = [_dic objectEnumerator]); return e;
|
||||
}
|
||||
|
||||
- (NSArray *)objectsForKeys:(NSArray *)keys notFoundMarker:(id)marker {
|
||||
LOCK(NSArray * a = [_dic objectsForKeys:keys notFoundMarker:marker]); return a;
|
||||
}
|
||||
|
||||
- (NSArray *)keysSortedByValueUsingSelector:(SEL)comparator {
|
||||
LOCK(NSArray * a = [_dic keysSortedByValueUsingSelector:comparator]); return a;
|
||||
}
|
||||
|
||||
- (void)getObjects:(id __unsafe_unretained[])objects andKeys:(id __unsafe_unretained[])keys {
|
||||
LOCK([_dic getObjects:objects andKeys:keys]);
|
||||
}
|
||||
|
||||
- (id)objectForKeyedSubscript:(id)key {
|
||||
LOCK(id o = [_dic objectForKeyedSubscript:key]); return o;
|
||||
}
|
||||
|
||||
- (void)enumerateKeysAndObjectsUsingBlock:(__attribute__((noescape)) void (^)(id key, id obj, BOOL *stop))block {
|
||||
LOCK([_dic enumerateKeysAndObjectsUsingBlock:block]);
|
||||
}
|
||||
|
||||
- (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(__attribute__((noescape)) void (^)(id key, id obj, BOOL *stop))block {
|
||||
LOCK([_dic enumerateKeysAndObjectsWithOptions:opts usingBlock:block]);
|
||||
}
|
||||
|
||||
- (NSArray *)keysSortedByValueUsingComparator:(__attribute__((noescape)) NSComparator)cmptr {
|
||||
LOCK(NSArray * a = [_dic keysSortedByValueUsingComparator:cmptr]); return a;
|
||||
}
|
||||
|
||||
- (NSArray *)keysSortedByValueWithOptions:(NSSortOptions)opts usingComparator:(__attribute__((noescape)) NSComparator)cmptr {
|
||||
LOCK(NSArray * a = [_dic keysSortedByValueWithOptions:opts usingComparator:cmptr]); return a;
|
||||
}
|
||||
|
||||
- (NSSet *)keysOfEntriesPassingTest:(__attribute__((noescape)) BOOL (^)(id key, id obj, BOOL *stop))predicate {
|
||||
LOCK(NSSet * a = [_dic keysOfEntriesPassingTest:predicate]); return a;
|
||||
}
|
||||
|
||||
- (NSSet *)keysOfEntriesWithOptions:(NSEnumerationOptions)opts passingTest:(__attribute__((noescape)) BOOL (^)(id key, id obj, BOOL *stop))predicate {
|
||||
LOCK(NSSet * a = [_dic keysOfEntriesWithOptions:opts passingTest:predicate]); return a;
|
||||
}
|
||||
|
||||
#pragma mark - mutable
|
||||
|
||||
- (void)removeObjectForKey:(id)aKey {
|
||||
LOCK(
|
||||
if (aKey) {
|
||||
[_dic removeObjectForKey:aKey];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)setObject:(id)anObject forKey:(id <NSCopying> )aKey {
|
||||
LOCK(
|
||||
if (anObject && aKey) {
|
||||
[_dic setObject:anObject forKey:aKey];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)addEntriesFromDictionary:(NSDictionary *)otherDictionary {
|
||||
LOCK(
|
||||
if (otherDictionary) {
|
||||
[_dic addEntriesFromDictionary:otherDictionary];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)removeAllObjects {
|
||||
LOCK([_dic removeAllObjects]);
|
||||
}
|
||||
|
||||
- (void)removeObjectsForKeys:(NSArray *)keyArray {
|
||||
LOCK([_dic removeObjectsForKeys:keyArray]);
|
||||
}
|
||||
|
||||
- (void)setDictionary:(NSDictionary *)otherDictionary {
|
||||
LOCK(
|
||||
if (otherDictionary) {
|
||||
[_dic setDictionary:otherDictionary];
|
||||
});
|
||||
}
|
||||
|
||||
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying> )key {
|
||||
LOCK(
|
||||
if (obj && key) {
|
||||
[_dic setObject:obj forKeyedSubscript:key];
|
||||
});
|
||||
}
|
||||
|
||||
#pragma mark - protocol
|
||||
|
||||
- (id)copyWithZone:(NSZone *)zone {
|
||||
return [self mutableCopyWithZone:zone];
|
||||
}
|
||||
|
||||
- (id)mutableCopyWithZone:(NSZone *)zone {
|
||||
LOCK(id copiedDictionary = [[self.class allocWithZone:zone] initWithDictionary:_dic]);
|
||||
return copiedDictionary;
|
||||
}
|
||||
|
||||
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state
|
||||
objects:(id __unsafe_unretained[])stackbuf
|
||||
count:(NSUInteger)len {
|
||||
LOCK(NSUInteger count = [_dic countByEnumeratingWithState:state objects:stackbuf count:len]);
|
||||
return count;
|
||||
}
|
||||
|
||||
- (BOOL)isEqual:(id)object {
|
||||
if (object == self) return YES;
|
||||
|
||||
if ([object isKindOfClass:ATUnitySafeThreadDictionary.class]) {
|
||||
ATUnitySafeThreadDictionary *other = object;
|
||||
BOOL isEqual;
|
||||
pthread_mutex_lock(&_mutex_lock);
|
||||
pthread_mutex_lock(&(other->_mutex_lock));
|
||||
isEqual = [_dic isEqual:other->_dic];
|
||||
pthread_mutex_unlock(&_mutex_lock);
|
||||
pthread_mutex_unlock(&(other->_mutex_lock));
|
||||
|
||||
return isEqual;
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (NSUInteger)hash {
|
||||
LOCK(NSUInteger hash = [_dic hash]);
|
||||
return hash;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
pthread_mutex_destroy(&_mutex_lock);
|
||||
pthread_mutexattr_destroy(&_attr);
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
@@ -1,37 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2b8623ca670c641eb9ef81563fb8e2ec
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
- first:
|
||||
iPhone: iOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
tvOS: tvOS
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -23,16 +23,6 @@ NSString *const kATUnityCheckLoadModelAdInfoKey = @"adInfo";
|
||||
@end
|
||||
@implementation NSDictionary (KAKit)
|
||||
-(NSString*) jsonString {
|
||||
|
||||
@try {
|
||||
// can not serialization, return a value is null array string
|
||||
if (![NSJSONSerialization isValidJSONObject:self]) {
|
||||
return @"[]";
|
||||
}
|
||||
} @catch (NSException *exception) {
|
||||
return @"[]";
|
||||
} @finally {}
|
||||
|
||||
NSError *error;
|
||||
NSData *jsonData;
|
||||
@try {
|
||||
|
||||
@@ -121,10 +121,10 @@ public class ATManager {
|
||||
ATUnityCBridge.SendMessageToC("ATUnityManager", "setLocationLongitude:dimension:", new object[] {longitude, latitude});
|
||||
}
|
||||
|
||||
public static void showDebuggerUI(string debugKey)
|
||||
public static void showDebuggerUI()
|
||||
{
|
||||
Debug.Log("Unity:ATManager::showDebuggerUI()");
|
||||
ATUnityCBridge.SendMessageToC("ATUnityManager", "showDebuggerUI:", new object[] {debugKey});
|
||||
ATUnityCBridge.SendMessageToC("ATUnityManager", "showDebuggerUI", null);
|
||||
}
|
||||
|
||||
public static void showGDPRConsentDialog(Func<string, int> callback)
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<repositories>
|
||||
<repository>https://jfrog.takuad.com/artifactory/china_sdk</repository>
|
||||
</repositories>
|
||||
<androidPackage spec="com.anythink.sdk:core-taku:6.5.52"/>
|
||||
<androidPackage spec="com.android.support:appcompat-v7:28.0.0"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a73f31a7fa33468dbe302869e291198
|
||||
guid: 74cd7d129c09b466a86bfa11ed6b16d1
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fb43491728884cbfa779b2320d3da51
|
||||
guid: da98890a900e14accaef685984a61bd5
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c25e4f8197510466db2c6ffc7251babf
|
||||
guid: a3135f78bef1e464b80a119102c73984
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fdc3877e0f8324904bde51d2d20e2bc6
|
||||
guid: 0054580ab849d45198549eac7a372bc9
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 29ed1e84a5881411da1472da4aeb979e
|
||||
guid: 41fd5ba357e7340aebe1ca236589f66a
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7b630f9c7da4a4f0ca3557de6f901bcb
|
||||
guid: f0b382f66e3504619885af1ed69ee1c1
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 132805e7dbeb445338e42182c3be51bd
|
||||
guid: 7311500925e7344788fb99a2ef9e2e96
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4467eb48798eb4dab9e92d4ded3cb12a
|
||||
guid: 950e2794885244e8798ebc0ed47f8874
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 56d92f8a16dba429ba7275e8efdcd8af
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e9587ea14cae241c59427df38278d1f6
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,6 +0,0 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-sdm:6.5.54.1.0"/>
|
||||
<androidPackage spec="com.smartdigimkttech.sdk:sdm-sdk-cn:6.5.54"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5573b9293433f436986248b60de1b145
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1f9463e4eab324a528e5920eeb986e7f
|
||||
guid: ec4604cacfce649728dcb4eb73245314
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 69e0b662881d62e4baf2f0e5e1696f5d
|
||||
guid: 1eb5504d21825439e88a559575ad04cc
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2baed5d8ff56e44eda5212811ea487fb
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,6 +0,0 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-baidu:9.432.1.0"/>
|
||||
<androidPackage spec="mobi.baidu.sdk:mobads:9.432"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20eb733c583b24e61aa380a5b4b8049f
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 88d4023257d40264e8443a4f2fce4c29
|
||||
guid: 5253fa9c3d29b454aadad0d01d335504
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -1 +1 @@
|
||||
{"name":"baidu","version":"9.432","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/baidu"}
|
||||
{"name":"baidu","version":"9.37","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/Android/China/mediation/baidu"}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ac413c5a4b5ec428b97c710e8af4a606
|
||||
guid: 0193284827ad2400c815083bfdb59425
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: faba521d59dabde4d8a6f7a690a8c4a8
|
||||
guid: 88a6d95f1bee14bad81b3aaea2e87395
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c691eee5da4f5fd45b516c9dce46a823
|
||||
guid: b69ea18f5f800432fb1be4c20db6c464
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -0,0 +1 @@
|
||||
{"name":"csj","version":"6.4.1.1","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/Android/China/mediation/csj"}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a4d0b2f9ca58b234fabae164f56dd016
|
||||
guid: f9e3eb9a77788a54a83ca1ca1f9c2e06
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cf5141130ed5b45d2b219e231ef457c1
|
||||
guid: abdda48f44fed4d0596ebb3564af537c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 122e70b479a7447688a289ae19fcfcad
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,6 +0,0 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-gdt:4.671.1541.1.0"/>
|
||||
<androidPackage spec="com.qq.e.union:union:4.671.1541"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6dd6600836ea34a7ebade28a361d0d09
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 240f011f233064c73875ff52b3a38da7
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c58e18614454a415d8e2ad27964c04bf
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +1 @@
|
||||
{"name":"gdt","version":"4.671.1541","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/gdt"}
|
||||
{"name":"gdt","version":"4.603.1473","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/Android/China/mediation/gdt"}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b0f7e15dfa0964efeb4fb2520fe4da8a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 24a14d7b4cbcc4136807dd7531b8e9af
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,16 +0,0 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<repositories>
|
||||
<repository>https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_support</repository>
|
||||
</repositories>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-mintegral-china:16.3.67.1.0"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:reward:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:newinterstitial:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:mbnative:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:mbnativeadvanced:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:mbsplash:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:mbbanner:16.3.67"/>
|
||||
<androidPackage spec="com.mbridge.msdk.support:mbbid:16.3.67"/>
|
||||
<androidPackage spec="androidx.recyclerview:recyclerview:1.1.0"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 220064c9d0f91415b86ab3bf1a729ac8
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"gtm","version":"16.3.67","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/gtm"}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7ea1f2761a954d17bf9bbd0cfd41eeb
|
||||
guid: 53423f4eaebf4476da5a08f0e7d84997
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 01632421e4bf2409d9f7c72ec852745d
|
||||
guid: ad4471c8eff0045e692b0839466c7859
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-kuaishou:4.12.20.1.1.0"/>
|
||||
<androidPackage spec="com.anythink.sdk:sdk-ads-kuaishou:4.12.20.1"/>
|
||||
<androidPackage spec="com.android.support:design:28.0.0"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d00a7a231f8d8489a95ad98ad2bf8eb5
|
||||
guid: 7addf8b7f1033463d9a2909737833d5c
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b56a274238fee48dcaa1ccae9a622dd7
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2fc916f3a90024b6d9eb483dc74f6934
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +1 @@
|
||||
{"name":"kuaishou","version":"4.12.20.1","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/kuaishou"}
|
||||
{"name":"kuaishou","version":"3.3.69","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/Android/China/mediation/kuaishou"}
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b2ae0ba26ecba4db183a171ca12bf96d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,8 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a631d810e42f54485a39e9de1e144bd8
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,6 +0,0 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-sigmob:4.25.9.1.0"/>
|
||||
<androidPackage spec="com.anythink.sdk:sdk-ads-sigmob:4.25.9"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 857a18d8685c340519c37012e88629ab
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +0,0 @@
|
||||
{"name":"sigmob","version":"4.25.9","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/sigmob"}
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fab3b47502982a41b4742624ee6365a
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 31a583814949b4c55a70bd82b81dbcde
|
||||
guid: bbb9d30c0227c4221b08a0a19f76417d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7c5e1477e3dc4ce99f86cadddba9d5f
|
||||
guid: 3a8ebcafcd2464659b3edd75235ccb3e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
<dependencies>
|
||||
<androidPackages>
|
||||
<androidPackage spec="com.anythink.sdk:adapter-taku-tap:4.1.2.7.1.1"/>
|
||||
<androidPackage spec="com.anythink.sdk:sdk-ads-tap:4.1.2.7"/>
|
||||
<androidPackage spec="io.reactivex.rxjava2:rxjava:2.0.1"/>
|
||||
<androidPackage spec="io.reactivex.rxjava2:rxandroid:2.0.1"/>
|
||||
<androidPackage spec="com.squareup.okhttp3:okhttp:3.12.1"/>
|
||||
<androidPackage spec="com.github.bumptech.glide:glide:4.9.0"/>
|
||||
<androidPackage spec="com.android.support:appcompat-v7:28.0.0"/>
|
||||
<androidPackage spec="com.android.support:support-v4:28.0.0"/>
|
||||
<androidPackage spec="com.android.support:recyclerview-v7:28.0.0"/>
|
||||
</androidPackages>
|
||||
</dependencies>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e609a3809c52044d9a657c6f57ae023f
|
||||
guid: 0c8bdb20bc2814919a0fb316325ec587
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 77128d02ff80548a78ea500c7a18397b
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,32 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 40954ebb3cfd04c9296425304103941e
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
- first:
|
||||
Android: Android
|
||||
second:
|
||||
enabled: 1
|
||||
settings: {}
|
||||
- first:
|
||||
Any:
|
||||
second:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
- first:
|
||||
Editor: Editor
|
||||
second:
|
||||
enabled: 0
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1 +1 @@
|
||||
{"name":"tap","version":"4.1.2.7","country":1,"path":"Assets/AnyThinkPlugin/AnyThinkAds\\Plugins/Android/China/mediation/tap"}
|
||||
{"name":"tap","version":"3.16.3.34","country":1,"path":"Assets/AnyThinkPlugin/Script/IntegrationManager/Editor/../../..//AnyThinkAds\\Plugins/Android/China/mediation/tap"}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 427c5881b8d4d4f6aa881900ad3d36ed
|
||||
guid: 92a9540d6c4824102995e4688aea7989
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b97c8aaa0d1e94a0690cd9f38b6ca553
|
||||
guid: 6adb84ef6af8641e4b5a8d959f44d9d5
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user