web-dev-qa-db-fra.com

Application refusée, mais je n'utilise pas UDID

Aujourd'hui, nous avons reçu un retour d'information sur notre soumission et nous ne comprenons pas le problème signalé: "Les applications ne sont pas autorisées à accéder à l'UDID et ne doivent pas utiliser la méthode uniqueIdentifier de UIDevice. Veuillez mettre à jour vos applications et serveurs pour associer les utilisateurs au fournisseur ou à la publicité. identifiants introduits dans iOS 6. ".

Nous connaissons les rejets concernant udid, mais notre appli ne l'utilise pas! Après avoir lu ceci, notre équipe a réévalué l'application et nous n'avons trouvé aucune occurrence de "UIDevice uniqueIdentifier". Nous avons également révisé toutes les bibliothèques utilisées et nous ne trouvons vraiment aucun appel de l'UDID.

Quelqu'un a des idées?

Après des recherches, j'ai exécuté la commande "greap" et je soupçonne 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 utilise uniqueIdentifier ?? Quelle est la résolution?

45
Tiago

Dans mon cas, c'était la bibliothèque ibGoogleAnalytics_debug.a.

Pour trouver quelle bibliothèque utilise la méthode uniqueidentifier, accédez à votre dossier de projet et tapez:

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

J'ai obtenu ceci: fichier binaire ./My_Project/libGoogleAnalytics_debug.a correspond

86
scurioni

Résolu: Le problème est que votre projet fait toujours référence à l'ancien SDK et qu'il compile le code avec vos anciennes méthodes sdk, y compris l'UDID qui Apple rejette.

Corrigez-le dans vos propriétés de construction de CHEMIN DE RECHERCHE Framework Chemins de recherche Chemins de recherche de bibliothèque

supprimer les valeurs inutiles telles que l'ancien chemin sdk et y mettre votre chemin sdk actuel

nettoyer tous les fichiers du projet: Fenêtre-> Organiseur-> Projet - supprimer votre projet Produit-> Nettoyer

Reconstruisez-le et renvoyez-le à Apple.

Prendre plaisir :)

7
Elad Adi Vaknin

Vérifiez le binaire que vous avez généré avec la commande strings et recherchez uniqueIdentifier:

$ strings YOUR_BINARY | grep uniqueIdentifier

Il est probable que vous le trouverez là-dedans.

J'ai trouvé que OpenSSL a une chaîne uniqueIdentifier déclarée dans leurs en-têtes, il est donc probable que votre application (ou toute bibliothèque statique que vous fournissez avec votre application) l'a incluse.

Dans mon cas, le coupable était libspotify.

5
Igor

J'ai eu le même problème, mais j'ai pu localiser le fichier contenant uniqueIdentifier à l'aide de la commande suivante dans le terminal, dans mon dossier de projet.

grep -Rnis 'uniqueIdentifier' *

Cela a fait écho à un tas de lignes dans ma fenêtre de terminal, le coupable étant libGoogleAdModAds.a - même si je ne l'utilisais pas réellement dans mon code, il était toujours référencé dans mon projet et donc ajouté à la build.

ma source était: http://www.commandlinefu.com/commands/view/3573/search-for-a-string-inside-all-files-in-the-current-directory

3
roycable

Dans mon cas, ce problème était responsable du SDK BugSense (j'ai utilisé une version obsolète). Après la mise à niveau vers la dernière version (3.1.3), tout va bien.

3

J'ai déposé un bug avec Facebook, mais voici une solution:

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

Dans le sdk, modifiez facebook-ios-sdk/src/FBSession.m

Commentez le

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

Ce n'est pas nécessaire depuis IOS 4.0 de toute façon.

qui supprime la référence et reconstruit le .a

3
Eric

J'ai le même problème aujourd'hui. Je mets à jour le SDK AdMob vers la version 6.4.1 et le soumets à nouveau, mais pas d'utilisation. Mais il a réussi la vérification de téléchargement après avoir désactivé le code AdMob et ne crée pas de lien vers sa bibliothèque.

Selon l'annonce de Google, AdMob SDK 6.4 et supérieur n'accèdent plus à UDID. De toute évidence, Apple ne le pense pas.

2
Suyuan Chang

Habituellement, les bibliothèques tierces pour l'analyse et les tests bêta utilisent uniqueIdentifier pour suivre les utilisateurs (par exemple, tester en vol ou les anciennes versions de GA), vérifiez si l'une des bibliothèques tierces que vous utilisez l'utilise. Si ce n'est pas le cas, vous pouvez demander une clarification à http://itunesconnect.Apple.com .

2
Raspu

Je ne pense pas que le Facebook IOS SDK lui-même utilise le 'uniqueIdentifier' déconseillé. J'ai regardé les sources sur https://github.com/facebook/facebook-ios- sdk .

Mais lorsque le SDK Facebook est généré à partir de ces sources, le binaire créé contient la chaîne. La seule bibliothèque utilisée par le SDK est le -> Accounts.framework <- de IOS lui-même!

On dirait donc Apple a tiré son propre pied!

Edit: Eric a donné la bonne réponse. UIDevice est utilisé dans facebook-ios-sdk/src/FBSession.m. Le cadre de Comptes.fr n'était pas le problème.

1
Gernot Ullrich

J'ai essayé toute la journée, mon application est toujours rejetée.

D'abord, j'ai essayé de trouver. | grep -v .svn | grep ".a" | grep -v ".app" | xargs grep uniqueIdentifier dans mon dossier de projet.

Il est apparu que Google Analytics, AdMob et Wikitude SDK utilisaient uniqueIdentifier. J'ai donc supprimé GA et j'ai mis à jour AdMob et Wikitude. Maintenant, il n'y a plus d'appels à la méthode uniqueIdentifier. Quand je fais du grep, le résultat n'est rien. J'ai tout nettoyé dans mon projet, mais mon application est toujours rejetée!

Que puis-je faire maintenant ? Toute aide serait appréciée ...

EDIT: J'ai trouvé cette ligne:

IDEWorkspaceWindowController***UniqueIdentifier***_IDEActiveWorkspaceTabController_IDE

Dans ce fichier:

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

Pensez-vous que le problème peut provenir de cette ligne?

1
BoloG

J'ai eu le même problème hier lors de la mise à jour de mes applications.
Après avoir recherché des bibliothèques tierces utilisant UDID, j'ai réalisé que j'utilisais Conversion Tracking for iOS. Cette bibliothèque utilisait l'UDID mais le 10 avril a publié une mise à jour corrigeant ce problème:

Le SDK de suivi des conversions iOS v1.2.0 n'accède plus à l'UDID (publié le 10 avril 2013).

J'espère que ça aide.

1
mlabraca

C'est tout Apple le fait, tout ce que vous devez faire est:

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

App.app est après avoir décompressé App.ipa, il sera alors dans le répertoire de charge utile.

Exécutez simplement cette commande dans le répertoire payload. Vous pouvez faire un test en appliquant une méthode connue que vous utilisez.

Vous pouvez remplacer armv7 par all si vous souhaitez rechercher toutes les architectures pour lesquelles il est construit.

1
mskw

Je suis confronté au même problème aujourd'hui. Il y a une variable dans openssl nommée uniqueIdentifier. Peut-être que cela cause le problème.

0
user1349923

J'ai eu le même problème. Il s'est avéré être RevMob sdk. La dernière version 5.9.0 (2013/05/30) sert à résoudre le problème.

0
Aaron Stephenson