- 浏览: 238893 次
- 性别:
- 来自: 北京
最新评论
-
windylel:
你的证书通过ca认证了吗?
iOS 7.1下itms-services在线安装失败的解决方法 -
lkocok2:
siruoxian 写道这个不是直接修改就可以。需要专门的服务 ...
iOS 7.1下itms-services在线安装失败的解决方法 -
zxy2543:
ssl验证必须通过什么机构认证吗?
iOS 7.1下itms-services在线安装失败的解决方法 -
zxy2543:
https://example.com/manifest.pl ...
iOS 7.1下itms-services在线安装失败的解决方法 -
siruoxian:
这个不是直接修改就可以。需要专门的服务器来支持。这个我已经验证 ...
iOS 7.1下itms-services在线安装失败的解决方法
好文章收藏一下
IOS IMEI 获取
//
// network.h
// AUOiWay_Mobile
//
// Created by Mahmood1 on 2/21/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>
#define SUPPORTS_IOKIT_EXTENSIONS 1
/*
* To use, you must add the (semi)public IOKit framework before compiling
*/
#if SUPPORTS_IOKIT_EXTENSIONS
@interface UIDevice (IOKit_Extensions)
- (NSString *) imei;
- (NSString *) serialnumber;
- (NSString *) backlightlevel;
- (NSString *) macaddress;
@end
#endif
//
// network.m
// AUOiWay_Mobile
//
// Created by Mahmood1 on 2/21/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import "network.h"
#include <sys/types.h>
#include <sys/sysctl.h>
#import <mach/mach_host.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <ifaddrs.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/if_dl.h>
#include <ifaddrs.h>
#if SUPPORTS_IOKIT_EXTENSIONS
#pragma mark IOKit miniheaders
#define kIODeviceTreePlane "IODeviceTree"
enum {
kIORegistryIterateRecursively = 0x00000001,
kIORegistryIterateParents = 0x00000002
};
typedef mach_port_t io_object_t;
typedef io_object_t io_registry_entry_t;
typedef char io_name_t[128];
typedef UInt32 IOOptionBits;
CFTypeRef
IORegistryEntrySearchCFProperty(
io_registry_entry_t entry,
const io_name_t plane,
CFStringRef key,
CFAllocatorRef allocator,
IOOptionBits options );
kern_return_t
IOMasterPort( mach_port_t bootstrapPort,
mach_port_t * masterPort );
io_registry_entry_t
IORegistryGetRootEntry(
mach_port_t masterPort );
CFTypeRef
IORegistryEntrySearchCFProperty(
io_registry_entry_t entry,
const io_name_t plane,
CFStringRef key,
CFAllocatorRef allocator,
IOOptionBits options );
kern_return_t mach_port_deallocate
(ipc_space_t task,
mach_port_name_t name);
@implementation UIDevice (IOKit_Extensions)
#pragma mark IOKit Utils
NSArray *getValue(NSString *iosearch)
{
mach_port_t masterPort;
CFTypeID propID = (CFTypeID) NULL;
unsigned int bufSize;
kern_return_t kr = IOMasterPort(MACH_PORT_NULL, &masterPort);
if (kr != noErr) return nil;
io_registry_entry_t entry = IORegistryGetRootEntry(masterPort);
if (entry == MACH_PORT_NULL) return nil;
CFTypeRef prop = IORegistryEntrySearchCFProperty(entry,kIODeviceTreePlane, (CFStringRef) iosearch, nil,kIORegistryIterateRecursively);
if (!prop) return nil;
propID = CFGetTypeID(prop);
if (!(propID == CFDataGetTypeID()))
{
mach_port_deallocate(mach_task_self(), masterPort);
return nil;
}
CFDataRef propData = (CFDataRef) prop;
if (!propData) return nil;
bufSize = CFDataGetLength(propData);
if (!bufSize) return nil;
//NSString *p1 = [[[NSString alloc] initWithBytes:CFDataGetBytePtr(propData) length:bufSize encoding:1] autorelease];
NSString *p1 = [[[NSString alloc]initWithBytes:CFDataGetBytePtr(propData) length:bufSizeencoding:NSUTF8StringEncoding] autorelease];
mach_port_deallocate(mach_task_self(), masterPort);
return [p1 componentsSeparatedByString:@"/0"];
}
- (NSString *) imei
{
NSArray *results = getValue(@"device-imei");
if (results)
{
//return [results objectAtIndex:0];
NSString *string_content = [results objectAtIndex:0];
const char *char_content = [string_content UTF8String];
return [[NSString alloc] initWithCString:(constchar*)char_content encoding:NSUTF8StringEncoding];
}
//if(results)
//{
// return [(NSString *)[results objectAtIndex:0] substringToIndex:2];
// }
return @"";
}
- (NSString *) serialnumber
{
NSArray *results = getValue(@"serial-number");
if (results) return [results objectAtIndex:0];
return nil;
}
- (NSString *) backlightlevel
{
NSArray *results = getValue(@"backlight-level");
if (results) return [results objectAtIndex:0];
return nil;
}
- (NSString *) macaddress
{
int mib[6];
size_t len;
char *buf;
unsigned char *ptr;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
mib[0] = CTL_NET;
mib[1] = AF_ROUTE;
mib[2] = 0;
mib[3] = AF_LINK;
mib[4] = NET_RT_IFLIST;
if ((mib[5] = if_nametoindex("en0")) == 0) {
printf("Error: if_nametoindex error/n");
return NULL;
}
if (sysctl(mib, 6, NULL, &len, NULL, 0) < 0) {
printf("Error: sysctl, take 1/n");
return NULL;
}
if ((buf = malloc(len)) == NULL) {
printf("Could not allocate memory. error!/n");
return NULL;
}
if (sysctl(mib, 6, buf, &len, NULL, 0) < 0) {
printf("Error: sysctl, take 2");
return NULL;
}
ifm = (struct if_msghdr *)buf;
sdl = (struct sockaddr_dl *)(ifm + 1);
ptr = (unsigned char *)LLADDR(sdl);
NSString *outstring = [NSStringstringWithFormat:@"%02x%02x%02x%02x%02x%02x", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5)];
free(buf);
return [outstring uppercaseString];
}
@end
#endif
发表评论
-
[NetworkInfo] Signal strength query returned error: Error Domain=NSPOSIXErrorDom
2019-02-28 18:07 13511最近使用Xcode 10.1运行App的时候,控制台总是频繁 ... -
Xcode10 运行报错 Copy Pods Resources
2018-10-09 15:29 2181Showing Recent Messages :- ... -
常见的IOS APP所用到的第三方库
2018-03-14 16:50 2450转自:http://www.liuchendi. ... -
Xcode9-expected parameter declarator
2018-01-12 13:42 1034check_compile_time() expected ... -
Xcode中的环境变量
2018-01-11 15:46 822一般我们在xcode里面配置包含工程目录下头文件 ... -
判断当前设备是否是64位设备
2018-01-03 10:55 672//判断当前设备是否是64位设备,也可以用这个方法判断是否是3 ... -
linker command failed with exit code 1
2017-05-12 19:39 629升级到Xcode8之后遇到文件冲突,错误如下: erro ... -
华厦邓白氏码查询网址
2015-10-23 10:58 1985话不多说,地址如下: https://www.dandb. ... -
获取手机所有安装的app
2015-05-07 11:09 1126#include <objc/runtim ... -
关于JS与Native通信时,消息丢失的解决方案
2015-04-27 11:15 897加载一个隐藏的iframe来实现的,通过将iframe的s ... -
推送证书生成
2015-01-23 11:37 959生成pem步骤:1.下载下来你配置好的推送证书aps_deve ... -
获取当前类中所有的方法
2014-12-30 10:40 1025#import <objc/runtime.h& ... -
获取当前网络类型
2014-12-19 14:23 637// 0:无网络 1:2g 2:3g 3:4g 5:wif ... -
oc调用CMD命令
2014-12-19 14:16 2081- (NSString *)executeComma ... -
PushMeBaby 发布证书推送失败
2014-07-18 17:29 2265开发证书正常。切换到发布证书报错:SSLWrite(): - ... -
10.9.3 系统,安装过Xcode6.0后,4.6 及4.4版本都不能用了
2014-06-24 18:06 1536UNCAUGHT EXCEPTION (NSInte ... -
unable to open object file
2014-06-18 14:19 822/Users/username/Desktop/proj/ ... -
IOS 宏定义
2014-05-13 14:31 895网上看到文章,收藏一下。 系统宏汇集 __FILE__ ... -
自动化打包 ios
2014-04-17 18:33 1367通常打包采用xcodebuild和xcrun两个命令,xco ... -
IOS 获取当前系统运行进程
2014-04-02 15:07 1429+ (NSArray *)runningProcesses ...
相关推荐
在iOS系统中,UDID(Unique Device Identifier)是设备独一无二的标识符,IMEI(International Mobile Equipment Identity)是国际移动设备识别码,SN(Serial Number)是设备序列号,而ICCID(Integrated Circuit ...
在C#编程环境中,如果你需要在Windows Phone、Android或iOS等平台上获取IMEI,你需要根据不同的平台实现不同的方法。本篇文章将详细讲解如何在C#中获取IMEI,主要针对Windows Phone和Android平台。 对于Windows ...
在iOS 7及更高版本中,直接获取IMEI的方法已经被废弃,现在需要通过更复杂的方式才能获取到。 要获取IMEI,你需要在你的项目中引入`UIKit`和`IOKit`框架。`UIKit`主要用于UI交互,而`IOKit`则提供了一种方法来访问...
- `GetiOSDeviceIdentifier`: 用于获取iOS设备的唯一标识,可能包括IDFA、UUID等。 - `GetAndroidDeviceIdentifier`: 用于获取Android设备的唯一标识,可能使用ANDROID_ID或其他方式。 - `...
对于iOS系统,使用`UIDevice`类的`identifierForVendor`属性可以获取类似的唯一标识符,但请注意这并不等同于IMEI,因为苹果出于隐私考虑不提供直接获取IMEI的API。不过,在特定条件下,如通过诊断服务,可以间接...
### 不同手机设备获取IMEI方法详解 #### 一、前言 国际移动设备身份(International Mobile Equipment Identity,简称IMEI)是每台移动电话所独有的编号,它可以帮助运营商识别和跟踪每一部设备,用于防盗和其他...
#### JNI与IMEI获取 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言编写的代码进行交互,如C/C++。在Android开发中,JNI常被用来实现性能要求较高的部分或者调用特定平台的API,...
3. 操作系统权限:了解如何在Android或iOS等系统中获取必要的权限。 4. 安全性:理解IMEI修改的潜在风险和法规限制。 5. 编程技能:掌握至少一种编程语言,并熟悉相关库或框架。 在实际操作中,务必注意遵循法律...
然而,苹果自iOS 7开始限制了获取IMEI和UDID(唯一设备标识符)的行为,因为它们被认为侵犯用户隐私,所以现在不能直接获取IMEI,只能通过诊断接口在特定情况下访问。 在跨平台开发中,如使用React Native或Flutter...
在iOS开发中,有时我们需要获取设备的特定标识信息,例如IMSI(国际移动用户识别码)来识别手机的网络运营商或手机号。本文将详细介绍如何使用Objective-C编程语言获取iPhone的IMSI序列号,并通过该序列号获取运营商...
在Android开发中,获取手机的唯一标识是一个常见的需求,用于区分不同的设备,便于数据分析或个性化服务。Android系统提供了多种方式来获取设备的标识,但随着系统版本的更新和隐私保护政策的变化,这些方法的可用性...
例如,Android的TelephonyManager类可以获取IMEI,而iOS则提供了UIDevice的identifierForVendor属性来获取device_id。 在实际操作中,开发人员需要注意以下几点: 1. **合规性**:获取和使用这些数据必须符合GDPR等...
Unity3d获得android和ios设备的唯一标识-附件资源
序列号下面是设备的IMEI(国际移动设备识别码),而IMEI下面就是你要找的UDID。UDID通常显示为一串较长的字母数字组合。 5. 获取UDID的关键步骤来了:由于UDID不是可选中的文本,你不能直接通过鼠标来选中它。但你...
对于小于android 10的Android设备获取IMEI(国际移动设备身份),并且对android的运行时权限大于或等于10,将返回UUID并在ios上获取唯一标识。字母数字字符串,用于为应用程序提供商唯一标识设备。 使用 import '...
其次,"读取iOS设备信息"涵盖的内容非常广泛,包括但不限于设备型号、系统版本、序列号、IMEI、UDID(唯一设备标识符)、电池状态、存储容量等。这些信息可以通过苹果的Foundation框架中的类如UIDevice来获取。在iOS...
iOS则不允许应用直接获取IMEI,但可以使用`identifierForVendor`来获取一个设备相关的UUID。 7. **IMSI(国际移动用户识别码)**:这是SIM卡的唯一标识,通常用于网络通信。由于隐私和安全原因,Android和iOS都不...
此外,如果你需要更深度的设备信息,例如序列号或IMEI,可能需要借助更复杂的库,如`pyusb`或`pyobjc`,并通过USB接口与设备进行通信。 在实际应用中,为了确保代码的稳定性和兼容性,你需要考虑不同iOS版本、...
本文将详细讲解如何在Android和iOS平台上获取设备的唯一标识。 首先,我们来看看Android平台上的实现方法。在Android系统中,曾经有多种方式可以获取设备的唯一标识,如IMEI(International Mobile Equipment ...
例如,发送`AT+CSIM`命令可以获取SIM卡内容,而`AT+CGSN`用于获取IMEI。在.NET中,你可以使用`SerialPort`类来发送和接收这些命令。 3. **设备管理API**: 对于Windows平台,可以通过Windows Device Access API...