2012-06-17 14 views
7

Nie chcę przesyłać tej aplikacji do sklepu AppStore. Próbowałem już wiele razy, ale spotkałem wiele problemów :(iOS Jak korzystać z prywatnego interfejsu API?

Używam zrzutów klas, aby uzyskać wszystkie pliki nagłówkowe UIKit.framework. W UIApplication.h generowane przez zrzut klasy, widziałem metodę I chcesz użyć ---- launchApplicationWithIdentifier

Następnie umieścić UIApplication.h w moim projekcie i zaimportować go.Kompiluj, mam wiele błędów "Redefinition of enumerator ....", ponieważ w UIKit.framework I używaj poprzedniej, jest jeszcze inna UIApplication.h, ale ten plik nie ma metody launchApplicationWithIdentifier,

Jeśli usuniemy poprzedni plik UIKit.framework i zaimportuję folder wygenerowany przez zrzut klasy, to wygląda jak struktura, ale jeśli JA Rozwiń to, jest puste.

Następnie chcę uczynić wszystkie wygenerowane pliki nagłówkowe plikiem ramowym i zastąpić poprzedni UIKit.framework. Ale nie wiem jak. Jak widzimy, w ramach katalogu systemowego istnieje plik, który ma taką samą nazwę jak framework i ma ikonę "wykonanego skryptu powłoki". Jak mogę zrobić ten plik?

Naprawdę się pomyliłem. Ktoś może mi pomóc? Dziękuję Ci.

+0

OMG, Właśnie dodałem odpowiedź na twoje pytanie w twoim innym pytaniu: http://stackoverflow.com/questions/11047176/ios-how-can-i-używanie -uiaplikacja-zakupu zastosowania zidentifier-- który-is-in- -priv –

Odpowiedz

7

Wystarczy określić prywatne metody w interfejsie kategorii powyżej wdrażania klasy, gdzie chcesz go używać, podobnie jak to:

@interface UIApplication (Private) 

- (BOOL)launchApplicationWithIdentifier:(id)identifier suspended:(BOOL)suspended; 

@end 

Nie importować cały plik klasy zrzutu oraz link z oryginalnym UIKit struktura.

Musisz być bardzo ostrożny podczas korzystania z prywatnego interfejsu API. Te metody można zmienić lub usunąć w przyszłych wersjach iOS!

Sprawdź, czy metoda naprawdę istnieje z respondsToSelector: w czasie wykonywania i bądź przygotowany na wypadek, że nie istnieje.

Użyłem tajnej funkcji MapKit w mojej aplikacji i wiedziałem, że prywatne metody istnieją tylko w iOS 5. Moja aplikacja wciąż działa we wszystkich wersjach iOS, ale ta funkcja jest dostępna tylko w systemie iOS 5 (Apple usunięto lub zmieniono w systemie iOS 6 beta 1).

+1

Działa. Bardzo dziękuję :-) Poza tym muszę złożyć wniosek do pliku dpkg przy użyciu narzędzia deb, a następnie zainstalować go. Tylko w ten sposób moja aplikacja może uruchomić inną aplikację. – wyp

Powiązane problemy