Main/Assets/Plugins/iOS/PlatformHelper.mm
2025-01-25 04:38:09 +08:00

327 lines
8.6 KiB
Plaintext
Raw Permalink 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.

#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
}