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

217 lines
7.8 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// ATUnityUtilities.m
// UnityContainer
//
// Created by Martin Lau on 14/08/2018.
// Copyright © 2018 Martin Lau. All rights reserved.
//
#import "ATUnityUtilities.h"
NSString *const kATUnityUtilitiesInterstitialImpressionNotification = @"com.anythink.kATUnityUtilitiesInterstitialImpressionNotification";
NSString *const kATUnityUtilitiesInterstitialCloseNotification = @"kATUnityUtilitiesInterstitialCloseNotification";
NSString *const kATUnityUtilitiesRewardedVideoImpressionNotification = @"kATUnityUtilitiesRewardedVideoImpressionNotification";
NSString *const kATUnityUtilitiesRewardedVideoCloseNotification = @"kATUnityUtilitiesRewardedVideoCloseNotification";
NSString *const kATUnityUtilitiesAdShowingExtraScenarioKey = @"Scenario";
NSString *const kATUnityUserExtraDataKey = @"user_load_extra_data";
NSString *const kATUnityCheckLoadModelAdInfoKey = @"adInfo";
@implementation ATUnityUtilities
+(BOOL)isEmpty:(id)object {
return (object == nil || [object isKindOfClass:[NSNull class]] || ([object respondsToSelector:@selector(length)] && [(NSData *)object length] == 0) || ([object respondsToSelector:@selector(count)] && [(NSArray *)object count] == 0));
}
@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 {
jsonData = [NSJSONSerialization dataWithJSONObject:self
options:kNilOptions
error:&error];
} @catch (NSException *exception) {
return @"{}";
} @finally {}
if (!jsonData) {
return @"{}";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
- (NSString*)jsonFilterString {
NSError *error;
NSData *jsonData;
NSMutableDictionary *extraDictM = [NSMutableDictionary dictionaryWithDictionary:self[kATUnityCheckLoadModelAdInfoKey]];
NSMutableDictionary *extraDataTemp = [NSMutableDictionary dictionary];
NSMutableDictionary *extraDataDictM = [NSMutableDictionary dictionaryWithDictionary:self[kATUnityCheckLoadModelAdInfoKey][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];
}
NSMutableDictionary *jsonDictM = [NSMutableDictionary dictionaryWithDictionary:self];
[jsonDictM setValue:extraDictM forKey:kATUnityCheckLoadModelAdInfoKey];
@try {
jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictM
options:kNilOptions
error:&error];
} @catch (NSException *exception) {
return @"{}";
} @finally {}
if (!jsonData) {
return @"{}";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
-(BOOL)containsObjectForKey:(id)key {
return [self.allKeys containsObject:key];
}
@end
@implementation NSArray (KAKit)
-(NSString*) jsonString {
NSError *error;
NSData *jsonData;
@try {
jsonData = [NSJSONSerialization dataWithJSONObject:self
options:kNilOptions
error:&error];
} @catch (NSException *exception) {
return @"[]";
} @finally {}
if (!jsonData) {
return @"[]";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
- (NSString*)jsonFilterString {
NSError *error;
NSData *jsonData;
NSMutableArray *filterArrayM = [NSMutableArray arrayWithCapacity:self.count];
for (NSDictionary *adTempDict in self) {
NSMutableDictionary *extraDictM = [NSMutableDictionary dictionaryWithDictionary:adTempDict];
NSMutableDictionary *extraDataTemp = [NSMutableDictionary dictionary];
NSMutableDictionary *extraDataDictM = [NSMutableDictionary dictionaryWithDictionary:adTempDict[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];
}
[filterArrayM addObject:extraDictM];
}
@try {
jsonData = [NSJSONSerialization dataWithJSONObject:filterArrayM
options:kNilOptions
error:&error];
} @catch (NSException *exception) {
return @"[]";
} @finally {}
if (!jsonData) {
return @"[]";
} else {
return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
}
@end
@implementation NSData(ATKit)
+(instancetype) dataWithUTF8String:(const char*)string {
return [[NSString stringWithUTF8String:string] dataUsingEncoding:NSUTF8StringEncoding];
}
@end
@implementation UIColor (Hex)
// 透明度固定为1以0x开头的十六进制转换成的颜色
+ (UIColor*) colorWithHex:(long)hexColor;
{
return [UIColor colorWithHex:hexColor alpha:1.];
}
// 0x开头的十六进制转换成的颜色,透明度可调整
+ (UIColor *)colorWithHex:(long)hexColor alpha:(float)opacity
{
float red = ((float)((hexColor & 0xFF0000) >> 16))/255.0;
float green = ((float)((hexColor & 0xFF00) >> 8))/255.0;
float blue = ((float)(hexColor & 0xFF))/255.0;
return [UIColor colorWithRed:red green:green blue:blue alpha:opacity];
}
// 颜色转换三iOS中十六进制的颜色以#开头转换为UIColor
+ (UIColor *) colorWithHexString: (NSString *)color
{
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 判断前缀并剪切掉
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return [UIColor clearColor];
// 从六位数值中找到RGB对应的位数并转换
NSRange range;
range.location = 0;
range.length = 2;
//R、G、B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
}
@end