Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
e314586a84
commit
8454b8ddde
112
js/ui/cordova/plugins/cordova-plugin-device/src/ios/CDVDevice.m
Normal file
112
js/ui/cordova/plugins/cordova-plugin-device/src/ios/CDVDevice.m
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
/*
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/sysctl.h>
|
||||||
|
#include "TargetConditionals.h"
|
||||||
|
|
||||||
|
#import <Cordova/CDV.h>
|
||||||
|
#import "CDVDevice.h"
|
||||||
|
|
||||||
|
@implementation UIDevice (ModelVersion)
|
||||||
|
|
||||||
|
- (NSString*)modelVersion
|
||||||
|
{
|
||||||
|
size_t size;
|
||||||
|
|
||||||
|
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
|
||||||
|
char* machine = malloc(size);
|
||||||
|
sysctlbyname("hw.machine", machine, &size, NULL, 0);
|
||||||
|
NSString* platform = [NSString stringWithUTF8String:machine];
|
||||||
|
free(machine);
|
||||||
|
|
||||||
|
return platform;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface CDVDevice () {}
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation CDVDevice
|
||||||
|
|
||||||
|
- (NSString*)uniqueAppInstanceIdentifier:(UIDevice*)device
|
||||||
|
{
|
||||||
|
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
|
||||||
|
static NSString* UUID_KEY = @"CDVUUID";
|
||||||
|
|
||||||
|
// Check user defaults first to maintain backwards compaitibility with previous versions
|
||||||
|
// which didn't user identifierForVendor
|
||||||
|
NSString* app_uuid = [userDefaults stringForKey:UUID_KEY];
|
||||||
|
if (app_uuid == nil) {
|
||||||
|
if ([device respondsToSelector:@selector(identifierForVendor)]) {
|
||||||
|
app_uuid = [[device identifierForVendor] UUIDString];
|
||||||
|
} else {
|
||||||
|
CFUUIDRef uuid = CFUUIDCreate(NULL);
|
||||||
|
app_uuid = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid);
|
||||||
|
CFRelease(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
[userDefaults setObject:app_uuid forKey:UUID_KEY];
|
||||||
|
[userDefaults synchronize];
|
||||||
|
}
|
||||||
|
|
||||||
|
return app_uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)getDeviceInfo:(CDVInvokedUrlCommand*)command
|
||||||
|
{
|
||||||
|
NSDictionary* deviceProperties = [self deviceProperties];
|
||||||
|
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:deviceProperties];
|
||||||
|
|
||||||
|
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSDictionary*)deviceProperties
|
||||||
|
{
|
||||||
|
UIDevice* device = [UIDevice currentDevice];
|
||||||
|
|
||||||
|
return @{
|
||||||
|
@"manufacturer": @"Apple",
|
||||||
|
@"model": [device modelVersion],
|
||||||
|
@"platform": @"iOS",
|
||||||
|
@"version": [device systemVersion],
|
||||||
|
@"uuid": [self uniqueAppInstanceIdentifier:device],
|
||||||
|
@"cordova": [[self class] cordovaVersion],
|
||||||
|
@"isVirtual": @([self isVirtual])
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (NSString*)cordovaVersion
|
||||||
|
{
|
||||||
|
return CDV_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isVirtual
|
||||||
|
{
|
||||||
|
#if TARGET_OS_SIMULATOR
|
||||||
|
return true;
|
||||||
|
#elif TARGET_IPHONE_SIMULATOR
|
||||||
|
return true;
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
Loading…
Reference in New Issue
Block a user