Czy można pobrać aplikację zawierającą aplikację NSBundle
z rozszerzenia aplikacji? Chciałbym uzyskać nazwę wyświetlaną głównej aplikacji, a nie nazwę wyświetlaną rozszerzenia.Pobierz główny pakiet aplikacji z rozszerzenia
9
A
Odpowiedz
18
Metoda +mainBundle
zwraca pakiet zawierający "bieżący plik wykonywalny aplikacji", który jest podfolderem aplikacji po wywołaniu z poziomu rozszerzenia.
Rozwiązanie to polega na oderwaniu dwóch poziomów katalogów od adresu URL pakietu, który kończy się na "appex".
Cel C
NSBundle *bundle = [NSBundle mainBundle];
if ([[bundle.bundleURL pathExtension] isEqualToString:@"appex"]) {
// Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex
bundle = [NSBundle bundleWithURL:[[bundle.bundleURL URLByDeletingLastPathComponent] URLByDeletingLastPathComponent]];
}
NSString *appDisplayName = [bundle objectForInfoDictionaryKey:@"CFBundleDisplayName"];
Swift 2,2
var bundle = NSBundle.mainBundle()
if bundle.bundleURL.pathExtension == "appex" {
// Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex
bundle = NSBundle(URL: bundle.bundleURL.URLByDeletingLastPathComponent!.URLByDeletingLastPathComponent!)!
}
let appDisplayName = bundle.objectForInfoDictionaryKey("CFBundleDisplayName")
Swift 3
var bundle = Bundle.main
if bundle.bundleURL.pathExtension == "appex" {
// Peel off two directory levels - MY_APP.app/PlugIns/MY_APP_EXTENSION.appex
let url = bundle.bundleURL.deletingLastPathComponent().deletingLastPathComponent()
if let otherBundle = Bundle(url: url) {
bundle = otherBundle
}
}
let appDisplayName = bundle.object(forInfoDictionaryKey: "CFBundleDisplayName")
To pęknąć PATHE xtension lub struktura katalogów dla rozszerzenia iOS uległa zmianie.
Powiązane problemy
- 1. Pobierz główny scenorys w aplikacji uniwersalnej
- 2. Pobierz ImageFormat z rozszerzenia pliku
- 3. Jak zmienić pakiet główny projektu windy?
- 4. Pobierz ikonę dla danego rozszerzenia
- 5. Tworzenie rozszerzenia Chrome pobierz plik
- 6. Pobierz wersję rozszerzenia w php
- 7. Pobierz informacje o aplikacji z nazwy pakietu
- 8. Pobierz główny adres URL aplikacji i nazwę katalogu w aplikacji Symfony 2
- 9. SPLFileInfo: pobierz nazwę pliku bez rozszerzenia
- 10. Pobierz nazwę pliku bez rozszerzenia z pełnej ścieżki
- 11. Pobierz aktualny adres URL strony z rozszerzenia paska bocznego firefox
- 12. Android - pobierz typ MIME z pliku bez rozszerzenia
- 13. Pobierz żądanie Pakiet inicjujący na karcie Sieć
- 14. plik rozszerzenia apk nie pobiera z playstore
- 15. Programowo pobierz pakiet APK ze sklepu Google Play
- 16. Pobierz główne okno aplikacji
- 17. Ukryj główny formularz w aplikacji Delphi 2009
- 18. Pobierz szczegóły aplikacji z Google Play
- 19. wpf - Pobierz wartości z pliku konfiguracyjnego aplikacji
- 20. Pobierz udostępniony kontener grupy aplikacji z XCode
- 21. pobierz adres URL aplikacji z bieżącego żądania
- 22. Pakiet ustawień dla aplikacji iPhone'a
- 23. Jak pobrać pakiet Nuget bez rozszerzenia nuget.exe lub Visual Studio?
- 24. Pobierz PID aktualnie uruchomionej aplikacji
- 25. C# Pobierz adres URL aplikacji
- 26. Pobierz bieżącą aktywną nazwę aplikacji
- 27. Nie widzisz opcji rozszerzenia aplikacji w Xcode?
- 28. Stowarzyszenie aplikacji do rozszerzenia plików iPhone'a
- 29. jak śledzić raport o awariach z aplikacji rozszerzenia ios8?
- 30. Rozszerzenia aplikacji na iOS z Xib zamiast storyboardu
Dzięki za to! Czy udało Ci się uzyskać zatwierdzoną aplikację AppStore w ten sposób? – ewindsor
Tak, nie są używane żadne prywatne interfejsy API. Użyliśmy tego w naszym rozszerzeniu watchOS 1 do załadowania modelu zarządzanego obiektu dla 'UIManagedDocument' z głównego pakietu aplikacji na iOS. – phatblat
Ah niesamowite. Dzięki za wgląd. – ewindsor