iOS UIActivity Sharing
Condivisione UIActivity
Condivisione UIActivity semplificata
A partire da iOS 6, le applicazioni di terze parti sono abilitate a condividere dati come testo, URL o immagini utilizzando meccanismi come AirDrop, come descritto nella guida alla comunicazione tra app di Apple. Questa funzionalità si manifesta attraverso un foglio di attività di condivisione a livello di sistema che appare quando si interagisce con il pulsante "Condividi".
Un elenco completo di tutte le opzioni di condivisione integrate è disponibile su UIActivity.ActivityType. Gli sviluppatori possono scegliere di escludere specifiche opzioni di condivisione se le ritengono inadatte per la propria applicazione.
Come condividere dati
L'attenzione dovrebbe essere rivolta a:
La natura dei dati da condividere.
L'inclusione di attività personalizzate.
L'esclusione di determinati tipi di attività.
La condivisione avviene attraverso l'istanziazione di un UIActivityViewController
, a cui vengono passati gli elementi destinati alla condivisione. Questo viene realizzato chiamando:
Gli sviluppatori dovrebbero esaminare attentamente UIActivityViewController
per le attività e le attività personalizzate con cui è inizializzato, così come eventuali excludedActivityTypes
specificati.
Come ricevere dati
Gli aspetti seguenti sono cruciali quando si ricevono dati:
La dichiarazione di tipi di documenti personalizzati.
La specifica dei tipi di documenti che l'app può aprire.
La verifica dell'integrità dei dati ricevuti.
Senza accesso al codice sorgente, è comunque possibile ispezionare Info.plist
per chiavi come UTExportedTypeDeclarations
, UTImportedTypeDeclarations
e CFBundleDocumentTypes
per capire i tipi di documenti che un'app può gestire e dichiarare.
Una guida sintetica su queste chiavi è disponibile su Stackoverflow, evidenziando l'importanza di definire e importare UTI per il riconoscimento a livello di sistema e associare tipi di documenti all'app per l'integrazione nella finestra di dialogo "Apri con".
Approccio di testing dinamico
Per testare le attività di invio, si potrebbe:
Intercettare il metodo
init(activityItems:applicationActivities:)
per catturare gli elementi e le attività condivise.Identificare le attività escluse intercettando la proprietà
excludedActivityTypes
.
Per quanto riguarda la ricezione degli elementi, comporta:
Condividere un file con l'app da un'altra fonte (ad esempio, AirDrop, email) che richiama la finestra di dialogo "Apri con...".
Intercettare
application:openURL:options:
tra gli altri metodi identificati durante l'analisi statica per osservare la risposta dell'app.Utilizzare file malformati o tecniche di fuzzing per valutare la robustezza dell'app.
Riferimenti
Last updated