123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- #import <AntiAddictionUI/AntiAddiction.h>
- #import <AntiAddictionService/AntiAddictionService-Swift.h>
- char const *GAME_OBJECT = "PluginBridge";
- char* MakeStringCopy(const char* string)
- {
- if (string == NULL)
- return NULL;
-
- char* res = (char*)malloc(strlen(string) + 1);
- strcpy(res, string);
- return res;
- }
- @interface Utility : NSObject
- @end
- @implementation Utility
- + (NSString *)dictonaryToJson:(NSDictionary *) dictionary {
- NSError* error;
- NSData* jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];
- if (!jsonData) {
- NSLog(@"Dictonary stringify error: %@", error);
- return @"";
- }
- return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
- }
- + (NSDictionary *)dictionaryWithJsonString:(NSString *) jsonString {
- if (jsonString == nil) return nil;
- NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
- NSError *err;
- NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
- options:NSJSONReadingMutableContainers
- error:&err];
- if (err) {
- NSLog(@"json解析失败:%@", err);
- return nil;
- }
- return dic;
- }
- @end
- @interface NativeAntiAddictionKitPlugin : NSObject<AntiAddictionDelegate>
- @end
- @implementation NativeAntiAddictionKitPlugin
- static NativeAntiAddictionKitPlugin *_sharedInstance;
- +(NativeAntiAddictionKitPlugin*)sharedInstance
- {
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- _sharedInstance = [[NativeAntiAddictionKitPlugin alloc] init];
- });
- return _sharedInstance;
- }
- -(id)init
- {
- self = [super init];
- if (self)
- [self initHelper];
- return self;
- }
- -(void)initHelper
- {
- NSLog(@"Initialized NativeAntiAddictionKitPlugin class");
- }
- -(NSString *)generateUnityUnifyExtras:(NSDictionary *) extras {
- NSMutableDictionary* result = [[NSMutableDictionary alloc] init];
- if (extras) {
- if (extras[@"title"]) {
- [result setObject:extras[@"title"] forKey:@"title"];
- }
- if (extras[@"description"]) {
- [result setObject:extras[@"description"] forKey:@"description"];
- }
- if (extras[@"restrictType"]) {
- [result setObject:extras[@"userType"] forKey:@"userType"];
- }
- if (extras[@"remainTime"]) {
- [result setObject:[NSString stringWithFormat:@"%@",extras[@"remainTime"]] forKey:@"remaining_time_str"];
- }
- if (extras[@"restrictType"]) {
- [result setObject:[NSString stringWithFormat:@"%@",extras[@"restrictType"]] forKey:@"strict_type"];
- }
- }
-
- return [Utility dictonaryToJson:result];
- }
- -(NSString *)generateResultMessage:(NSInteger)code extras:(NSDictionary *) extras
- {
- NSDictionary* result = [[NSDictionary alloc] initWithObjectsAndKeys:
- [NSNumber numberWithUnsignedLong:code],@"code"
- ,[self generateUnityUnifyExtras:extras], @"extras"
- , nil];
- return [Utility dictonaryToJson:result];
- }
- -(NSString *)generateCheckPayResult:(NSInteger)status title:(NSString *)title description:(NSString *)description
- {
- NSDictionary* result = [[NSDictionary alloc] initWithObjectsAndKeys:
- [NSNumber numberWithUnsignedLong:status],@"status"
- ,[NSString stringWithFormat:@"%@",title],@"title"
- ,[NSString stringWithFormat:@"%@",description], @"description"
- ,nil];
- return [Utility dictonaryToJson:result];
- }
- #pragma mark - delegate
- - (void)antiAddictionCallbackWithCode:(AntiAddictionResultHandlerCode)code extra:(NSString *)extra {
- NSString *resultString = [NSString stringWithFormat:@"ios callback code:%ld,extra:%@",(long)code,extra];
- NSLog(@"%@", resultString);
- NSDictionary* extraDict = [Utility dictionaryWithJsonString:extra];
-
- if (code == AntiAddictionResultHandlerLoginSuccess) {
- UnitySendMessage(GAME_OBJECT, [@"HandleAntiAddictionCallbackMsg" UTF8String], [[self generateResultMessage:500 extras:extraDict] UTF8String]);
- } else {
- UnitySendMessage(GAME_OBJECT, [@"HandleAntiAddictionCallbackMsg" UTF8String]
- , [[self generateResultMessage:code extras:extraDict]
- UTF8String]);
- }
- }
- @end
- extern "C"
- {
- void initSDK(const char *gameIdentifier
- , bool useTimeLimit
- , bool usePaymentLimit
- , bool showSwitchAccount
- ) {
- NSString *gameIdentifierParam = [NSString stringWithUTF8String:gameIdentifier];
- NSLog(@"%@", [NSString stringWithFormat:@"initSDK with gameIdentifier: %@ ,useTimeLimit: %@, usePaymentLimit: %@"
- , gameIdentifierParam
- , useTimeLimit?@"YES":@"NO"
- , usePaymentLimit?@"YES":@"NO"]);
- AntiAddictionConfiguration *configuration = AntiAddictionService.configuration;
- configuration.showSwitchAccount = showSwitchAccount;
- [AntiAddiction initGameIdentifier:gameIdentifierParam antiAddictionConfig:configuration antiAddictionCallbackDelegate:[NativeAntiAddictionKitPlugin sharedInstance] completionHandler:^(BOOL) {}];
- }
- void startup(const char *userIdentifier, bool useTapLogin) {
- NSString *userIdentifierParam = [NSString stringWithUTF8String:userIdentifier];
- NSLog(@"%@", [NSString stringWithFormat:@"startup with userIdentifier: %@ ,useTapLogin: %@"
- , userIdentifierParam
- , useTapLogin?@"YES":@"NO"]);
- [AntiAddiction startUpUseTapLogin:useTapLogin userIdentifier:userIdentifierParam];
- }
- void logout() {
- [AntiAddiction logout];
- }
- void enterGame() {
- [AntiAddiction enterGame];
- }
- void leaveGame() {
- [AntiAddiction leaveGame];
- }
- void checkPayLimit(long amount) {
- [AntiAddiction checkPayLimit:(NSInteger)amount callBack:^(BOOL status, NSString * _Nonnull title, NSString * _Nonnull description) {
- UnitySendMessage(GAME_OBJECT, [@"HandleCheckPayLimit" UTF8String], [[Utility dictonaryToJson:[[NSDictionary alloc] initWithObjectsAndKeys:
- [NSNumber numberWithUnsignedLong:status],@"status"
- ,[NSString stringWithFormat:@"%@", title], @"title"
- ,[NSString stringWithFormat:@"%@", description], @"description"
- , nil]] UTF8String]);
- } failureHandler:^(NSString * _Nonnull exception) {
- UnitySendMessage(GAME_OBJECT, [@"HandleCheckPayLimitException" UTF8String], [exception UTF8String]);
- }];
- }
- void submitPayResult(long amount) {
- [AntiAddiction submitPayResult:(NSInteger)amount callBack:^(BOOL success) {
- UnitySendMessage(GAME_OBJECT, [@"HandleSubmitPayResult" UTF8String], "");
- } failureHandler:^(NSString * _Nonnull exception) {
- UnitySendMessage(GAME_OBJECT, [@"HandleSubmitPayResultException" UTF8String], [exception UTF8String]);
- }];
- }
-
- int getCurrentUserRemainTime() {
- return (int)[AntiAddiction getCurrentUserRemainTime];
- }
-
- int getCurrentUserAgeLimit() {
- return (int)[AntiAddiction getCurrentUserAgeLimite];
- }
-
- const char* getCurrentAntiToken() {
- return MakeStringCopy([[AntiAddiction currentToken] UTF8String]);
- }
- void setUnityVersion(const char * version) {
- [AntiAddiction setUnityVersion:[NSString stringWithUTF8String:version]];
- }
- bool standalone() {
- return [AntiAddiction isStandAlone];
- }
- }
|