2016-02-09 22 views
7

Ho svolto ricerche su come condividere in modo sicuro i dati tra le applicazioni. Mi piacerebbe avere alcune informazioni sul modo corretto di gestirle prima di fare un approfondimento sull'implementazione usando il metodo sbagliato. Solo perché puoi fare qualcosa non significa necessariamente che dovresti.Condivisione di dati di file tra applicazioni in Swift/iOS

Caso utente: Sto lavorando a una suite di app per l'apprendimento delle lingue che hanno una base di file audio condivisa di diverse centinaia di file audio e file json contenenti dati importanti corrispondenti a una lingua. Preferirei consentire all'utente di non dover scaricare di nuovo il pacchetto di lingue quando utilizzano un'altra app nella nostra suite.

1. Estensioni App - Provider documento non-UI Variante

Secondo il documentation:

Il Provider File concede estensione accesso ai file al di fuori sandbox dell'applicazione host con l'apertura e la mossa Azioni. Questa estensione (talvolta abbreviata qui per il provider di file) consente inoltre all'app host di scaricare file senza presentare un controller di visualizzazione di selezione documenti. Questa funzione consente all'app host di accedere a documenti aperti in precedenza utilizzando i segnalibri URL protetti, anche se tali file non sono più memorizzati sul dispositivo.

Sulla superficie questa sembra una soluzione davvero solida. La mia preoccupazione principale deriva dalle ultime due righe in cui si afferma che l'applicazione può scaricare i file non più memorizzati sul dispositivo. Voglio che i file vengano archiviati localmente sul dispositivo per evitare il download costante. Se il provider di documenti memorizza i file localmente e consente alle varie applicazioni nel gruppo di accedere ai file, penso che ciò potrebbe funzionare.

2. Shared Accesso Portachiavi

Consente di archiviare in modo sicuro i dati a un portachiavi condivisa che altre applicazioni che fanno parte di una suite di applicazioni possono accedere. Tutte le applicazioni che condividono l'accesso portachiavi devono utilizzare lo stesso prefisso dell'ID app. Per un esempio di accesso a portachiavi condiviso in azione.

Ho guardato un po 'nella documentazione di questo, e penso che questo potrebbe essere la soluzione migliore. La mia principale preoccupazione per questa soluzione è se esiste o meno un limite di dimensione per i dati caricati e se sono permessi i tipi di file mp3/ogg/json. La maggior parte degli esempi/usi che ho trovato con questa soluzione punta a condividere stringhe e piccoli dati, non sono sicuro che gestirà dati di grandi dimensioni come json o file audio.

Ho anche scoperto che a quanto pare this repo rende trattare con portachiavi facile:

3. cartoncini personalizzati

cartone L'usanza è meglio allo scopo di dati personalizzati semi-privata che condividono tra due applicazioni . I pannelli di lavoro personalizzati sono identificati utilizzando nomi univoci. Possono persistere i dati oltre l'applicazione che li crea, consentendo a un pannello di incollare dati dopo che l'applicazione è stata terminata o anche dopo aver riavviato il dispositivo.

Durante la scrittura o la lettura di dati da e verso un tavolo di montaggio, è necessario specificare un tipo di cartoncino.Tipologie di tipi di carta tipografica usano tipicamente un identificatore di tipo uniforme (UTI) per identificare il tipo di dati che entrano e vengono recuperati dal tavolo di montaggio. Vedi la documentazione di riferimento della classe UIPasteboard di Apple per ulteriori informazioni.

Sopra documentazione tirato da this post

La mia preoccupazione principale di questa soluzione è che forse è un po 'di hack. Logicamente un pannello di montaggio sembra qualcosa che trattiene temporaneamente i dati e consente la condivisione tra le app, mentre la soluzione che sto cercando deve essere più di una soluzione permanente.


Apprezzerei qualsiasi informazione sulle migliori pratiche in merito alla condivisione di questi tipi di file tra le app. Presumo che ci siano molte altre soluzioni che ho omesso qui, quindi se c'è un'alternativa migliore mi piacerebbe avere qualche informazione su di esso. Se succede una delle soluzioni elencate che ho inserito qui è un buon modo per risolvere questo problema mi piacerebbe avere qualche informazione in più sulla tua esperienza con il lavoro con loro e se le mie preoccupazioni con loro sono valide, o nulla di cui preoccuparsi .

Thx in anticipo. Come sempre, le risposte ben scritte ottengono voti positivi)

+1

Il post fa riferimento opere perfette. Grazie, mi dispiace per il duplicato. – Unome

+0

siete i benvenuti –

risposta

1

Credo che l'approccio migliore sarebbe consentire la condivisione dei dati configurando un gruppo di app. Questa è la soluzione consigliata da Apple per la condivisione dei dati tra applicazioni ed estensioni, e credo che per la condivisione dei dati tra le app in generale.

vedere la sezione "Sharing Data with Your Containing App"

vedi anche "Adding an App to an App Group":