verificar verificacion solicita sesion puedo iniciar factores dispositivo desactivar con codigo autenticación autenticacion apple ios objective-c device mac-address

ios - verificacion - no puedo verificar mi id de apple



Obtención de ID de dispositivo o dirección Mac en iOS (6)

Esta pregunta ya tiene una respuesta aquí:

Tengo una aplicación que utiliza el resto para comunicarme con un servidor, me gustaría obtener los iphones, ya sea la dirección mac o la identificación del dispositivo para la validación de la singularidad, ¿cómo se puede hacer esto?


uniqueIdentifier (obsoleto en iOS 5.0. En su lugar, cree un identificador único específico para su aplicación).

Los documentos recomiendan el uso de CFUUIDCreate lugar de [[UIDevice currentDevice] uniqueIdentifier]

Así que aquí es cómo se genera una identificación única en su aplicación

CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault); NSString *uuidString = (NSString *)CFUUIDCreateString(NULL,uuidRef); CFRelease(uuidRef);

Tenga en cuenta que debe guardar el uuidString en los valores predeterminados del usuario o en otro lugar porque no puede volver a generar el mismo uuidString.

Puede usar UIPasteboard para almacenar su UIPasteboard generado. Y si la aplicación se eliminará y se reinstalará, puede leer en UIPasteboard el uuid anterior. La placa de pegado se borrará cuando se borre el dispositivo.

En iOS 6, han introducido la clase NSUUID que está diseñada para crear cadenas UUID.

También se agregaron en iOS 6 @property(nonatomic, readonly, retain) NSUUID *identifierForVendor a la clase UIDevice

El valor de esta propiedad es el mismo para las aplicaciones que provienen del mismo proveedor que se ejecuta en el mismo dispositivo. Se devuelve un valor diferente para las aplicaciones en el mismo dispositivo que provienen de diferentes proveedores, y para las aplicaciones en diferentes dispositivos sin importar el proveedor.

El valor de esta propiedad puede ser nulo si la aplicación se ejecuta en segundo plano, antes de que el usuario haya desbloqueado el dispositivo la primera vez después de que el dispositivo se haya reiniciado. Si el valor es nulo, espere y obtenga el valor nuevamente más tarde.

También en iOS 6 puede usar la clase ASIdentifierManager de AdSupport.framework. Ahí tienes

@property(nonatomic, readonly) NSUUID *advertisingIdentifier

Discusión A diferencia de la propiedad identifierForVendor del UIDevice, el mismo valor se devuelve a todos los proveedores. Este identificador puede cambiar, por ejemplo, si el usuario borra el dispositivo, por lo que no debe guardarlo en la memoria caché.

El valor de esta propiedad puede ser nulo si la aplicación se ejecuta en segundo plano, antes de que el usuario haya desbloqueado el dispositivo la primera vez después de que el dispositivo se haya reiniciado. Si el valor es nulo, espere y obtenga el valor nuevamente más tarde.

Editar:

Preste atención a que el advertisingIdentifier pueda volver.

00000000-0000-0000-0000-000000000000

Porque parece que hay un error en iOS. Pregunta relacionada: el ID de identificador de publicidad y el identificadorForVendor devuelven "00000000-0000-0000-0000-000000000000"


Aquí, podemos encontrar la dirección mac para el dispositivo IOS utilizando el código C # de Asp.net ...

.aspx.cs

- var UserDeviceInfo = HttpContext.Current.Request.UserAgent.ToLower(); // User''s Iphone/Ipad Info. var UserMacAdd = HttpContext.Current.Request.UserHostAddress; // User''s Iphone/Ipad Mac Address GetMacAddressfromIP macadd = new GetMacAddressfromIP(); if (UserDeviceInfo.Contains("iphone;")) { // iPhone Label1.Text = UserDeviceInfo; Label2.Text = UserMacAdd; string Getmac = macadd.GetMacAddress(UserMacAdd); Label3.Text = Getmac; } else if (UserDeviceInfo.Contains("ipad;")) { // iPad Label1.Text = UserDeviceInfo; Label2.Text = UserMacAdd; string Getmac = macadd.GetMacAddress(UserMacAdd); Label3.Text = Getmac; } else { Label1.Text = UserDeviceInfo; Label2.Text = UserMacAdd; string Getmac = macadd.GetMacAddress(UserMacAdd); Label3.Text = Getmac; }

archivo de clase

public string GetMacAddress(string ipAddress) { string macAddress = string.Empty; if (!IsHostAccessible(ipAddress)) return null; try { ProcessStartInfo processStartInfo = new ProcessStartInfo(); Process process = new Process(); processStartInfo.FileName = "arp"; processStartInfo.RedirectStandardInput = false; processStartInfo.RedirectStandardOutput = true; processStartInfo.Arguments = "-a " + ipAddress; processStartInfo.UseShellExecute = false; process = Process.Start(processStartInfo); int Counter = -1; while (Counter <= -1) { Counter = macAddress.Trim().ToLower().IndexOf("mac address", 0); if (Counter > -1) { break; } macAddress = process.StandardOutput.ReadLine(); if (macAddress != "") { string[] mac = macAddress.Split('' ''); if (Array.IndexOf(mac, ipAddress) > -1) { if (mac[11] != "") { macAddress = mac[11].ToString(); break; } } } } process.WaitForExit(); macAddress = macAddress.Trim(); } catch (Exception e) { Console.WriteLine("Failed because:" + e.ToString()); } return macAddress; }



Para una dirección de Mac que podría utilizar

#import <Foundation/Foundation.h> @interface MacAddressHelper : NSObject + (NSString *)getMacAddress; @end

implentación

#import "MacAddressHelper.h" #import <sys/socket.h> #import <sys/sysctl.h> #import <net/if.h> #import <net/if_dl.h> @implementation MacAddressHelper + (NSString *)getMacAddress { int mgmtInfoBase[6]; char *msgBuffer = NULL; size_t length; unsigned char macAddress[6]; struct if_msghdr *interfaceMsgStruct; struct sockaddr_dl *socketStruct; NSString *errorFlag = NULL; // Setup the management Information Base (mib) mgmtInfoBase[0] = CTL_NET; // Request network subsystem mgmtInfoBase[1] = AF_ROUTE; // Routing table info mgmtInfoBase[2] = 0; mgmtInfoBase[3] = AF_LINK; // Request link layer information mgmtInfoBase[4] = NET_RT_IFLIST; // Request all configured interfaces // With all configured interfaces requested, get handle index if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0) errorFlag = @"if_nametoindex failure"; else { // Get the size of the data available (store in len) if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0) errorFlag = @"sysctl mgmtInfoBase failure"; else { // Alloc memory based on above call if ((msgBuffer = malloc(length)) == NULL) errorFlag = @"buffer allocation failure"; else { // Get system information, store in buffer if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0) errorFlag = @"sysctl msgBuffer failure"; } } } // Befor going any further... if (errorFlag != NULL) { NSLog(@"Error: %@", errorFlag); return errorFlag; } // Map msgbuffer to interface message structure interfaceMsgStruct = (struct if_msghdr *) msgBuffer; // Map to link-level socket structure socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1); // Copy link layer address data in socket structure to an array memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6); // Read from char array into a string object, into traditional Mac address format NSString *macAddressString = [NSString stringWithFormat:@"%02X:%02X:%02X:%02X:%02X:%02X", macAddress[0], macAddress[1], macAddress[2], macAddress[3], macAddress[4], macAddress[5]]; //NSLog(@"Mac Address: %@", macAddressString); // Release the buffer memory free(msgBuffer); return macAddressString; } @end

Utilizar:

NSLog(@"MAC address: %@",[MacAddressHelper getMacAddress]);


Utilizar esta:

NSUUID *id = [[UIDevice currentDevice] identifierForVendor]; NSLog(@"ID: %@", id);


[[UIDevice currentDevice] uniqueIdentifier] está garantizado para ser único para cada dispositivo.