Maintenant qu'il est de notoriété publique que les soumissions App Store sont testées pour l'utilisation d'API privées, je dois poser la question ... qu'est-ce qu'une API privée pour les éviter?Apple et API privées
Répondre
Une API privée est une API qui n'est pas documentée dans le SDK. Par exemple, une classe de structure peut déclarer une méthode qui n'est pas destinée à être utilisée par des développeurs externes. Le comportement d'une API privée n'est pas garanti. Vous ne pouvez même pas être sûr que la méthode sera là dans les futures mises à jour de la plate-forme. Sa déclaration n'est probablement pas disponible dans les fichiers d'en-tête SDK distribués publiquement. Si vous vous en tenez à des éléments définis publiquement dans la documentation du SDK, tout ira bien.
Généralement par leur absence des en-têtes SDK. L'une des conventions d'Apple consiste à diriger les noms de méthode ObjC avec des traits de soulignement.
Vous aurez du mal à utiliser une API privée par accident. Ils ne sont pas documentés dans les documents SDK et n'apparaissent pas dans les suggestions d'achèvement de code de XCode. La raison pour laquelle ceci est récemment devenu une nouveauté est la création d'un framework utilisé par plusieurs applications utilisant une API privée, donc quand les développeurs qui ont inclus son framework ont mis à jour leurs applications, ils ont été rejetés (même si ces développeurs n'utilisaient pas API privée, le framework qu'ils ont ajouté à leur application).
C'est à peu près la seule façon d'utiliser accidentellement une API privée.
quel cadre était? –
C'était dans le cadre de trois20, mais le problème a été remédié depuis longtemps. Cette réponse a plus de deux ans. – mmc
Il n'est pas difficile d'être rejeté par ce qu'on appelle "using private API". Essayez d'utiliser les éléments suivants comme attribut de base de données et il serait rejeté:
- colorIndex
- occurrence
- id
Il montre comment le robot scanne l'API.
Ce ne sont pas seulement les API privées qui peuvent entraîner le rejet de votre application. L'utilisation de membres non documentés d'une API publique peut entraîner le rejet de votre application. Par exemple, la bibliothèque three20 (depuis fixée) a accédé _phase et d'autres membres de UITouch dans une catégorie.
Ils peuvent également détecter les appels à privés membres via performSelector, comme suit a également signalé un rejet:
UIWindow* window = [UIApplication sharedApplication].keyWindow]
return !![window performSelector:@selector(firstResponder)];
Plus inquiétant, si vous faites votre travail d'application sous 3.1 et 3.0 et à l'exécution dans la version 3.0 vous n'utilisez aucun des éléments 3.1 que votre application peut toujours être rejetée. Un exemple pourrait être le cameraOverlayView
de UIImagePickerController
(voir here). C'est assez déroutant.
Un excellent outil à utiliser avant de soumettre votre application est App Scanner. Il scanne votre fichier .app pour l'utilisation de l'API privée et vous montre ce que les signatures de méthode correspondent et quelles classes ces méthodes sont en lien
On dirait que ce site est soit en panne. Quelqu'un connaît-il d'autres applications qui exécutent des fonctionnalités similaires? – rvijay007
Mon application a été rejetée par Apple en raison de l'utilisation de l'API privée .Voici le code,
Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");
id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];
[activeInstance performSelector:@selector(dismissKeyboard)];
- 1. API privées iPhone
- 2. Apple Game Center api
- 3. iTunes Apple Events API
- 4. API pour Apple mail.app? Pas public?
- 5. Comment utiliser les API privées du SDK iPhone
- 6. Fonctions VBA et privées
- 7. Apple Dashcode et Webservices
- 8. Apple Ipod et C#
- 9. Apple iPad et le soutien PDF
- 10. Informations sur les URL ouvertes et les numéros appelés sur iOS via des API privées?
- 11. Comment différencier les méthodes publiques et les méthodes privées lors des tests API?
- 12. Authlogic, Namespace et méthodes privées dans ApplicationController
- 13. Différence entre les variables publiques et privées
- 14. Files d'attente privées et publiques sur MSMQ
- 15. Lire Magic Mouse et Apple Wireless Keyboard Battery pourcentage
- 16. Comment détecter et éviter l'utilisation d'API privées dans des bibliothèques tierces
- 17. Apple Push notifications et caractères Emoji
- 18. Documentation du développeur sur iPhone et Apple
- 19. Utilisation de MFMailComposeViewController et processus d'approbation Apple
- 20. Fonctions privées dans JavaScript
- 21. Variables privées vs publiques
- 22. Méthodes privées dans ObjC++
- 23. F # Méthodes statiques privées
- 24. Comment puis-je accéder aux API privées Android qui n'apparaissent pas dans TelephonyManager?
- 25. Est-il possible d'exécuter un processus d'arrière-plan sur l'iPhone en utilisant des API privées?
- 26. Apple Application Loader - Comment changer l'identifiant Apple utilisé?
- 27. Programme Développeur Apple
- 28. Apple iWork Mime Types
- 29. Apple iPhone Developer Program
- 30. apple backend technology
D'accord cool. Merci à tous pour les réponses rapides! – RyJ
Donc, plutôt que d'appeler une méthode dans une API privée, quelle est la différence entre créer votre propre méthode et faire la même chose? Ai-je raison de dire que ce n'est pas la question d'appeler certaines méthodes API, c'est le fait que vous essayez de faire des choses qu'ils ne veulent pas que vous fassiez? –
@Nick Pas nécessairement. Pour qu'une application soit approuvée par Apple, vous devez disposer des deux éléments suivants: 1. Ne faites que des choses dont elle ne vous a pas empêché, quelle que soit la méthode utilisée. 2. faites-les via un mécanisme valide. Il peut y avoir des choses que vous pouvez faire en général, mais vous ne pouvez pas appeler une API privée directement pour les accomplir. Le rituel est une API privée qui peut changer dans les futures versions et casse votre application, alors que l'écriture d'une méthode personnalisée sur une API publique n'est pas supposée rompre avec une mise à jour iOS. –