Aplicación rechazada, pero no uso UDID

Hoy recibimos comentarios sobre nuestro envío y no comprendemos el problema informado: “Las aplicaciones no pueden acceder al UDID y no deben usar el método uniqueIdentifier de UIDevice. Actualice sus aplicaciones y servidores para asociar a los usuarios con el proveedor o la publicidad. identificadores introducidos en iOS 6. “.

¡Conocemos los rechazos sobre UDID, pero nuestra aplicación no usa esto! Después de leer esto, nuestro equipo revaluó la aplicación y no encontramos las ocurrencias de “UIDevice uniqueIdentifier”. También revisamos todas las bibliotecas usadas y realmente no encontramos ninguna llamada de UDID.

Alguien tiene ideas?

Después de investigar, ejecuté el comando “greap” y sospecho sobre FacebookSDK:

my-app-directory $ grep -Rnis 'uniqueIdentifier' * Binary file MyApp/FacebookSDK.framework/FacebookSDK matches Binary file MyApp/FacebookSDK.framework/Versions/A/FacebookSDK matches Binary file MyApp/FacebookSDK.framework/Versions/Current/FacebookSDK matches Binary file MyApp/MyApp.xcodeproj/project.xcworkspace/xcuserdata/myuser.xcuserdatad/UserInterfaceState.xcuserstate matches 

FacebookSDK usa uniqueIdentifier ?? ¿Cuál es la resolución?

En mi caso, era la biblioteca ibGoogleAnalytics_debug.a.

Para encontrar qué biblioteca está utilizando el método uniqueidentifier, vaya a la carpeta del proyecto y escriba:

 $ find . | grep -v .svn | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier 

Obtuve esto: Archivo binario ./My_Proyecto/libGoogleAnalytics_debug.a coincidencias

Lo resolvió: el problema es que su proyecto todavía se refiere al antiguo SDK y comstack el código con sus métodos antiguos de SDK, incluido el UDID que Apple rechaza.

Solucionado en sus propiedades de comstackción de SEARCH PATH Framework Search Paths Library Search Paths

elimine los valores innecesarios, como la antigua ruta sdk, y coloque allí su ruta sdk actual

limpiar todos los archivos del proyecto: Ventana-> Organizador-> Proyecto – eliminar su proyecto Producto-> Limpiar

Ahora reconstruirlo y volver a enviarlo a Apple.

Disfruta 🙂

Compruebe el binario que ha generado con el comando strings y busque uniqueIdentifier :

 $ strings YOUR_BINARY | grep uniqueIdentifier 

Es probable que lo encuentres allí.

Descubrí que OpenSSL tiene una cadena uniqueIdentifier declarada en sus encabezados, por lo que es probable que su aplicación (o cualquier biblioteca estática que proporcione con su aplicación) la haya incluido.

En mi caso, el culpable fue libspotify .

En mi caso, este problema fue responsable del SDK de BugSense (utilicé la versión obsoleta). Después de actualizar a la versión más nueva (3.1.3) todo está bien.

Tuve el mismo problema, pero pude uniqueIdentifier el archivo que contiene uniqueIdentifier usando el siguiente comando en la terminal, dentro de la carpeta de mi proyecto.

grep -Rnis 'uniqueIdentifier' *

Esto hizo eco de un montón de líneas en la ventana de mi terminal, con el culpable de ser libGoogleAdModAds.a , aunque en realidad no lo estaba usando en mi código, todavía se hacía referencia en mi proyecto y, por lo tanto, se agregaba a la comstackción.

mi fuente fue: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

Archivé un error con Facebook, pero aquí hay una solución alternativa:

https://developers.facebook.com/bugs/193119420841692

En el SDK, edite facebook-ios-sdk / src / FBSession.m

Comente el

 - (BOOL)isMultitaskingSupported { /* UIDevice *device = [UIDevice currentDevice]; return [device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported];*/ return TRUE; } 

No es necesario desde IOS 4.0 de todos modos.

que elimina la referencia y vuelve a construir .a

Tengo el mismo problema hoy. Actualizo el SDK de AdMob a 6.4.1 y lo vuelvo a enviar, pero sin uso. Pero pasó la verificación de carga después de desactivar el código de AdMob y no enlazar con su biblioteca.

Según el anuncio de Google, AdMob SDK 6.4 y versiones posteriores ya no tienen acceso a UDID. Obviamente, Apple no lo cree así.

Habitualmente, las bibliotecas de terceros para análisis y pruebas beta usan uniqueIdentifier para rastrear usuarios (por ejemplo, vuelo de prueba o versiones anteriores de GA), verificar si alguna de las bibliotecas de terceros que está utilizando usa esto. Si no es el caso, puede solicitar una aclaración en http://itunesconnect.apple.com .

Ayer tuve el mismo problema al actualizar mis aplicaciones.
Después de buscar bibliotecas de terceros usando UDID, me di cuenta de que estaba usando el seguimiento de conversiones para iOS . Esta biblioteca usó UDID pero el 10 de abril lanzó una actualización que soluciona este problema:

El SDK v1.2.0 de seguimiento de conversiones de iOS ya no tiene acceso a UDID (publicado el 10 de abril de 2013).

Espero que ayude.

Intenté todo el día, mi aplicación siempre es rechazada.

Primero, intenté encontrar. | grep -v .svn | grep “.a” | grep -v “.app” | xargs grep uniqueIdentifier en la carpeta de mi proyecto.

Parecía que Google Analytics, AdMob y Wikitude SDK usaban uniqueIdentifier. Así que eliminé GA y actualicé AdMob y Wikitude. Ahora, no hay más llamadas al método uniqueIdentifier. Cuando hago grep, el resultado es nada. Limpié todo en mi proyecto, ¡pero mi aplicación siempre es rechazada!

Qué puedo hacer ahora ? Cualquier ayuda será apreciada …

EDIT: encontré esta línea:

 IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE 

En este archivo:

MYPROJECT.xcodeproj / project.xcworkspace / xcuserdata / MYUSERNAME.xcuserdatad / UserInterfaceState.xcuserstate

¿Crees que el problema puede provenir de esta línea?

No creo que el SDK de Facebook IOS use el ‘uniqueIdentifier’ obsoleto. Revisé las fonts en https://github.com/facebook/facebook-ios-sdk .

Pero cuando el SDK de Facebook se genera a partir de estas fonts, el binario creado contiene la cadena. La única biblioteca que usa el SDK es la -> Accounts.framework <- del propio IOS.

¡Parece que Apple se ha disparado!

Editar: Eric dio la respuesta correcta. UIDevice se utiliza en facebook-ios-sdk / src / FBSession.m. El marco de Cuentas no fue el problema.

Esto es todo lo que Apple hace, todo lo que necesita hacer es:

 strings - -a -arch armv7 "App.app/App" | grep uniqueIdentifier 

App.app es después de que descomprimas App.ipa, entonces estará dentro del directorio de carga útil.

Simplemente ejecute ese comando dentro del directorio de carga útil. Puedes hacer una prueba al greping un método conocido que usas.

Puede sustituir armv7 a todos si desea buscar todas las architectures para las que está construido.

Estoy enfrentando el mismo problema hoy. Hay una variable en openssl llamada uniqueIdentifier. Quizás está causando el problema.

Tuve el mismo problema. Resultó ser RevMob sdk. El último 5.9.0 (30/05/2013) parece resolver el problema.