iOS 獲取裝置uuid,公網ip,手機ip等資訊
最近公司app需要新增獲取使用者資訊的新功能。將這些 功能寫下來,以備不時之需。
獲取手機uuid
+ (String *)getUUID
{
return [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
獲取作業系統版本
+ (float)getIOSVersion
{
return [[[UIDevice currentDevice] systemVersion] floatValue];
}
獲取位置資訊
設定請求訪問資訊
<key>NSLocationWhenInUseUsageDescription</key>
<string>when</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>always</string>
完整程式碼
#import <CoreLocation/CoreLocation.h>
@interface MainViewController ()<CLLocationManagerDelegate>
{
CLLocationManager *locationmanager;//定位服務
NSString *currentCity;//當前城市
NSString *strlatitude;//經度
NSString *strlongitude;//緯度
}
@end
@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self startLocation];
// Do any additional setup after loading the view.
}
//開始定位
- (void)startLocation {
if ([CLLocationManager locationServicesEnabled]) {
// CLog(@"--------開始定位");
self.locationManager = [[CLLocationManager alloc]init];
self.locationManager.delegate = self;
//控制定位精度,越高耗電量越大
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
// 總是授權
[self.locationManager requestAlwaysAuthorization];
self.locationManager.distanceFilter = 10.0f;
[self.locationManager requestAlwaysAuthorization];
[self.locationManager startUpdatingLocation];
}
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
if ([error code] == kCLErrorDenied) {
CLog(@"訪問被拒絕");
}
if ([error code] == kCLErrorLocationUnknown) {
CLog(@"無法獲取位置資訊");
}
}
//定位代理經緯度回撥
#pragma mark 定位成功後則執行此代理方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
[locationmanager stopUpdatingHeading];
//舊址
CLLocation *currentLocation = [locations lastObject];
CLGeocoder *geoCoder = [[CLGeocoder alloc]init];
//列印當前的經度與緯度
NSLog(@"%f,%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude);
//反地理編碼
[geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
if (placemarks.count > 0) {
CLPlacemark *placeMark = placemarks[0];
currentCity = placeMark.locality;
if (!currentCity) {
currentCity = @"無法定位當前城市";
}
/*看需求定義一個全域性變數來接收賦值*/
NSLog(@"----%@",placeMark.country);//當前國家
NSLog(@"%@",currentCity);//當前的城市
// NSLog(@"%@",placeMark.subLocality);//當前的位置
// NSLog(@"%@",placeMark.thoroughfare);//當前街道
// NSLog(@"%@",placeMark.name);//具體地址
}
}];
}
獲取公網ip
+(NSString *)deviceWANIPAddress
{
NSURL *ipURL = [NSURL URLWithString:@"http://ip.taobao.com/service/getIpInfo.php?ip=myip"];
NSData *data = [NSData dataWithContentsOfURL:ipURL];
NSDictionary *ipDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];?
NSString *ipStr = nil;
if (ipDic && [ipDic[@"code"] integerValue] == 0) { //獲取成功
ipStr = ipDic[@"data"][@"ip"];
}
return (ipStr ? ipStr : @"");
}
獲取當前時間
獲取當前時間
- (NSString *)currentDateStr{
NSDate *currentDate = [NSDate date];//獲取當前時間,日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 建立一個時間格式化物件
[dateFormatter setDateFormat:@"YYYY/MM/dd hh:mm:ss SS "];//設定時間格式,這裡可以設定成自己需要的格式
NSString *dateString = [dateFormatter stringFromDate:currentDate];//將時間轉化成字串
return dateString;
}
獲取當前時間戳
//獲取當前時間戳
- (NSString *)currentTimeStr{
NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//獲取當前時間0秒後的時間
NSTimeInterval time=[date timeIntervalSince1970]*1000;// *1000 是精確到毫秒,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%.0f", time];
return timeString;
}
獲取移動端ip
需要的標頭檔案
//IP地址需求庫
#import <sys/socket.h>
#import <sys/sockio.h>
#import <sys/ioctl.h>
#import <net/if.h>
#import <arpa/inet.h>
獲取ip地址
//獲取裝置IP地址
+ (NSString *)getDeviceIPAddresses
{
int sockfd = socket(AF_INET,SOCK_DGRAM, 0);
// if (sockfd <</span> 0) return nil; //這句報錯,由於轉載的,不太懂,註釋掉無影響,懂的大神歡迎指導
NSMutableArray *ips = [NSMutableArray array];
int BUFFERSIZE =4096;
struct ifconf ifc;
char buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr;
struct ifreq *ifr, ifrcopy;
ifc.ifc_len = BUFFERSIZE;
ifc.ifc_buf = buffer;
if (ioctl(sockfd,SIOCGIFCONF, &ifc) >= 0){
for (ptr = buffer; ptr < buffer + ifc.ifc_len; ){
ifr = (struct ifreq *)ptr;
int len =sizeof(struct sockaddr);
if (ifr->ifr_addr.sa_len > len) {
len = ifr->ifr_addr.sa_len;
}
ptr += sizeof(ifr->ifr_name) + len;
if (ifr->ifr_addr.sa_family !=AF_INET) continue;
if ((cptr = (charchar *)strchr(ifr->ifr_name,':')) != NULL) *cptr =0;
if (strncmp(lastname, ifr->ifr_name,IFNAMSIZ) == 0)continue;
memcpy(lastname, ifr->ifr_name,IFNAMSIZ);
ifrcopy = *ifr;
ioctl(sockfd,SIOCGIFFLAGS, &ifrcopy);
if ((ifrcopy.ifr_flags &IFF_UP) == 0)continue;
NSString *ip = [NSString stringWithFormat:@"%s",inet_ntoa(((struct sockaddr_in *)&ifr->ifr_addr)->sin_addr)];
[ips addObject:ip];
}
}
close(sockfd);
NSString *deviceIP =@"";
for (int i=0; i < ips.count; i++){
if (ips.count >0){
deviceIP = [NSString stringWithFormat:@"%@",ips.lastObject];
}
}
return deviceIP;
}
以上方法沒有進行測試,使用時需要自己測試。
最後給出自己的個人部落格。
相關文章
- 獲取手機外網IP
- iOS 獲取本機的裝置資訊UIDeviceiOSUIIDEdev
- reactnative獲取裝置真實ip地址和ip對映的地理位置React
- 獲取外網出口ip
- python爬蟲從ip池獲取隨機IPPython爬蟲隨機
- spring boot 獲取客戶端ip資訊Spring Boot客戶端
- jQuery獲取本機ip地址jQuery
- 獲取Linux本機IP命令Linux
- python如何獲取本機ipPython
- Linux: 獲取硬碟的UUID資訊Linux硬碟UI
- 工具網站推薦 - 獲取本機外網IP網站
- 全球IP whois資訊獲取與情報挖掘
- 前端Js獲取本網IP和外網IP方法總彙前端JS
- java獲取本機的ip地址Java
- 開發中常用工具 - 獲取裝置的唯一標識、UDID、UUID、keychain儲存UUID、判斷網路型別等UIAI型別
- saltstack獲取IP地址
- 彈性公網IP(Elastic IP,EIP)AST
- iOS裝置具體型號獲取iOS
- 虛擬機器網路設定 與dhcp 獲取ip虛擬機
- Android12以上獲取裝置網路訊號資料Android
- Python獲取IP地址對應的地理位置資訊!Python
- 【RAC】如何修改SCAN IP的IP地址、名稱、埠等資訊
- 網路爬蟲如何獲取IP進行資料抓取爬蟲
- Oracle中獲取主機名和IP地址Oracle
- js獲取裝置資訊的方法彙總JS
- linux驅動之獲取裝置樹資訊Linux
- Bash命令查詢本機公網IP
- ios 手機驗證碼獲取iOS
- C#使用ManagementObjectSearcher獲取本計算機CPU,硬碟,記憶體條等相關裝置資訊C#Object計算機硬碟記憶體
- Java實現獲取本機Ip的工具類Java
- Java獲取使用者IPJava
- 如何獲取海外住宅IP地址?
- 美國ip地址如何獲取?
- iOS獲取SIM卡資訊iOS
- 什麼是公網IP、內網IP和NAT轉換?內網
- 解釋下內網IP和公網IP是什麼?內網
- HarmonyOS 如何獲取裝置資訊(系統、版本、網路連線狀態)
- 網路裝置配置與管理————11、配置主機名、時鐘、IP地址