iOS UIActivity Sharing
iOS UIActivity Sharing
Vereinfachtes UIActivity Sharing
Ab iOS 6 können Drittanbieteranwendungen Daten wie Text, URLs oder Bilder über Mechanismen wie AirDrop teilen, wie in Apples Inter-App Communication Guide beschrieben. Diese Funktion wird durch ein systemweites Share Activity Sheet manifestiert, das beim Interagieren mit der Schaltfläche "Teilen" angezeigt wird.
Eine umfassende Auflistung aller integrierten Freigabeoptionen finden Sie unter UIActivity.ActivityType. Entwickler können bestimmte Freigabeoptionen ausschließen, wenn sie diese für ihre Anwendung ungeeignet halten.
Wie man Daten teilt
Die Aufmerksamkeit sollte auf Folgendes gerichtet werden:
Die Art der zu teilenden Daten.
Die Einbeziehung benutzerdefinierter Aktivitäten.
Der Ausschluss bestimmter Aktivitätstypen.
Das Teilen wird durch die Instanziierung eines UIActivityViewController
ermöglicht, an den die für das Teilen vorgesehenen Elemente übergeben werden. Dies wird durch Aufrufen von:
Entwickler sollten den UIActivityViewController
auf die Aktivitäten und benutzerdefinierten Aktivitäten überprüfen, mit denen er initialisiert wird, sowie auf eventuell angegebene excludedActivityTypes
.
Wie man Daten empfängt
Folgende Aspekte sind entscheidend beim Empfangen von Daten:
Die Deklaration von benutzerdefinierten Dokumenttypen.
Die Spezifikation der Dokumenttypen, die die App öffnen kann.
Die Überprüfung der Integrität der empfangenen Daten.
Ohne Zugriff auf den Quellcode kann man dennoch das Info.plist
auf Schlüssel wie UTExportedTypeDeclarations
, UTImportedTypeDeclarations
und CFBundleDocumentTypes
überprüfen, um die Arten von Dokumenten zu verstehen, die eine App verarbeiten und deklarieren kann.
Eine prägnante Anleitung zu diesen Schlüsseln ist auf Stackoverflow verfügbar, die die Bedeutung der Definition und des Imports von UTIs für die systemweite Erkennung und die Zuordnung von Dokumenttypen mit Ihrer App für die Integration im Dialogfeld "Öffnen mit" hervorhebt.
Dynamischer Testansatz
Um Aktivitäten zu senden kann man Folgendes tun:
In die Methode
init(activityItems:applicationActivities:)
einhaken, um die geteilten Elemente und Aktivitäten zu erfassen.Ausgeschlossene Aktivitäten identifizieren, indem man auf die Eigenschaft
excludedActivityTypes
zugreift.
Für das Empfangen von Elementen sind folgende Schritte erforderlich:
Eine Datei mit der App von einer anderen Quelle (z. B. AirDrop, E-Mail) teilen, die den Dialog "Mit ... öffnen" aufruft.
application:openURL:options:
und andere während der statischen Analyse identifizierte Methoden abfangen, um die Reaktion der App zu beobachten.Fehlerhafte Dateien oder Fuzzing-Techniken verwenden, um die Robustheit der App zu bewerten.
Referenzen
Last updated