Unterstützung für Erweiterungen in iOS, iPadOS und macOS
iOS, iPadOS und macOS ermöglichen es Apps, auf der Basis von Erweiterungen Funktionen für andere Apps bereitzustellen. Erweiterungen sind für einen speziellen Zweck signierte, ausführbare Binärdateien, die in eine App verpackt werden. Bei der Installation erkennt das System diese Erweiterungen automatisch und stellt sie unter Verwendung eines Abgleichsystems für andere Apps zur Verfügung.
Erweiterungspunkte
Ein Systembereich, der Erweiterungen unterstützt, wird Erweiterungspunkt (Extension Point) genannt. Jeder Erweiterungspunkt stellt APIs bereit und setzt die Richtlinien für den Bereich durch. Das System legt anhand der jeweiligen Abgleichregeln des Erweiterungspunkts fest, welche Erweiterungen zur Verfügung stehen. Das System startet Erweiterungsprozesse bei Bedarf und verwaltet ihren Lebenszyklus automatisch. Berechtigungen können dafür verwendet werden, die Verfügbarkeit von Erweiterungen für bestimmte System-Apps einzuschränken. Das Widget für die Tagesansicht erscheint beispielsweise nur in der Mitteilungszentrale und eine Freigabeerweiterung ist nur im Bereich „Freigabe“ verfügbar. Beispiele für Erweiterungspunkte sind das Widget „Tagesansicht“, Freigabe/Teilen, Eigene Aktionen, Bildbearbeitung, File Provider und Eigene Tastatur.
Kommunikation unter Erweiterungen
Erweiterungen werden in ihrem eigenen Adressbereich ausgeführt. Die Kommunikation zwischen einer Erweiterung und der App, die sie aktiviert, erfolgt über Verfahren der Interprozesskommunikation, die vom System-Framework vermittelt werden. Sie können nicht auf die Dateien oder Speicherbereiche der jeweils anderen Seite zugreifen. Erweiterungen sind voneinander, von der App, die sie enthält, und von anderen Apps, die sie verwenden, abgeschirmt. Sie werden genau wie alle anderen Apps anderer Anbieter in einer Sandbox ausgeführt und ihr Container ist nicht derselbe Container wie der der App. Sie teilen sich jedoch den Zugriff auf die Datenschutzeinstellungen mit der App, die sie enthält. Wenn ein Benutzer einer App den Zugriff auf seine Kontakte erlaubt, so wird dieser Zugriff auch an die Erweiterungen weitergereicht, die in die App integriert sind, nicht aber an Erweiterungen, die durch die App aktiviert werden.
Verwendung eigener Tastaturen
Eigene Tastaturen stellen eine Sonderform einer Erweiterung dar, da sie vom Benutzer für das gesamte System aktiviert werden. Nach dem Aktivieren wird eine Tastaturerweiterung für alle Textfelder verwendet; ausgenommen sind nur die Eingabe des Codes und verschlüsselte Textfelder. Um die Übertragung von Benutzerdaten einzuschränken, werden eigene Tastaturen standardmäßig in einer besonders restriktiven Sandbox ausgeführt. Diese Sandbox blockiert den Zugriff auf das Netzwerk, auf Dienste, die Netzwerkoperationen stellvertretend für den Prozess ausführen, und auf APIs, die es der Erweiterung erlauben würden, Eingabedaten aufzuzeichnen. Entwickler eigener Tastaturen können anfordern, dass ihre Erweiterung Open Access erhält, sodass das System nach erfolgter Bestätigung durch den Benutzer die Erweiterung in der standardmäßigen Sandbox ausführen kann.
MDM und Erweiterungen
Bei Geräten, die in einer Lösung für die Mobilgeräteverwaltung (Mobile Device Management, MDM) registriert sind, unterliegen Dokument- und Tastaturerweiterungen der Regel „Verwaltetes Öffnen“ (Managed Open In). Die MDM-Lösung kann beispielsweise verhindern, dass Benutzer ein Dokument aus einer verwalteten App in einen nicht verwalteten Document Provider exportieren oder eine nicht verwaltete Tastatur in einer verwalteten App verwenden. Außerdem können Entwickler festlegen, dass in ihrer App keine Tastaturerweiterungen anderer Anbieter verwendet werden dürfen.