2013-07-10 9 views
47

Czytałem kilka artykułów na ten temat, a ja po prostu chcę zobaczyć, czy rozumiem to poprawnie:Czym dokładnie jest prywatny interfejs API i dlaczego Apple odrzuca aplikację na iOS, jeśli jest używana?

Apple odrzuca aplikację jeśli używasz Prywatna API ...

  1. Co jest główna różnica między "prywatnym API" i "nieprywatnym API?"

  2. Czy interfejsy API "Nieprywatne" to tylko interfejsy API dostarczone i zweryfikowane przez firmę Apple?

  3. Czy interfejs API nie jest tylko sposobem na interakcję z Frameworkem, a Framework to tylko zestaw enkapsulowanych klas/nagłówków, z których ludzie mogą korzystać w trywialnych celach?

  4. Czy to nie oznacza, że ​​nie mogę ponownie użyć kodu użytkownika (innego niż Apple) w mojej aplikacji?

  5. Jeśli to prawda, ilekroć programista tworzy własne niestandardowe klasy i metody, czy nie projektuje on technicznie mini-ram tylko w określonym celu? Czy to nie znaczy, że używa swojego prywatnego API?

  6. Jaka byłaby nawet różnica między korzystaniem z klas lub metod innych osób a moimi klasami/metodami, jak mogliby oni odróżnić i dlaczego miałby to być problem?

Moje rozumienie tego brzmi absurdalnie i nie sądzę, że rozumiem, co to jest "prywatne API". Czytałem, że to ma chronić przed zmianami w API, które mogą sprawić, że Twoja aplikacja będzie dysfunkcjonalna. Czy to oznacza, że ​​interfejsy API są połączone podczas działania (w przeciwieństwie do czasu kompilacji) i czy mogą być automatycznie aktualizowane bez wiedzy użytkownika? (Zobacz, początkowo myślałem o API/frameworkach jako o kamieniu za każdym razem, gdy kompilujesz, może to jest, gdzie się mylę)

Czy ktoś może mi pomóc? Jestem bardzo zdezorientowany tą polityką. Dziękuję Ci!

+0

z definicji, własne klasy i co we własnej aplikacji są własne i prywatne. Chodzi o prywatne api jak o korzystanie z funkcjonalności dostarczanej przez iOS wyłącznie do użytku wewnętrznego. na przykład jako zhackowany przykład, masz prawo używać api SystemClock, który pod maską korzysta z prywatnego API HardwareClock. Twoja aplikacja korzystająca z SystemClock byłaby w porządku. Ale ominięcie tego i przejście do HardwareClock spowoduje uruchomienie twojej aplikacji. –

+1

Reguły prywatnego interfejsu API Apple'a polegają na tym, że nie są używane prywatne interfejsy API Apple. Apple udokumentował wiele swoich API, ale niektóre są nieudokumentowane. Te nieudokumentowane interfejsy API to prywatne interfejsy API, do których odnoszą się wytyczne firmy Apple. – cjc343

+0

możliwy duplikat [Apple i prywatnych API] (http://stackoverflow.com/questions/1773615/apple-and-private-apis) – Barmar

Odpowiedz

37

Q. Jaka jest główna różnica między "prywatnym API" a "Non-private API?"

  • prywatne to takie, które nie są publicznie określone (nie ma wiele do niego)

Q. są "Non-prywatne" API API tylko pod warunkiem i zweryfikowane przez Apple?

  • prywatne i publiczne API są zarówno „pod warunkiem” przez Apple, ale tylko API publiczne są przewidziane do użycia.
  • prywatnej API są przeznaczone do użytku przez Apple tylko

Q. nie jest API tylko sposób interakcji z ram, a ramowa jest po prostu zbiorem kapsułkach Zajęcia/nagłówków, które ludzie mogą używać do trywialnych celów?

  • Tak

Q. nie oznaczałoby to, że nie można ponownie wykorzystać czyjąś kodu (innego niż Apple) w ogóle w mojej aplikacji?

  • Nie

Q. Jeśli to prawda, gdy programista robi swoje własne zajęcia i niestandardowe metody, nie jest on technicznie projektowaniu mini ramy dla jego szczególny cel? Czy to nie znaczy, że używa swojego prywatnego API?

  • Nie (ramy różni się od aplikacji)

Q. Jaki byłby nawet różnica między używaniem cudzych klas/metod obok moich klas/metod, jak czy mogliby nawet odróżnić i dlaczego miałby to być problem? nie

  • Zwykle będzie

Punktem trzeba uzyskać to, że w odniesieniu do prywatnych API należy myśleć tylko o prywatne firmy Apple dostarczane API.
Inne interfejsy API pochodzące od podmiotów trzecich są różne (a Apple nie dba o to, aby ten zewnętrzny kod nie korzystał z prywatnych interfejsów API Apple).

+0

Mam. Czuję, że istnieje wiele wprowadzających w błąd informacji o prywatnych API, które czytałem, i trudno było to zrozumieć, ponieważ niektórzy ludzie mówili, że to jedna rzecz, a niektórzy twierdzili, że to coś innego. I myślę, że informacje o Apple dotyczące prywatnych API są takie, że są to "nieudokumentowane interfejsy API" i nie wyjaśniają dokładnie, co rozumieją przez "nieudokumentowane". Dzięki za oczyszczenie! – giant91

+0

@ Czy możesz podać przykład tego, czym jest prywatne API lub jak wygląda? –

+0

@SamBudda, chodźmy z 'UIDevice uniqueIdentifier', który był publiczny, ale który jest teraz prywatny.Zwykle można go używać do identyfikacji urządzenia, na którym aplikacja działała, ale można próbować zidentyfikować użytkownika, więc teraz jest prywatny i istnieje wiele bardziej konkretnych alternatyw dla różnych celów. Prywatny interfejs API nie "wygląda" tak jak nic konkretnego. – Wain