¿Hay alguna forma de obtener su propio número de teléfono mediante las API estándar del SDK de iPhone?Obtenga su propio número de teléfono mediante programación en iOS
Respuesta
A riesgo de obtener marcas negativas, quiero sugerir que la solución de mayor rango (actualmente la primera respuesta) viola el último Acuerdo de SDK desde el 5 de noviembre de 2009. Nuestra aplicación fue rechazada por usarla. Aquí está la respuesta de Apple:
"Por razones de seguridad, iPhone OS restringe una aplicación (incluyendo sus preferencias y datos) a una ubicación única en el sistema de archivos. Esta restricción es parte de la característica de seguridad conocida como" sandbox "de la aplicación . "La zona de pruebas es un conjunto de controles detallados que limitan el acceso de una aplicación a archivos, preferencias, recursos de red, hardware, etc.".
El número de teléfono del dispositivo no está disponible en el contenedor de la aplicación. Deberá revisar su aplicación para que se lea solo dentro de su contenedor de directorio y volver a enviar su archivo binario a iTunes Connect para que su aplicación sea reconsiderada para la App Store.
Esto fue una verdadera decepción ya que queríamos evitar que el usuario tenga que ingresar su propio número de teléfono.
¿Cómo lo hace Snapchat? – rgbrgb
@Dylan: ¿Cuándo se rechazó su aplicación? ¿Se han revisado las pautas? Proporcione enlaces útiles a la documentación. Sin embargo, aprecio tu respuesta. –
¿Puedo obtener el enlace de la documentación de apple.developer donde se menciona esto? –
No, no hay una forma legal y confiable de hacerlo.
Si encuentra una manera, se deshabilitará en el futuro, como ha sucedido con todos los métodos anteriores.
No estoy seguro de por qué esto recibe tantos votos atrasados - es tan correcto como se pone. –
Ver la respuesta de Nik Burn: http://stackoverflow.com/a/8415162/292166 - ¡existe (más o menos) una forma de hacer esto! – JosephH
¿Cuál es la mejor razón que ha visto para que Apple no permita el acceso basado en permisos al número de teléfono del usuario? Apple ya permite el acceso basado en permisos a contactos, fotos, ubicación y la cámara y el micrófono del usuario. ¿Por qué no el número de teléfono? Debe haber una buena razón, pero no está inmediatamente claro. Es desafortunado porque prohibir el acceso hace que los desarrolladores gasten mucho tiempo y dinero en otras formas de verificar el número de teléfono de un usuario. – Crashalot
Actualización: capacidad parece haber sido eliminado por Apple en o alrededor de iOS 4
Sólo se expanda en una respuesta anterior, algo como esto lo hace por mí:
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
Nota: Recupera el "Número de teléfono" que se ingresó durante la activación de iTunes del iPhone y puede ser nulo o un valor incorrecto. Es NO leer desde la tarjeta SIM.
Al menos eso hace en 2.1. Hay un par de otras claves interesantes en NSUserDefaults que también pueden no durar. (Esto es en mi aplicación que utiliza un UIWebView)
WebKitJavaScriptCanOpenWindowsAutomatically
NSInterfaceStyle
TVOutStatus
WebKitDeveloperExtrasEnabledPreferenceKey
y así sucesivamente.
No estoy seguro de qué hacen los demás, en todo caso.
Ha habido algunas noticias recientes sobre las preocupaciones de seguridad detrás de esta habilidad: http://www.theregister.co.uk/2009/09/30/iphone_security/ – JeffH
¿Alguna actualización de la prensa y la resolución de Apple? – Bryan
Apple acaba de rechazar mi aplicación por usar esto. http://img.ly/dbZ – Mugunth
Como probablemente todo listo saber si se utiliza la siguiente línea de código, su aplicación será rechazada por Apple
NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
aquí es una referencia
http://ayeapi.blogspot.com/2009/12/sbformatphonenumber-is-lie.html
puede utilizar la la siguiente información en su lugar
NSString *phoneName = [[UIDevice currentDevice] name];
NSString *phoneUniqueIdentifier = [[UIDevice currentDevice] uniqueIdentifier];
y así sucesivamente
@property(nonatomic,readonly,retain) NSString *name; // e.g. "My iPhone"
@property(nonatomic,readonly,retain) NSString *model; // e.g. @"iPhone", @"iPod Touch"
@property(nonatomic,readonly,retain) NSString *localizedModel; // localized version of model
@property(nonatomic,readonly,retain) NSString *systemName; // e.g. @"iPhone OS"
@property(nonatomic,readonly,retain) NSString *systemVersion; // e.g. @"2.0"
@property(nonatomic,readonly) UIDeviceOrientation orientation; // return current device orientation
@property(nonatomic,readonly,retain) NSString *uniqueIdentifier; // a string unique to each device based on various hardware info.
Hope this helps!
uniqueIdentifier también está en desuso en iOS5. Use la dirección MAC en su lugar. – Raptor
La dirección MAC está en desuso en iOS 7. En su lugar, use '[UIDevice identifierForVendor]'. – jab
iOS 7 está en desuso. Use iOS 10 en su lugar (lo siento, no pude detenerme). – JustAMartin
Usando la API privada puede obtener el número de teléfono del usuario en la siguiente forma:
extern NSString* CTSettingCopyMyPhoneNumber();
+(NSString *) phoneNumber {
NSString *phone = CTSettingCopyMyPhoneNumber();
return phone;
}
también incluyen CoreTelephony.framework a su proyecto.
Después de leer otras respuestas en este foro, estaba pensando que no es posible pero que ha hecho un trabajo perfecto –
esto no funciona en iOS7 – user501836
En iOS 7 está protegido por el derecho http://stackoverflow.com/questions/19504478/ios -7-how-to-get-own-number-via-private-api/20830611 # 20830611 – creker
Para obtener su número de teléfono, puede leer un archivo plist. No va a trabajar en iDevices no jailbreak:
NSString *commcenter = @"/private/var/wireless/Library/Preferences/com.apple.commcenter.plist";
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:commcenter];
NSString *PhoneNumber = [dict valueForKey:@"PhoneNumber"];
NSLog([NSString stringWithFormat:@"Phone number: %@",PhoneNumber]);
No sé si Apple permite esto, pero funciona en iPhones.
Esto no funciona en iOS 7. – respectTheCode
Esto no funciona en iOS 10 y encima. –
No hay API oficial para hacerlo. El uso de la API privada puede utilizar el método siguiente:
-(NSString*) getMyNumber {
NSLog(@"Open CoreTelephony");
void *lib = dlopen("/Symbols/System/Library/Framework/CoreTelephony.framework/CoreTelephony",RTLD_LAZY);
NSLog(@"Get CTSettingCopyMyPhoneNumber from CoreTelephony");
NSString* (*pCTSettingCopyMyPhoneNumber)() = dlsym(lib, "CTSettingCopyMyPhoneNumber");
NSLog(@"Get CTSettingCopyMyPhoneNumber from CoreTelephony");
if (pCTSettingCopyMyPhoneNumber == nil) {
NSLog(@"pCTSettingCopyMyPhoneNumber is nil");
return nil;
}
NSString* ownPhoneNumber = pCTSettingCopyMyPhoneNumber();
dlclose(lib);
return ownPhoneNumber;
}
Funciona en iOS 6 sin JB y firma especial.
Como se mencionó creker en iOS 7 con JB, necesita utilizar los derechos para que funcione.
Cómo lo hace con los derechos que puede encontrar aquí: iOS 7: How to get own number via private API?
Usted puede pedir al usuario y m.phone verficate que el uso de SMS. Legalmente, no hay método para saberlo.
No puede obtener su propio número de teléfono debido a algún motivo de seguridad, pero puede buscar su número. Guárdelo en su lista de contactos y luego puede buscar su número mediante programación.
- 1. Obtenga su propio número de teléfono de forma automática en Symbian
- 2. ¿Cómo puede una extensión de Firefox obtener su propio número de versión mediante programación?
- 3. Android: Obtenga información de hardware mediante programación
- 4. Obtenga mediante programación servidores DNS del host
- 5. Obtenga el número de teléfono del dispositivo programáticamente
- 6. iOS: agregar/eliminar una subvista mediante programación
- 7. Android: cómo detectar un número privado mediante programación
- 8. Android configurar el altavoz del teléfono mediante programación
- 9. Creación mediante programación de vistas en IOS (¿cómo funciona)?
- 10. Obtenga detalles del procesador mediante programación desde Mac OS X
- 11. Codificación mediante teléfono móvil
- 12. Interactuar mediante programación con iOS/iPod adjuntos en OSX 10.6
- 13. Obtención de la versión Maven de su proyecto mediante programación
- 14. Medir el tráfico de red mediante programación en iPhone
- 15. implementar su propio sizeof
- 16. Creando su propio idioma
- 17. compilando su propio glibc
- 18. UISegmentedControl cambia el número de segmentos mediante programación
- 19. ¿Cómo incrementar un número de versión mediante programación?
- 20. Obtenga las dimensiones del video mediante programación en el objetivo c
- 21. ¿Cómo hacer mi propio marcador personalizado en un teléfono Android
- 22. Creando su propio uid de estilo Tinyurl
- 23. Paperclip: Asignar una imagen mediante programación y establecer su nombre
- 24. mediante programación en C#
- 25. ¿Cómo puedo hacer que UIImageView cambie su imagen mediante programación?
- 26. Crear un TableVIew mediante programación con Objective-C iOS
- 27. iOS SDK - Genere mediante programación un archivo PDF
- 28. ¿Cómo hacer tu propio lenguaje de programación?
- 29. Regex - número de teléfono simple
- 30. -su-propio-escribe la consistencia en MongoDB
puede ser útil para otros que busquen una solución que no use aplicaciones privadas [cómo-hace-cuadrados-tarjeta-de-aplicación-hacer-esto - use el nombre del dispositivo para capturar el nombre de los usuarios] (http://stackoverflow.com/ questions/8000927/how-does-squares-cardcase-app-do-this/8058188 # 8058188) simplemente enmiende para capturar el número de teléfono u otros detalles según corresponda –