Main/Assets/Plugins/iOS/PlatformHelper.mm

327 lines
8.6 KiB
Plaintext
Raw Permalink Normal View History

2025-01-25 04:38:09 +08:00
#include<stdio.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <sys/stat.h>
#include <net/if.h>
#include <net/if_dl.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
#import <mach/mach.h>
#import <mach/mach_host.h>
#import <sys/types.h>
#import <sys/param.h>
#import <sys/mount.h>
#import <mach/processor_info.h>
//#import "VPViewController.h"
#include <iostream.h>
#include <string>
float get_battery_level()
{
[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES];
float batteryLevel = [[UIDevice currentDevice] batteryLevel];
return batteryLevel;
}
/*
extern "C" const char* get_model(); // 手机型号
extern "C" const char* get_imsi(); // imsi
extern "C" const char* get_number(); // 手机号
extern "C" const char* get_simOperator(); // 运营商
extern "C" double get_maxRAM(); // 手机最大RAM
extern "C" const char* get_cpuName(); // 手机CPU型号
extern "C" const char* get_cpuFrequency(); // 手机CPU频率
extern "C" int get_cpuCores(); // 手机CPU个数
*/
extern "C" const char* get_model() // 手机型号
{
char* buf = new char[64];
const char* model = [[UIDevice currentDevice].model UTF8String];
memcpy(buf, model, strlen(model));
return buf;
}
//warning, private framework, comment in platform AppStore
#ifndef PLATFORM_APPSTORE
//extern NSString * CTSIMSupportCopyMobileSubscriberIdentity();
#endif
extern "C" const char* get_imsi() // imsi
{
char* buf = new char[64];
memset(buf, 0, 64);
#ifndef PLATFORM_APPSTORE
// maybe null
NSString* data = nil;//CTSIMSupportCopyMobileSubscriberIdentity();
if (data)
{
const char* var = [data UTF8String];
memcpy(buf, var, strlen(var));
}
#endif
return buf;
}
//warning, private framework, comment in platform AppStore
#ifndef PLATFORM_APPSTORE
//extern NSString *CTSettingCopyMyPhoneNumber();
#endif
extern "C" const char* get_number() // 手机号
{
char* buf = new char[64];
memset(buf, 0, 64);
#ifndef PLATFORM_APPSTORE
// maybe null
NSString* number = nil;//CTSettingCopyMyPhoneNumber();
if (number)
{
const char* var = [number UTF8String];
memcpy(buf, var, strlen(var));
}
#endif
return buf;
}
extern "C" const char* get_simOperator() // 运营商
{
char* buf = new char[64];
memset(buf, 0, 64);
//
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [info subscriberCellularProvider];
if (carrier != nil) {
NSString *carrierName = [carrier carrierName];
if (carrierName != nil)
{
const char* var = [carrierName UTF8String];
memcpy(buf, var, strlen(var));
}
}
return buf;
}
extern "C" const char* get_cpuName() // 手机CPU型号
{
char* buf = new char[64];
memset(buf, 0, 64);
/*
NSString* cpu = get_cpu_type();
const char* var = [cpu UTF8String];
memcpy(buf, var, strlen(var));
*/
return buf;
}
extern "C" const char* get_cpuFrequency() // 手机CPU频率
{
char* buf = new char[64];
memset(buf, 0, 64);
int result;
int mib[2];
mib[0] = CTL_HW;
mib[1] = HW_CPU_FREQ;
size_t length = sizeof(result);
//int sysctl(int *, u_int, void *, size_t *, void *, size_t);
if (sysctl(mib, 2, (void*)&result, &length, NULL, 0) < 0)
{
perror("getting cpu frequency");
}
sprintf(buf, "%d", result);
return buf;
}
extern "C" int get_cpuCores() // 手机CPU个数
{
unsigned int ncpu;
size_t len = sizeof(ncpu);
sysctlbyname("hw.ncpu", &ncpu, &len, NULL, 0);
return (int)ncpu;
}
// photo
/*
*等图片ok回调 ProgramRoot的NotifyChoosedPhoto(string photoPaht)
*/
extern void startChooseImage(const char* fileName, float width, float height);
std::string photoPath = "";
void chooseImageFinish(const char *fileName)
{
NSString* path = [NSString stringWithUTF8String:fileName];
NSRange range = [path rangeOfString:@"." options:NSBackwardsSearch];
if (range.length > 0)
path = [path substringToIndex:range.location];
if ([path compare:[NSString stringWithUTF8String:photoPath.c_str()]] != NSOrderedSame)
NSLog(@"diff path");
NSLog(@"Prepare image %@", path);
UnitySendMessage("ProgramRoot", "NotifyChoosedPhoto", path.UTF8String);
}
extern "C" void get_photo(int width, int height, const char* saveFilePath)
{
// NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSString* doc = [paths objectAtIndex:0];
// NSString* path = [doc stringByAppendingPathComponent:@"photo"];
photoPath = saveFilePath;
NSLog(@"path %s", saveFilePath);
// startChooseImage(saveFilePath, width, height);
}
extern "C" void open_url(const char* url)
{
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithUTF8String:url]]];
}
// c interface
extern "C"
{
// s talking data
extern "C" void InitTalkingData( const char* appId, const char* partnerId );
extern "C" void tdgaSetAccount( const char* accountId );
extern "C" void tdgaSetAccountType(int accountType);
extern "C" void tdgaSetGender( int gender);
extern "C" void tdgaSetAge(int age);
extern "C" void tdgaSetAccountName( const char* name );
extern "C" void tdgaSetLevel( int level );
extern "C" void tdgaSetGameServer( const char* gameServer );
extern "C" void tdgaOnPurchase( const char* item, int itemNumber, double priceInVirtualCurrency );
extern "C" void tdgaOnUse( const char* item, int itemNumber );
extern "C" void tdgaOnBegin( const char* missionId );
extern "C" void tdgaOnCompleted( const char* missionId );
extern "C" void tdgaOnFailed( const char* missionId, const char* cause );
extern "C" void tdgaOnEvent( const char* eventId, const char* jsonEventData );
extern "C" void tdgaOnReward( double virtualCurrencyAmount, const char* reason );
// sdk
extern "C" void init_platform_sdk();
extern "C" void set_appversion(const char* ver);
extern "C" void set_platform_id(int fgi);
extern "C" void set_platform_type(const char* ptype);
extern "C" void testin_Init (const char* appId, const char* channel);
extern "C" void testin_SetUserInfo (const char* userInfo);
extern "C" void testin_SetChannel (const char* channel);
extern "C" void testin_ReportCustomizedException (int type, const char* reason, const char* stackTrace);
void init_sdk(const char* appVer, const char* platformType, int fgi)
{
// set_appversion( appVer );
// set_platform_id( fgi );
// set_platform_type( platformType );
//
// init_platform_sdk();
}
/* void testinInit (const char* appId, const char* channel)
{
testin_Init(appId, channel);
}
void testinSetUserInfo (const char* userInfo)
{
testin_SetUserInfo(userInfo);
}
*/
void testinSetChannel (const char* channel)
{
//testin_SetChannel(channel);
}
/* void testinReportCustomizedException (int type, const char* reason, const char* stackTrace)
{
testin_ReportCustomizedException(type, reason, stackTrace);
} */
float get_battery_remain()
{
return get_battery_level();
}
// s talking data
void c_InitTalkingData( const char* appId, const char* partnerId )
{
InitTalkingData(appId, partnerId);
}
void c_tdgaSetAccount( const char* accountId )
{
tdgaSetAccount(accountId);
}
void c_tdgaSetAccountType(int accountType)
{
tdgaSetAccountType(accountType);
}
void c_tdgaSetGender( int gender)
{
tdgaSetGender(gender);
}
void c_tdgaSetAge(int age)
{
tdgaSetAge(age);
}
void c_tdgaSetAccountName( const char* name )
{
tdgaSetAccountName(name);
}
void c_tdgaSetLevel( int level )
{
tdgaSetLevel(level);
}
void c_tdgaSetGameServer( const char* gameServer )
{
tdgaSetGameServer(gameServer);
}
void c_tdgaOnPurchase( const char* item, int itemNumber, double priceInVirtualCurrency )
{
tdgaOnPurchase(item, itemNumber, priceInVirtualCurrency);
}
void c_tdgaOnUse( const char* item, int itemNumber )
{
tdgaOnUse(item, itemNumber);
}
void c_tdgaOnBegin( const char* missionId )
{
tdgaOnBegin(missionId);
}
void c_tdgaOnCompleted( const char* missionId )
{
tdgaOnCompleted(missionId);
}
void c_tdgaOnFailed( const char* missionId, const char* cause )
{
tdgaOnFailed(missionId, cause);
}
void c_tdgaOnEvent( const char* eventId, const char* jsonEventData )
{
tdgaOnEvent(eventId, jsonEventData);
}
void c_tdgaOnReward( double virtualCurrencyAmount, const char* reason )
{
tdgaOnReward(virtualCurrencyAmount, reason);
}
//st
}