Files
Commercialization.topon/Assets/AnyThinkPlugin/AnyThinkAds/Platform/iOS/Internal/C/ATBaseUnityWrapper.m

156 lines
6.1 KiB
Mathematica
Raw Normal View History

2023-01-29 12:44:57 +08:00
//
// ATBaseUnityWrapper.m
// UnityContainer
//
// Created by Martin Lau on 08/08/2018.
// Copyright © 2018 Martin Lau. All rights reserved.
//
#import "ATBaseUnityWrapper.h"
#import "ATUnityUtilities.h"
#import "ATUnitySafeThreadDictionary.h"
2023-01-29 12:44:57 +08:00
@interface ATBaseUnityWrapper()
@property(nonatomic, strong) ATUnitySafeThreadDictionary<NSString*, NSValue*> *callbacks;
2023-01-29 12:44:57 +08:00
@end
@implementation ATBaseUnityWrapper
+(instancetype) sharedInstance {
return nil;
}
-(instancetype) init {
self = [super init];
if (self != nil) {
_callbacks = [ATUnitySafeThreadDictionary<NSString*, NSValue*> dictionary];
2023-01-29 12:44:57 +08:00
}
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];
}
2023-01-29 12:44:57 +08:00
}
-(void) removeCallbackForKey:(NSString *)key {
if ([key length] > 0) {
[self.callbacks removeObjectForKey:key];
}
2023-01-29 12:44:57 +08:00
}
-(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];
2023-01-29 12:44:57 +08:00
}
return callback;
}
-(NSString*)scriptWrapperClass {
return @"";
}
- (id)selWrapperClassWithDict:(NSDictionary *)dict callback:(void(*)(const char*, const char*))callback {
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 {
2023-01-29 12:44:57 +08:00
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;
2023-09-04 16:57:46 +08:00
}
}
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;
2023-09-04 16:57:46 +08:00
}
[self callbackForKey:placementID]([self scriptWrapperClass].UTF8String, paraDict.jsonString.UTF8String);
2023-01-29 12:44:57 +08:00
}
}
} @catch (NSException *exception) {
2023-01-29 12:44:57 +08:00
} @finally {}
});
2023-01-29 12:44:57 +08:00
}
- (NSArray *)jsonStrToArray:(NSString *)jsonString{
2023-01-29 12:44:57 +08:00
NSError *error;
NSArray *array = [NSArray array];
@try {
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
2023-01-29 12:44:57 +08:00
array = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&error];
2023-01-29 12:44:57 +08:00
if(error){
return [NSArray array];
}
} @catch (NSException *exception) {
NSLog(@"jsonStrToArray --- exception:%@",exception);
} @finally {}
2023-01-29 12:44:57 +08:00
return array;
}
@end