From 89a7812f0f067fbbed46f8643c4ff67dc2ecbb94 Mon Sep 17 00:00:00 2001
From: allez <305670599@qq.com>
Date: 星期三, 21 二月 2024 17:05:29 +0800
Subject: [PATCH] 0312 越南iossdk
---
Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.h | 90 +++++++++
Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png | 0
Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist | 12 +
Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.mm | 478 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 580 insertions(+), 0 deletions(-)
diff --git a/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png
new file mode 100644
index 0000000..7ac8e4d
--- /dev/null
+++ b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/TY_AN_34.png
Binary files differ
diff --git a/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist
new file mode 100644
index 0000000..e8511cd
--- /dev/null
+++ b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/The2thWorldRES.bundle/The2thWorldSDKConfig.plist
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>JPush_AppKey</key>
+ <string>111a5f817592ddc68edc802c</string>
+ <key>TTTrack_AppID</key>
+ <string>155761</string>
+ <key>TrackingIO_AppKey</key>
+ <string>12aef4c284c6996703765fe9f7422428</string>
+</dict>
+</plist>
diff --git a/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.h b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.h
new file mode 100644
index 0000000..581ecbf
--- /dev/null
+++ b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.h
@@ -0,0 +1,90 @@
+//
+// UniversalSDK.h
+// Unity-iPhone
+//
+//
+
+#ifndef __UNIVERSALSDK_H_
+#define __UNIVERSALSDK_H_
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import <WebKit/WebKit.h>
+#import <DevMoHuanFramework/MoHuanSDK.h>
+
+#define UNITY_OBJ_NAME "SDKUtility"
+#define UNITY_FUNC_NAME "HandleSdkMessage"
+
+
+#define S2U_BatteryLevel 1
+#define S2U_BatteryCharging 2
+#define S2U_SdkInitComplete 3
+#define S2U_DeviceInfo 4
+#define S2U_PushClientID 5
+#define S2U_FreePlatformInitOk 100
+#define S2U_FreePlatformInitFail 101
+#define S2U_FreePlatformLoginOk 102
+#define S2U_FreePlatformLoginFail 103
+#define S2U_FreePlatformLoginCancel 104
+#define S2U_FreePlatformLogoutOk 105
+#define S2U_FreePlatformLogoutFail 106
+#define S2U_FreePlatformSwitchAccountOk 107
+#define S2U_FreePlatformPayOk 108
+#define S2U_FreePlatformPayFail 109
+#define S2U_FreePlatformPayCancel 110
+#define S2U_FreePlatformRegisterOk 111
+#define S2U_FBShareResult 112 //fb鍒嗕韩缁撴灉
+
+#define U2S_BatteryListenStart 1
+#define U2S_BatteryListenStop 2
+#define U2S_CopyContent 7
+#define U2S_OpenWebView 8
+#define U2S_Init 9
+#define U2S_FreePlatformInit 100
+#define U2S_FreePlatformLogin 101
+#define U2S_FreePlatformLogout 102
+#define U2S_FreePlatformSwitchAccount 103
+#define U2S_FreePlatformPay 104
+#define U2S_PayFinished 105
+#define U2S_CreateRole 106
+#define U2S_RoleLogin 107
+#define U2S_RoleLevelUp 108
+#define U2S_ShareToFaceBook 112 //FB鍒嗕韩
+#define U2S_GotoReview 113 //鍓嶅線璇勫垎
+#define U2S_FansHouse 120 //绮変笣灞�
+#define U2S_GotoShop 121 //鎵撳紑鍟嗗簵
+#define U2S_TrackEvent 122 //鑷畾涔変簨浠�
+#define U2S_JPushAddLocalMessage 200
+#define U2S_JPushRemoveLocalMessage 201
+#define U2S_MakeKeyAndVisible 300
+#define U2S_SendRegistEvent 500
+#define U2S_SendLoginEvent 600
+
+#define KIsiPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
+
+static BOOL JPush_IsProduction = FALSE;
+
+@interface UniversalSDK : NSObject<WKUIDelegate, WKNavigationDelegate> {
+ WKWebView* m_UIWebView;
+ WKWebView* m_fakeUIWebView;
+ UIButton* m_CloseBtn;
+}
+
+-(void) HandleUnityMessage:(NSString*) json;
+-(void) Init;
+-(id) APNativeJSONObject:(NSData*) data;
+
+-(void) QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
+
+@end
+
+@interface UniversalSDK ()<MoHuanSDKDelegate>
+//@property (weak, nonatomic) IBOutlet UILabel *demoTitleLabel;
+//@property(nonatomic)UIInterfaceOrientationMask korientationMask;
+//@property (weak, nonatomic) IBOutlet UILabel *resultLabel;
+//@property (nonatomic, strong)MoHuanSDK *sdkManager;
+//@property (weak, nonatomic) IBOutlet UIImageView *backImageView;
+
+@end
+
+#endif
diff --git a/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.mm b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.mm
new file mode 100644
index 0000000..98dfaff
--- /dev/null
+++ b/Channel/IOS/hyyngame/Plugins/The2thWorldSDK/UniversalSDK.mm
@@ -0,0 +1,478 @@
+//
+// UniversalSDK.m
+// Unity-iPhone
+//
+// Created by 钄$�� on 2018/4/24.
+//
+
+#import "UniversalSDK.h"
+#import "AdSupport/AdSupport.h"
+#import "opus.h"
+#ifdef NSFoundationVersionNumber_iOS_9_x_Max
+#import <UserNotifications/UserNotifications.h>
+#endif
+#import "SystemConfiguration/CaptiveNetwork.h"
+
+@implementation UniversalSDK
+
+#define CHANNEL_NUM 1
+
+static int s_frequency = 16000;
+static int s_bitRate = 20000;
+static int s_bandMode = OPUS_BANDWIDTH_WIDEBAND;
+static int s_frameSize = 160;
+static int sBatteryLevel = -1;
+static int sBatteryState = -1;
+static NSString* sAppID;
+static NSString* sGameID;
+static NSString* sUserName;
+static NSThread* _thread;
+
+
+
+
+
+-(id)init
+{
+ self = [super init];
+
+ m_fakeUIWebView = [[WKWebView alloc] initWithFrame:CGRectZero];
+ NSURL *url = [NSURL URLWithString:@"www.baidu.com"];
+ NSURLRequest *request = [NSURLRequest requestWithURL:url
+ cachePolicy:NSURLRequestUseProtocolCachePolicy
+ timeoutInterval:10.f];
+ [m_fakeUIWebView loadRequest:request];
+
+ return self;
+}
+
+-(void) Init
+{
+ UIDevice *_device = [UIDevice currentDevice];
+ _device.batteryMonitoringEnabled = true;
+
+ NSString* _uniqueID = [[NSUserDefaults standardUserDefaults] objectForKey:@"tsw_unique_id"];
+ //鑾峰彇IDFA
+ NSString* _idfa = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
+
+ if(_uniqueID == NULL || [_uniqueID length] <= 0)
+ {
+ //鍒ゆ柇IDFA鏄惁涓虹┖
+ BOOL isEmpty = [[_idfa stringByReplacingOccurrencesOfString:@"-" withString:@""] stringByReplacingOccurrencesOfString:@"0" withString:@""].length;
+ if (isEmpty) {
+ //涓嶄负绌猴紝灏咺DFA浣滀负鍞竴鏍囪瘑
+ _uniqueID = _idfa;
+ }
+ else {
+ //涓虹┖锛岃幏鍙朥UID浣滀负鍞竴鏍囪瘑
+ _uniqueID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
+ }
+
+ //淇濆瓨鍞竴璁惧鏍囪瘑,濡傚凡瀛樺湪鍒欎笉杩涜浠讳綍澶勭悊
+ [[NSUserDefaults standardUserDefaults] setObject:_uniqueID forKey:@"tsw_unique_id"];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+ }
+
+ // 鍙栧緱UserAgent
+ [m_fakeUIWebView evaluateJavaScript:@"navigator.userAgent" completionHandler:^(id _Nullable userAgent, NSError * _Nullable error) {
+
+ NSLog(@"%@", userAgent);
+ NSString* _userAgent = [NSString stringWithFormat:@"%@", userAgent];
+ // 鍙戦�佽澶囦俊鎭�
+ NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ _uniqueID,@"unique_id",
+ _idfa,@"android_id",
+ [NSNumber numberWithInt:S2U_DeviceInfo],@"code",
+ _userAgent,@"userAgent",nil];
+ [self SendMessageToUnity:_dict];
+ }];
+
+
+ [MoHuanSDK sharedGameSDK] .sdkDelegate = (id<MoHuanSDKDelegate>)self;
+ UIViewController *view = UnityGetGLViewController();
+ [[MoHuanSDK sharedGameSDK] initSDKwithViewController:view gameId:1135 appId:36 channelId:332];
+}
+
+
+- (void)smpcQpLogoutResult:(NSNotification *)notify {
+ NSLog(@"sdk璇锋眰閫�鍑�");
+ //娉ㄩ攢鎴愬姛
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:S2U_FreePlatformLogoutOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+
+}
+
+-(void)SendMessageToUnity:(NSDictionary*)dict
+{
+ BOOL _result = [NSJSONSerialization isValidJSONObject:dict];
+ if(_result)
+ {
+ NSData* _jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:NULL];
+ UnitySendMessage(UNITY_OBJ_NAME, UNITY_FUNC_NAME,
+ [[[NSString alloc] initWithData:_jsonData encoding:NSUTF8StringEncoding] UTF8String]);
+ }
+}
+
+-(void) BatteryThread {
+ while (TRUE)
+ {
+ [NSThread sleepForTimeInterval:1];
+
+ UIDevice *_device = [UIDevice currentDevice];
+
+ int _state = [_device batteryState];
+ if(_state != sBatteryState){
+ sBatteryState = _state;
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:sBatteryState], @"status",
+ [NSNumber numberWithInt:S2U_BatteryCharging], @"code", nil];
+
+ [self SendMessageToUnity:_dict];
+ }
+
+ int _level = (int)([_device batteryLevel] * 100);
+ if(_level != sBatteryLevel){
+ sBatteryLevel = _level;
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:sBatteryLevel], @"level",
+ [NSNumber numberWithInt:S2U_BatteryLevel], @"code", nil];
+
+ [self SendMessageToUnity:_dict];
+ }
+ }
+}
+
+-(void) OpenURL:(NSString*) url {
+
+ if(m_UIWebView != NULL) {
+ [self btnClick:NULL];
+ return;
+ }
+
+ CGRect _bounds = UnityGetMainWindow().bounds;
+
+ float _scale = _bounds.size.width / 1334;
+
+ float _width = 982 * _scale;
+ float _height = 560 * _scale;
+
+ float _offsetX = (_bounds.size.width - _width) * .5f;
+ float _offsetY = (_bounds.size.height - _height) * .5f;
+
+ m_UIWebView = [[WKWebView alloc] initWithFrame:CGRectMake(_offsetX, _offsetY, _width, _height)];
+ m_UIWebView.UIDelegate = self;
+ m_UIWebView.navigationDelegate = self ;
+ m_UIWebView.scrollView.scrollEnabled = YES;
+ m_UIWebView.scrollView.bounces = NO;
+ NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:url]];
+ [m_UIWebView loadRequest:request];
+
+
+}
+
+-(void) btnClick:(UIButton*)sender {
+ [m_CloseBtn removeFromSuperview];
+ [m_CloseBtn removeTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+ m_CloseBtn = NULL;
+
+ NSURLCache *_cache = [NSURLCache sharedURLCache];
+ [_cache removeAllCachedResponses];
+ [_cache setDiskCapacity:0];
+ [_cache setMemoryCapacity:0];
+
+ [m_UIWebView removeFromSuperview];
+ m_UIWebView = NULL;
+}
+
+
+//-(void)webViewDidFinishLoad:(WKWebView *)webView{
+- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{
+
+ CGRect _bounds = UnityGetMainWindow().bounds;
+
+ float _scale = _bounds.size.width / 1334;
+
+ float _width = 982 * _scale;
+ float _height = 560 * _scale;
+
+ m_CloseBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
+ [m_CloseBtn setFrame:CGRectMake(_width - 600 * _scale, _height - 86 * _scale, 360 * _scale, 72 * _scale)];
+ [m_CloseBtn setTitle:@"鎴戠煡閬撲簡" forState:UIControlStateNormal];
+
+ NSString *_bundlePath = [[NSBundle mainBundle] pathForResource:@"The2thWorldRES.bundle" ofType:nil];
+ NSBundle *_bundle = [NSBundle bundleWithPath:_bundlePath];
+ NSString *pic1Path = [_bundle pathForResource:@"TY_AN_34.png" ofType:nil];
+
+ [m_CloseBtn setBackgroundImage:[UIImage imageWithContentsOfFile:pic1Path] forState:UIControlStateNormal];
+ [m_CloseBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
+ [m_CloseBtn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+
+ [m_UIWebView addSubview:m_CloseBtn];
+
+ UIView *view = UnityGetGLViewController().view;
+ [view addSubview:m_UIWebView];
+}
+
+-(void)QuickSDKInit:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ NSLog(@"鍒濆鍖栨垚鍔�");
+
+ [[MoHuanSDK sharedGameSDK] application:application
+ didFinishLaunchingWithOptions:launchOptions];
+ NSMutableDictionary *_dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_SdkInitComplete], @"code",
+ @"hyyn", @"channelPlatform", nil];
+ [self SendMessageToUnity:_dict];
+
+}
+
+
+#pragma mark - 鍥炶皟缁撴灉
+- (void)onInitSuccess
+{
+ NSLog(@"\n***************鍒濆鍖栨垚鍔�****************");
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:S2U_FreePlatformInitOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+- (void)onInitFail:(NSError *)kerror
+{
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:S2U_FreePlatformInitFail], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+
+
+- (void)onLoginSuccess:(id )user
+{
+
+ NSString *uid = user[@"user_id"];
+ NSString *gameUID = [NSString stringWithFormat:@"%@@1", uid];
+ NSString *UserName = user[@"user_name"];
+ NSLog(@" 鐧婚檰鍙傛暟锛氥��%@ %@ %@銆�", uid, user[@"timestamp"], user[@"sign"]);
+
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSDictionary dictionaryWithObjectsAndKeys:user[@"sign"], @"token",
+ UserName, @"userName",
+ user[@"timestamp"], @"token_expire",
+ gameUID, @"account", nil],@"info",
+ [NSNumber numberWithInt:S2U_FreePlatformLoginOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+
+- (void)onLoginFail:(NSError *)kerror
+{
+ //self.resultLabel.text = [NSString stringWithFormat:@"鐧诲綍澶辫触\nerror:%@",kerror.localizedDescription];
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_FreePlatformLoginFail], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+
+- (void)onLogout
+{
+ NSLog(@"娉ㄩ攢");
+ //self.resultLabel.text = @"娉ㄩ攢鎴愬姛";
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_FreePlatformLogoutOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+- (void)onPaySuccess{
+ NSLog(@"鍏呭�艰皟鐢ㄨ繑鍥�");
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithInt:S2U_FreePlatformPayOk], @"code", nil];
+ [self SendMessageToUnity:_dict];
+}
+
+
+-(id) APNativeJSONObject:(NSData *)data{
+ if (!data) {
+ return nil;
+ }
+
+ NSError *error = nil;
+ id retId = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
+
+ if (error) {
+ NSLog(@"%s trans data to obj with error: %@", __func__, error);
+ return nil;
+ }
+
+ return retId;
+}
+
+-(void)HandleUnityMessage:(NSString *)json {
+
+ NSLog(@"鏀跺埌Unity鍙戞潵鐨勬秷鎭� => %@", json);
+
+ NSData *_jsonData = [json dataUsingEncoding:NSUTF8StringEncoding];
+ NSDictionary *_dict = [self APNativeJSONObject:_jsonData];
+
+ switch([[_dict objectForKey:@"code"] intValue]){
+ case U2S_Init:
+ sAppID = _dict[@"appID"];
+ sGameID = _dict[@"gameID"];
+ [self Init];
+
+ break;
+ case U2S_CopyContent:
+ [UIPasteboard generalPasteboard].string = _dict[@"content"];
+ break;
+ case U2S_FreePlatformInit:
+ break;
+ case U2S_MakeKeyAndVisible:
+ {
+ UIWindow * _window = [[UIApplication sharedApplication].delegate window];
+ if (_window != nil && _window.rootViewController != nil) {
+ [_window makeKeyAndVisible];
+ }
+ }
+ break;
+ case U2S_OpenWebView:
+ [self OpenURL:_dict[@"url"]];
+ break;
+ case U2S_FreePlatformLogin:
+ {
+ [[MoHuanSDK sharedGameSDK] login];
+ }
+ break;
+ case U2S_FreePlatformLogout:
+ {
+ [[MoHuanSDK sharedGameSDK] logout];
+ }
+ break;
+ case U2S_CreateRole:
+ {
+ [[MoHuanSDK sharedGameSDK] roleCreateWithRoleId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]]];
+ break;
+ }
+ case U2S_RoleLogin:
+ {
+ // 鏇存柊瑙掕壊淇℃伅
+ [[MoHuanSDK sharedGameSDK] roleLoginWithRoleId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]]];
+ break;
+ }
+
+ case U2S_RoleLevelUp:
+ {
+ // 鏇存柊瑙掕壊淇℃伅
+ [[MoHuanSDK sharedGameSDK] roleLevelUpWithRoleId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]] serverName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]] serverId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]] userMoney:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"money"]] vipLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"vipLevel"]]];
+ break;
+ }
+ case U2S_FreePlatformPay:
+ {
+
+ NSString *extra = [NSString stringWithFormat:@"1_%@_%@_%@", [NSString stringWithFormat:@"%@", [_dict objectForKey:@"orderId"]],
+ [NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]],
+ [NSString stringWithFormat:@"%@", [_dict objectForKey:@"cpInfo"]]];
+
+ [[MoHuanSDK sharedGameSDK] IAPWithProductId:[NSString stringWithFormat:@"%@", [_dict objectForKey:@"cpInfo"]] productDesc:[NSString stringWithFormat:@"%@", [_dict objectForKey:@"title"]] amount:[NSString stringWithFormat:@"%@", [_dict objectForKey:@"mount"]] cpOrderId:[NSString stringWithFormat:@"%@", [_dict objectForKey:@"orderId"]] callBackUrl:@"Pxrv%3A%3EW%3B%26A%26qGEf%5D1%3B4Pip6Lrvc%5BChojgYPV%2A%3B%3Bm%7BBDbK%28kX%3Bm%60Ey40%2CO%609HKz%26T0%268" callBackInfo:extra roleId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleID"]] roleName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"roleName"]] roleLevel:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"level"]] serverId:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"sid"]] serverName:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"serverName"]]];
+
+ break;
+ }
+ case U2S_BatteryListenStart:
+ if(_thread == NULL)
+ {
+ _thread = [[NSThread alloc] initWithTarget:self selector:@selector(BatteryThread) object:nil];
+ [_thread setName:@"BatteryCheck"];
+ }
+ if(![_thread isExecuting])
+ {
+ [_thread start];
+ }
+ break;
+ case U2S_BatteryListenStop:
+ break;
+ case U2S_ShareToFaceBook:
+ {
+ [[MoHuanSDK sharedGameSDK] shareUrlWithResult:^(BOOL isSuccess) {
+ NSLog(@"%@%@",@"facebookShareURL ",isSuccess?@"YES":@"NO");
+
+ NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSDictionary dictionaryWithObjectsAndKeys:isSuccess?@"1":@"2", @"state", nil],@"info",
+ [NSNumber numberWithInt:S2U_FBShareResult], @"code", nil];
+ [self SendMessageToUnity:_dict];
+ }];
+ break;
+ }
+
+ case U2S_GotoReview:
+ [[MoHuanSDK sharedGameSDK] appStoreReview];
+ break;
+ case U2S_FansHouse:
+ [[MoHuanSDK sharedGameSDK] facebookFansHome];
+ break;
+ case U2S_GotoShop:
+ [[MoHuanSDK sharedGameSDK] appStore];
+ break;
+ case U2S_TrackEvent:
+ //isRepeat:NO浠呬笂鎶ヤ竴娆★紝YES鍏佽閲嶅涓婃姤锛堜竴鑸湅杩愯惀瑕佹眰锛�
+ [[MoHuanSDK sharedGameSDK] reportTrackEvent:[NSString stringWithFormat:@"%@",[_dict objectForKey:@"eventName"]] isRepeat:[[_dict objectForKey:@"eventName"] boolValue]];
+ break;
+ }
+}
+@end
+
+extern "C" void native_opus_init(int frequency, int bitRate, int bandMode)
+{
+ s_frequency = frequency;
+ s_bandMode = bandMode;
+ s_bitRate = bitRate;
+ s_frameSize = frequency / 100;
+}
+
+extern "C" int native_opus_encode(opus_int16 *pcm, int len, unsigned char *opus)
+{
+ int errorCode = 0;
+ opus_int32 skip = 0;
+ OpusEncoder *enc = opus_encoder_create(s_frequency, CHANNEL_NUM, OPUS_APPLICATION_VOIP, &errorCode);
+ if (OPUS_OK != errorCode) {
+ enc = NULL;
+ return -1;
+ }
+
+ opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(s_bandMode));
+ opus_encoder_ctl(enc, OPUS_SET_BITRATE(s_bitRate));
+ opus_encoder_ctl(enc, OPUS_SET_VBR(1));
+ opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
+ opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
+ opus_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_SIGNAL_VOICE));
+ opus_encoder_ctl(enc, OPUS_SET_DTX(0));
+ opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(0));
+ opus_encoder_ctl(enc, OPUS_GET_LOOKAHEAD(&skip));
+ opus_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(16));
+
+ unsigned char *rbytes = opus;
+ opus_int16 *frame = pcm;
+ int totalSize = 0;
+ while (len >= s_frameSize)
+ {
+ opus_int32 length = opus_encode(enc, frame, s_frameSize, rbytes + sizeof(char), s_bitRate);
+ rbytes[0] = length;
+ frame += s_frameSize;
+ rbytes += length + sizeof(char);
+ len -= s_frameSize;
+ totalSize += (length+1);
+ }
+ opus_encoder_destroy(enc);
+ return totalSize;
+}
+
+extern "C" int native_opus_decode(unsigned char *opus, int len, short *pcm)
+{
+ int err = 0;
+ //opus_int32 skip = 0;
+
+ OpusDecoder *dec = opus_decoder_create(s_frequency, CHANNEL_NUM, &err);
+ if (err != OPUS_OK) {
+ dec = NULL;
+ return -1;
+ }
+
+ while (len > 0)
+ {
+ int frame_opus_length = opus[0];
+ int length = opus_decode(dec, opus + sizeof(char), frame_opus_length, pcm, s_frameSize, 0);
+ opus += sizeof(char) + frame_opus_length;
+ pcm += s_frameSize;
+ len = len - frame_opus_length - sizeof(char);
+ }
+ opus_decoder_destroy(dec);
+ return 0;
+}
--
Gitblit v1.8.0