You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.7 KiB
Objective-C
114 lines
3.7 KiB
Objective-C
/*
|
|
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
|