Czy można uruchomić dowolną aplikację na iPhone'a z poziomu innej aplikacji ?, Na przykład w mojej aplikacji, jeśli chcę, aby użytkownik nacisnął przycisk i uruchomił się bezpośrednio w aplikacji Telefon (zamknij bieżącą aplikację, otwórz aplikację Telefon) .
czy to byłoby możliwe? Wiem, że można to zrobić, aby wykonywać połączenia telefoniczne za pomocą linku tel URL, ale zamiast tego chcę po prostu uruchomić aplikację Telefon bez wybierania określonego numeru.
źródło
Zauważyłem, że łatwo jest napisać aplikację, która może otwierać inną aplikację.
Załóżmy, że mamy dwie aplikacje o nazwie
FirstApp
iSecondApp
. Kiedy otwieramy FirstApp, chcemy mieć możliwość otwarcia SecondApp poprzez kliknięcie przycisku. Aby to zrobić, możesz:W SecondApp
Przejdź do pliku plist SecondApp i musisz dodać schematy adresów URL za pomocą ciągu iOSDevTips (oczywiście możesz napisać inny ciąg. To zależy od Ciebie).
2. W FirstApp
Utwórz przycisk z poniższą akcją:
Otóż to. Teraz, kiedy możesz kliknąć przycisk w FirstApp, powinno to otworzyć SecondApp.
źródło
Info.plist
zFirstApp
. Następnie dodaj schematy, które Twoja aplikacja chce otworzyć, w tym przypadkuItem 0
będzie toiOSDevTips
LSApplicationQueriesSchemes
do swojej Info.plist, aby móc otworzyć SecondApp.Odpowiedź lee jest absolutnie poprawna dla iOS przed 8.
W iOS 9+ musisz dodać do białej listy wszelkie schematy adresów URL, które Twoja aplikacja chce przesyłać w Info.plist pod kluczem LSApplicationQueriesSchemes (tablica ciągów):
źródło
W Swift
Na wypadek, gdyby ktoś szukał szybkiej funkcji szybkiego kopiowania i wklejania.
źródło
Aby umożliwić otwieranie aplikacji z innej aplikacji, musisz wprowadzić zmiany w obu aplikacjach. Oto kroki przy użyciu Swift 3 z aktualizacją iOS 10 :
1. Zarejestruj aplikację, którą chcesz otworzyć
Zaktualizuj
Info.plist
, definiując niestandardowy i niepowtarzalny schemat adresu URL aplikacji.Zauważ, że nazwa twojego schematu powinna być unikalna, w przeciwnym razie, jeśli masz inną aplikację z tą samą nazwą schematu URL zainstalowaną na twoim urządzeniu, zostanie to określone w czasie wykonywania, który zostanie otwarty.
2. Uwzględnij poprzedni schemat adresów URL w głównej aplikacji
Musisz określić schemat adresu URL, którego aplikacja ma używać z
canOpenURL:
metodąUIApplication
klasy. Otwórz więc główną aplikacjęInfo.plist
i dodaj schemat adresu URL drugiej aplikacji doLSApplicationQueriesSchemes
. (Wprowadzone w iOS 9.0)3. Zaimplementuj akcję, która otwiera Twoją aplikację
Teraz wszystko jest skonfigurowane, więc dobrze jest napisać kod w głównej aplikacji, która otwiera drugą aplikację. Powinno to wyglądać mniej więcej tak:
Pamiętaj, że te zmiany wymagają nowej wersji, jeśli chcesz, aby Twoja istniejąca aplikacja (zainstalowana z AppStore) została otwarta. Jeśli chcesz otworzyć aplikację, którą już opublikowałeś w Apple AppStore, musisz najpierw przesłać nową wersję, która zawiera rejestrację schematu adresu URL.
źródło
Oto dobry samouczek dotyczący uruchamiania aplikacji z poziomu innej aplikacji:
iOS SDK: Praca ze schematami adresów URL
Nie jest możliwe uruchomienie dowolnej aplikacji, ale aplikacje natywne, które zarejestrowały schematy adresów URL .
źródło
Aby to osiągnąć, musimy dodać kilka linii kodu w obu App
Aplikacja A: którą chcesz otworzyć z innej aplikacji. (Źródło)
Aplikacja B : Z aplikacji B chcesz otworzyć aplikację A (miejsce docelowe)
Kod aplikacji A
Dodaj kilka tagów do Plist of App A Open Plist Source of App A and Past poniżej XML
W aplikacji delegata aplikacji A - tutaj uzyskaj połączenie zwrotne
Teraz przechodzę do kodu aplikacji B -
Jeśli chcesz tylko otworzyć aplikację A bez żadnego parametru wejściowego
Jeśli chcesz przekazać parametr z aplikacji B do aplikacji A, użyj poniższego kodu
Uwaga: Aplikację można również otworzyć, wpisując po prostu testApp.linking: //? w przeglądarce safari
źródło
Wypróbuj poniższy kod, który pomoże Ci uruchomić aplikację z Twojej aplikacji
Uwaga: Zastąp nazwę fantazji rzeczywistą nazwą aplikacji
źródło
Możesz uruchamiać tylko aplikacje, które zarejestrowały schemat adresu URL. Następnie, tak jak otwierasz aplikację SMS za pomocą sms:, będziesz mógł otworzyć aplikację za pomocą ich schematu adresu URL.
W dokumentach o nazwie LaunchMe dostępny jest bardzo dobry przykład, który to demonstruje.
Przykładowy kod LaunchMe na dzień 6 listopada 2017 r.
źródło
Nie, nie jest. Oprócz udokumentowanych programów obsługi adresów URL nie ma możliwości komunikacji z inną aplikacją / uruchomienia innej aplikacji.
źródło
Próbowałem tego również jakiś czas temu ( Uruchom aplikację iPhone'a z identyfikatorem ), ale zdecydowanie nie ma DOKUMENTOWANEGO sposobu, aby to zrobić. :)
źródło
W Swift 4.1 i Xcode 9.4.1
Mam dwie aplikacje 1) PageViewControllerExample i 2) DelegateExample. Teraz chcę otworzyć aplikację DelegateExample z aplikacją PageViewControllerExample. Kiedy kliknę przycisk Otwórz w PageViewControllerExample, zostanie otwarta aplikacja DelegateExample.
W tym celu musimy wprowadzić pewne zmiany w plikach .plist dla obu aplikacji.
Krok 1
W aplikacji DelegateExample otwórz plik .plist i dodaj typy adresów URL oraz schematy adresów URL. Tutaj musimy dodać naszą wymaganą nazwę, np. „Myapp”.
Krok 2
W aplikacji PageViewControllerExample otwórz plik .plist i dodaj ten kod
Teraz możemy otworzyć aplikację DelegateExample po kliknięciu przycisku w PageViewControllerExample.
źródło
Dodatkowa uwaga dotycząca tego tematu ...
Istnieje limit 50 żądań dla protokołów, które nie są zarejestrowane.
W tej dyskusji Apple wspomina, że w przypadku określonej wersji aplikacji można wysłać zapytanie tylko do
canOpenUrl
ograniczonej liczby razy i zakończy się niepowodzeniem po 50 wywołaniach niezadeklarowanych schematów . Widziałem również, że jeśli protokół zostanie dodany po wejściu w ten stan awarii, nadal zawiedzie.Bądź tego świadomy, może być dla kogoś przydatny.
źródło
Szybka i wklej szybka 3 wersja odpowiedzi @ villy393 na:
źródło