Ist es möglich, eine beliebige iPhone-Anwendung aus einer anderen App heraus zu starten? Zum Beispiel in meiner Anwendung, wenn der Benutzer eine Taste drücken und direkt in die Telefon-App starten soll (schließen Sie die aktuelle App, öffnen Sie die Telefon-App) .
wäre das möglich Ich weiß, dass dies zum Telefonieren mit dem Tel-URL-Link möglich ist, aber ich möchte stattdessen nur die Telefon-App starten lassen, ohne eine bestimmte Nummer zu wählen.
quelle
Ich fand, dass es einfach ist, eine App zu schreiben, die eine andere App öffnen kann.
Nehmen wir an, wir haben zwei Apps namens
FirstApp
undSecondApp
. Wenn wir die FirstApp öffnen, möchten wir die SecondApp durch Klicken auf eine Schaltfläche öffnen können. Die Lösung hierfür ist:In SecondApp
Gehen Sie zur plist-Datei von SecondApp und Sie müssen ein URL- Schema mit einer Zeichenfolge iOSDevTips hinzufügen (natürlich können Sie eine weitere Zeichenfolge schreiben. Es liegt an Ihnen).
2. In FirstApp
Erstellen Sie eine Schaltfläche mit der folgenden Aktion:
Das ist es. Wenn Sie nun in der FirstApp auf die Schaltfläche klicken können, sollte die SecondApp geöffnet werden.
quelle
Info.plist
dieFirstApp
.Item 0
iOSDevTips
LSApplicationQueriesSchemes
seiner Info.plist hinzugefügt werden, um SecondApp öffnen zu können.Die Lee-Antwort ist für iOS vor 8 absolut korrekt.
In iOS 9+ müssen Sie alle URL-Schemata, die Ihre App abfragen möchte, in Info.plist unter dem Schlüssel LSApplicationQueriesSchemes (ein Array von Zeichenfolgen) auf die Whitelist setzen:
quelle
In Swift
Nur für den Fall, dass jemand nach einem schnellen Kopieren und Einfügen von Swift sucht.
quelle
Damit Sie Ihre Anwendung von einer anderen öffnen können, müssen Sie in beiden Anwendungen Änderungen vornehmen. Hier sind die Schritte zur Verwendung von Swift 3 mit iOS 10- Update:
1. Registrieren Sie Ihre Anwendung, die Sie öffnen möchten
Aktualisieren Sie das,
Info.plist
indem Sie das benutzerdefinierte und eindeutige URL-Schema Ihrer Anwendung definieren.Beachten Sie, dass Ihr Schemaname eindeutig sein sollte. Wenn auf Ihrem Gerät eine andere Anwendung mit demselben URL-Schemanamen installiert ist, wird zur Laufzeit festgelegt, welche Anwendung geöffnet wird.
2. Fügen Sie das vorherige URL-Schema in Ihre Hauptanwendung ein
Sie müssen das URL-Schema angeben, das die App mit der
canOpenURL:
Methode derUIApplication
Klasse verwenden soll. Öffnen Sie also die HauptanwendungInfo.plist
und fügen Sie das URL-Schema der anderen Anwendung hinzuLSApplicationQueriesSchemes
. (Eingeführt in iOS 9.0)3. Implementieren Sie die Aktion, mit der Ihre Anwendung geöffnet wird
Jetzt ist alles eingerichtet, sodass Sie Ihren Code gut in Ihre Hauptanwendung schreiben können, die Ihre andere App öffnet. Das sollte ungefähr so aussehen:
Beachten Sie, dass für diese Änderungen eine neue Version erforderlich ist, wenn Ihre vorhandene App (im AppStore installiert) geöffnet werden soll. Wenn Sie eine Anwendung öffnen möchten, die Sie bereits für Apple AppStore freigegeben haben, müssen Sie zuerst eine neue Version hochladen, die Ihre URL-Schema-Registrierung enthält.
quelle
Hier ist ein gutes Tutorial zum Starten einer Anwendung aus einer anderen App heraus:
iOS SDK: Arbeiten mit URL-Schemata
Es ist nicht möglich, eine beliebige Anwendung zu starten, sondern die nativen Anwendungen, die die URL-Schemata registriert haben .
quelle
Um dies zu erreichen, müssen wir in beiden Apps einige Codezeilen hinzufügen
App A: Welche Sie von einer anderen App aus öffnen möchten. (Quelle)
App B : In App B möchten Sie App A (Ziel) öffnen.
Code für App A.
Fügen Sie der Plist of App A einige Tags hinzu. Öffnen Sie die Plist-Quelle von App A und Past unter XML
Im App-Delegaten von App A - Hier einen Rückruf erhalten
Kommen wir nun zu App B Code -
Wenn Sie nur App A ohne Eingabeparameter öffnen möchten
Wenn Sie Parameter von App B an App A übergeben möchten, verwenden Sie den folgenden Code
Hinweis: Sie können die App auch öffnen, indem Sie einfach testApp.linking: //? im Safari-Browser
quelle
Versuchen Sie den folgenden Code, um eine Anwendung über Ihre Anwendung zu starten
Hinweis: Ersetzen Sie den Namen Fantacy durch den tatsächlichen Anwendungsnamen
quelle
Sie können nur Apps starten, die ein URL-Schema registriert haben. Genau wie Sie die SMS-App mithilfe von SMS: öffnen, können Sie die App auch anhand ihres URL-Schemas öffnen.
In den Dokumenten mit dem Namen LaunchMe ist ein sehr gutes Beispiel verfügbar, das dies demonstriert.
LaunchMe-Beispielcode ab 6. November 2017.
quelle
Nein, ist es nicht. Abgesehen von den dokumentierten URL-Handlern gibt es keine Möglichkeit, mit einer anderen App zu kommunizieren oder diese zu starten.
quelle
Ich habe es auch vor einiger Zeit versucht ( iPhone-Anwendung mit Kennung starten ), aber es gibt definitiv keine DOKUMENTIERTE Möglichkeit, dies zu tun. :) :)
quelle
In Swift 4.1 und Xcode 9.4.1
Ich habe zwei Apps: 1) PageViewControllerExample und 2) DelegateExample. Jetzt möchte ich die DelegateExample App mit der PageViewControllerExample App öffnen. Wenn ich in PageViewControllerExample auf die Schaltfläche Öffnen klicke, wird die DelegateExample-App geöffnet.
Dazu müssen wir für beide Apps einige Änderungen an den .plist-Dateien vornehmen.
Schritt 1
Öffnen Sie in der DelegateExample-App die .plist-Datei und fügen Sie URL-Typen und URL-Schemata hinzu. Hier müssen wir unseren gewünschten Namen wie "myapp" hinzufügen.
Schritt 2
Öffnen Sie in der PageViewControllerExample-App die .plist-Datei und fügen Sie diesen Code hinzu
Jetzt können wir die DelegateExample-App öffnen, wenn wir in PageViewControllerExample auf die Schaltfläche klicken.
quelle
Eine Randnotiz zu diesem Thema ...
Für nicht registrierte Protokolle gibt es ein Anforderungslimit von 50.
In dieser Diskussion erwähnt Apple, dass Sie für eine bestimmte Version einer App nur
canOpenUrl
eine begrenzte Anzahl von Malen abfragen können und nach 50 Aufrufen für nicht deklarierte Schemata fehlschlagen . Ich habe auch gesehen, dass wenn das Protokoll hinzugefügt wird, sobald Sie in diesen fehlerhaften Zustand eingetreten sind, es immer noch fehlschlägt.Seien Sie sich dessen bewusst, könnte für jemanden nützlich sein.
quelle
Swift 3 Quick & Paste-Version von @ villy393 Antwort für:
quelle