Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
		
							parent
							
								
									2ada817f40
								
							
						
					
					
						commit
						5a01055b8c
					
				
							
								
								
									
										113
									
								
								js/ui/cordova/plugins/cordova-plugin-device/src/osx/CDVDevice.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								js/ui/cordova/plugins/cordova-plugin-device/src/osx/CDVDevice.m
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,113 @@
 | 
			
		|||
/*
 | 
			
		||||
 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/sysctl.h>
 | 
			
		||||
 | 
			
		||||
#import "CDVDevice.h"
 | 
			
		||||
 | 
			
		||||
#define SYSTEM_VERSION_PLIST    @"/System/Library/CoreServices/SystemVersion.plist"
 | 
			
		||||
 | 
			
		||||
@implementation CDVDevice
 | 
			
		||||
 | 
			
		||||
- (NSString*) modelVersion {
 | 
			
		||||
    size_t size;
 | 
			
		||||
 | 
			
		||||
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
 | 
			
		||||
    char* machine = malloc(size);
 | 
			
		||||
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
 | 
			
		||||
    NSString* modelVersion = [NSString stringWithUTF8String:machine];
 | 
			
		||||
    free(machine);
 | 
			
		||||
 | 
			
		||||
    return modelVersion;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
- (NSString*) getSerialNr {
 | 
			
		||||
    NSString* serialNr;
 | 
			
		||||
    io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"));
 | 
			
		||||
    if (platformExpert) {
 | 
			
		||||
        CFTypeRef serialNumberAsCFString =
 | 
			
		||||
                IORegistryEntryCreateCFProperty(platformExpert,
 | 
			
		||||
                        CFSTR(kIOPlatformSerialNumberKey),
 | 
			
		||||
                        kCFAllocatorDefault, 0);
 | 
			
		||||
        if (serialNumberAsCFString) {
 | 
			
		||||
            serialNr = (__bridge NSString*) serialNumberAsCFString;
 | 
			
		||||
        }
 | 
			
		||||
        IOObjectRelease(platformExpert);
 | 
			
		||||
    }
 | 
			
		||||
    return serialNr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (NSString*) uniqueAppInstanceIdentifier {
 | 
			
		||||
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
 | 
			
		||||
    static NSString* UUID_KEY = @"CDVUUID";
 | 
			
		||||
 | 
			
		||||
    NSString* app_uuid = [userDefaults stringForKey:UUID_KEY];
 | 
			
		||||
 | 
			
		||||
    if (app_uuid == nil) {
 | 
			
		||||
        CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
 | 
			
		||||
        CFStringRef uuidString = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
 | 
			
		||||
 | 
			
		||||
        app_uuid = [NSString stringWithString:(__bridge NSString*) uuidString];
 | 
			
		||||
        [userDefaults setObject:app_uuid forKey:UUID_KEY];
 | 
			
		||||
        [userDefaults synchronize];
 | 
			
		||||
 | 
			
		||||
        CFRelease(uuidString);
 | 
			
		||||
        CFRelease(uuidRef);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return app_uuid;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (NSString*) platform {
 | 
			
		||||
    return [NSDictionary dictionaryWithContentsOfFile:SYSTEM_VERSION_PLIST][@"ProductName"];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (NSString*) systemVersion {
 | 
			
		||||
    return [NSDictionary dictionaryWithContentsOfFile:SYSTEM_VERSION_PLIST][@"ProductVersion"];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
- (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 {
 | 
			
		||||
    NSMutableDictionary* devProps = [NSMutableDictionary dictionaryWithCapacity:4];
 | 
			
		||||
 | 
			
		||||
    devProps[@"manufacturer"] = @"Apple";
 | 
			
		||||
    devProps[@"model"] = [self modelVersion];
 | 
			
		||||
    devProps[@"platform"] = [self platform];
 | 
			
		||||
    devProps[@"version"] = [self systemVersion];
 | 
			
		||||
    devProps[@"uuid"] = [self uniqueAppInstanceIdentifier];
 | 
			
		||||
    devProps[@"cordova"] = [[self class] cordovaVersion];
 | 
			
		||||
    devProps[@"serial"] = [self getSerialNr];
 | 
			
		||||
    devProps[@"isVirtual"] = @NO;
 | 
			
		||||
 | 
			
		||||
    NSDictionary* devReturn = [NSDictionary dictionaryWithDictionary:devProps];
 | 
			
		||||
    return devReturn;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
+ (NSString*) cordovaVersion {
 | 
			
		||||
    return CDV_VERSION;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@end
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user