Quali sono le app istantanee Android?

Ogni volta che rilasci un'app per Android, avrai almeno un'idea approssimativa di ciò che desideri ottenere da questa app. 

Questi obiettivi potrebbero essere molto specifici, come generare una certa quantità di entrate pubblicitarie nel primo trimestre, oppure potrebbero essere più generali, come ottenere un punteggio elevato su Google Play.

Qualunque altra cosa sia nella tua lista dei desideri, è possibile ottenere la tua app di fronte a quanti più utenti possibile sempre verrà visualizzato da qualche parte in tale elenco e Android Instant Apps è una nuova funzionalità che può aiutarti a farlo.

Le app istantanee ti offrono un modo completamente nuovo di raggiungere utenti che attualmente non hanno la tua app installata sul loro dispositivo, rendendo la tua app individuabile e accessibile da qualsiasi posizione che supporti URL, tra cui e-mail, risultati di ricerca di Google, post sui social media piattaforme, commenti di YouTube e forum.

In sostanza, le app istantanee consentono di separare ciascuna funzionalità della tua app in un modulo autonomo. Gli utenti possono quindi caricare su richiesta questi moduli di app istantanea toccando un URL che hai mappato a questo modulo specifico e senza dovendo installare la tua app in qualsiasi momento.

In questa serie in tre parti, ti mostrerò come aggiungere il supporto Instant App ai tuoi progetti Android. Alla fine di questa serie, avrai creato un'applicazione che consiste in due moduli di funzione di app istantanea separati, che puoi avviare e testare su qualsiasi dispositivo Android compatibile. 

Cosa stiamo andando a coprire

In questo primo post, mi concentrerò su cosa sono le Instant Apps, come funzionano e perché dovresti occupartene. Per offrirti un'esperienza di prima mano delle app istantanee, utilizzeremo la procedura guidata per la creazione di progetti di Android Studio per generare un'app preconfigurata con il supporto dell'app istantanea, in modo da poter vedere tutti i diversi componenti delle app istantanee, piuttosto che semplicemente leggendo su di loro.

Mentre la creazione di un'app preconfigurata con il supporto delle app istantanee è il modo più semplice e rapido per utilizzare questa funzione, in realtà è molto più probabile aggiungere il supporto di Instant App a un progetto esistente, quindi nella seconda parte ti mostrerò come fare esattamente questo. Fornirò un'app che è possibile scaricare da GitHub, quindi ti guideremo attraverso il processo passo-passo di riconfigurazione di questo progetto per supportare le app istantanee.

Il pezzo finale del puzzle è la creazione di un'app istantanea multi-funzione, quindi nella terza parte ti mostrerò come aggiungere un secondo modulo funzione alla tua applicazione e come utilizzare i collegamenti delle app Android per associare questo modulo a un URL diverso. 

Quali sono le app istantanee?

Uno dei modi migliori per descrivere le app istantanee è guardare un esempio di quando potresti usarli.  

Immagina che un amico ti abbia inviato un link a un video di gatto che promettono che stai per farlo amore, ma quando si tocca il collegamento diventa chiaro che è necessario scaricare un'applicazione prima di poter guardare questo particolare video.  

Indipendentemente dal fatto che tu finisca per scaricare l'app, o ignorare il link e rischiare di perdere il miglior video di gatto che Internet ha da offrire, questa è una brutta esperienza utente - ed è uno scenario che molti utenti di Android hanno familiarità con. 

Molti di noi hanno avuto l'esperienza di installare un'app solo per completare un'attività unica. Ad esempio, puoi scaricare un'app solo per visualizzare un allegato e-mail che qualcuno ti ha inviato, per completare un acquisto su un sito web specifico o per tracciare un pacchetto che sta attualmente volando verso il tuo indirizzo.

Ora immaginiamo di nuovo lo scenario del nostro gatto video, ma questa volta lo sviluppatore dell'applicazione ha inserito tutto il codice e le risorse necessarie per riprodurre i contenuti video all'interno del proprio modulo delle caratteristiche delle app istantanee e ha mappato questo modulo all'URL www.example.com/video. Questa volta, quando tocchi www.esempio.it/video/cat-video, Google Play riconosce che questo URL è associato a un modulo di app istantaneo e recupera tutto il codice e le risorse necessari per riprodurre questo video. Il risultato finale? Puoi goderti 20 secondi in cui un gatto gioca in una scatola senza dover installare nulla, ovvero a tanto migliore esperienza utente.  

Perché dovrei iniziare a utilizzare la funzione di app istantanea?

Come vedrai nel prossimo post di questa serie, l'aggiunta del supporto di Instant App a un progetto esistente può essere un processo scoraggiante, che spesso richiede di cambiare completamente il modo in cui la tua applicazione è strutturata.

Poiché la ristrutturazione di un progetto non è una decisione che dovresti prendere alla leggera, in questa sezione ti aiuterò a decidere se tutto il tempo e gli sforzi valgono davvero la pena, coprendo tutti i principali vantaggi dell'aggiunta del supporto Instant App al tuo progetti:

  • Rimuove una barriera tra la tua app e i nuovi utenti. L'installazione di un'applicazione tramite Google Play non è un processo particolarmente difficile o dispendioso in termini di tempo, ma è ancora la barriera più grande tra la tua app e i potenziali nuovi utenti. Indipendentemente dal tempo trascorso a creare una pagina di Google Play convincente, la maggior parte degli utenti si affannerà per questo Installare pulsante, alcune persone lo faranno sempre abbandonare al momento dell'installazione. 
  • Ti aiuta a raggiungere nuovi utenti. Sebbene tu sia sempre stato in grado di promuovere la tua app in varie località del Web, come il tuo sito web, blog o social media, la connessione con nuovi utenti in precedenza si basava su di loro visitando la pagina Google Play della tua app ad un certo punto (con il rara eccezione per gli utenti che preferiscono eseguire il sideload delle loro app). Le app istantanee rimuovono questa dipendenza dalla pagina Google Play della tua app, rendendo la tua applicazione direttamente accessibile da qualsiasi posizione che supporti gli URL, offrendoti possibilità quasi illimitate di connettersi con nuovi utenti. 
  • Garantisce che i contenuti condivisi siano la migliore pubblicità possibile per la tua app. Un utente che condivide i contenuti della tua app è uno dei modi più efficaci per raggiungere un nuovo pubblico, quindi ti consigliamo di fare una buona prima impressione! In precedenza, è stato difficile offrire un'esperienza coerente agli utenti che non hanno installato l'app sul proprio dispositivo, ma le app istantanee consentono di garantire un'esperienza nativa senza interruzioni tutti.
  • Aiuta gli utenti ad accedere alla tua app, anche a fronte di restrizioni su Internet. Sebbene la copertura di Internet stia migliorando continuamente, potresti ancora occasionalmente faticare a trovare una rete veloce e affidabile, o forse ti stai avvicinando alla tua indennità mensile di dati e sei preoccupato di incorrere in costi aggiuntivi. Quando stai lottando con una connessione a Internet lenta o inconsistente, scaricare un'intera app può essere un processo lungo e frustrante, e quando rischi di superare la franchigia dei dati, il download di una nuova app potrebbe essere sufficiente per sostenere spese aggiuntive. Tutti i moduli delle app istantanee dovere essere 4 MB o meno, quindi, anche se il download di un'intera app è fuori questione, l'accesso a un modulo dell'app istantanea potrebbe comunque essere un'opzione valida. 
  • Aumenta il fascino delle app location e time-sensitive. Mentre le app progettate per una posizione o un evento specifici non sono un nuovo concetto, chiediti: quanto sono probabile che installo un'applicazione che so che potrò utilizzare solo per un periodo di tempo limitato o in un certa posizione? Le app istantanee possono aumentare il fascino delle app sensibili al tempo e alla posizione, consentendo all'utente di accedere a tutte le funzionalità più importanti della tua app al tocco di un URL. 

Limitazioni e limitazioni

Prima di iniziare il nostro viaggio in app istantanea, vale la pena notare che attualmente ci sono alcune cose che le app istantanee non può fare:

  • Accedere agli identificativi del dispositivo come gli indirizzi IMEI e MAC.
  • Utilizzare i servizi in background.
  • Esegui notifiche in background. 
  • Accedi alla memoria esterna del dispositivo.
  • Accedi all'elenco delle app installate sul dispositivo dell'utente, a meno che tali applicazioni non si siano rese visibili in modo specifico per le app istantanee.

Inoltre, la tua domanda deve: 

  • Essere disponibile per il download gratuito da Google Play Store.
  • Utilizza il nuovo modello di autorizzazioni introdotto in Android 6.0 (livello API 23). Poiché l'utente non installa un'app istantanea, non è possibile richiedere le autorizzazioni in anticipo. Se i moduli delle funzionalità delle app istantanee richiedono l'accesso alle funzionalità dei dispositivi sensibili o alle informazioni utente, è necessario richiedere tali autorizzazioni in fase di runtime. 
  • Supporto App Link. Questo è il meccanismo che utilizzerai per mappare ciascuno dei tuoi moduli di app istantanea a un URL specifico. Tratterò i collegamenti delle app in dettaglio nel prossimo post. 

Infine, se la tua app fa parte del programma Designed for Families, non puoi offrirla come un'app istantanea. 

Impostazione del tuo ambiente di sviluppo

Prima di poter creare il tuo primo progetto con il supporto istantaneo delle app, devi avere il seguente o superiore installato:

  • Anteprima di Android Studio 3.0
  • Android SDK 6.0
  • Strumenti di sviluppo dell'SDK per Android 26.x
  • Strumenti SDK per Android 25.x
  • Strumenti della piattaforma SDK per Android 25.x

Dovresti anche assicurarti di avere le ultime versioni della Libreria di supporto Android e del Repository Android, quindi apri il Manager SDK di Android Studio e installa tutti gli aggiornamenti disponibili. 

Una volta installato tutto quanto sopra, sarai in grado di scaricare l'SDK di sviluppo di app istantanee: 

  • Apri l'SDK Manager e seleziona il Strumenti SDK linguetta. 
  • Selezionare SDK di sviluppo di app istantanee.
  • Clic Applicare.

Attualmente, puoi testare solo le app istantanee su un Nexus 5X, Nexus 6P, Pixel, Pixel XL o Galaxy S7 con Android 6.0 o versioni successive. Tuttavia, se non possiedi nessuno di questi dispositivi, puoi creare un dispositivo virtuale Android (AVD) che emula uno di questi dispositivi, con alcune condizioni: l'AVD deve utilizzare un'immagine x86 e deve includere le API di Google.

Poiché non possiedo nessuno di questi dispositivi, creerò un AVD che emula un pixel: 

  • Avvia il gestore AVD.
  • Clicca il Crea dispositivo virtuale ... pulsante.
  • Selezionare Pixel, e quindi fare clic Il prossimo.
  • Seleziona il x86 immagini linguetta. 
  • Seleziona un'immagine di sistema su cui è in esecuzione Android 6.0 e, ad esempio, le API di Google Marshmallow / 23 / x86 / Android 6.0 (API di Google).
  • Clic Il prossimo.
  • Assegna un nome all'AVD e fai clic finire.
  • Avvia il tuo AVD.

Infine, dovrai accedere a un account Google sul tuo AVD:

  • Passa al tuo AVD e apri il launcher del dispositivo.
  • Seleziona il Google App.
  • Inserisci un indirizzo e una password Gmail. Questo può essere il tuo account di vita reale o un account che hai creato esclusivamente allo scopo di testare i tuoi progetti Android. 

Creazione della prima app istantanea 

In Android Studio 3.0 Preview 1 e versioni successive, la creazione di un progetto con supporto per Instant App integrato è facile come selezionare una casella di controllo, quindi anziché descrivere solo le funzioni di app istantanee, creeremo un progetto di app istantanea e quindi utilizzeremo il resto di questo articolo ha un'esperienza di prima mano con i suoi vari componenti. 

Tieni presente che questo progetto non presenta collegamenti delle app, quindi non potrai testare i componenti delle app istantanee sul tuo AVD (questo è qualcosa che esploreremo in dettaglio nella seconda parte).

Per creare il tuo progetto:

  • Avvia la procedura guidata per la creazione del progetto, selezionando File> Nuovo> Nuovo progetto ... dalla barra degli strumenti di Android Studio o facendo clic Avvia un nuovo progetto Android Studio da Android Studio benvenuto schermo. 
  • Dai un nome al tuo progetto e fai clic Il prossimo
  • Impostare il SDK minimo ad Android 6.0 (Marshmallow). 
  • Seleziona il Includi il supporto dell'app Android Instant casella di controllo e fare clic Il prossimo
  • Per semplificare le cose, accetta il nome del modulo predefinito (caratteristica) e quindi fare clic Il prossimo.
  • Selezionare Attività di base e quindi fare clic Il prossimo.
  • Nella schermata successiva, accettare tutti i valori predefiniti, quindi fare clic finire.

Immediatamente, possiamo vedere che questo progetto è strutturato in modo molto diverso dal tuo tipico progetto Android, e comprende i seguenti moduli:

  • App. Il modulo dell'app installabile, noto anche come modulo APK. 
  • Base. Il modulo delle caratteristiche di base.
  • caratteristica. Sebbene questo particolare progetto ne abbia solo uno, un'applicazione può consistere in più moduli funzione.
  • Instantapp. Il modulo dell'app istantanea. 

Ad eccezione del modulo feature, qualsiasi progetto che supporti le app istantanee dovere avere tutti i moduli sopra, quindi esploriamo ciascuno di questi moduli in dettaglio.  

1. Modulo di domanda

Il concetto di un modulo applicativo potrebbe non essere una novità, ma quando il tuo progetto supporta le app istantanee, il manifest del modulo applicativo sembra molto più vuoto di quanto probabilmente sei abituato a: 

C'è un motivo per cui questo file è così vuoto: quando costruisci il tuo progetto, il contenuto di tutti gli altri file Manifest presenti in tutto il tuo caratteristica di base e caratteristica i moduli sono uniti con questo file, quindi non rimarrà per sempre vuoto! 

Se apri questo modulo build.gradle file, quindi noterai due nuovi elementi: 

dependencies implementation project (': feature') progetto di implementazione (': base')

Qui, stiamo dichiarando che il nostro modulo applicativo ha una dipendenza dal caratteristica modulo e base modulo. 

Quando si aggiunge il supporto dell'app istantanea a un progetto, si separano il codice e le risorse correlate in moduli funzione che possono funzionare indipendentemente dall'applicazione installabile. Tuttavia, questi moduli sono ancora parti della tua app installabile, piuttosto che entità separate, motivo per cui il nostro modulo applicativo sta dichiarando la funzione e i moduli base come dipendenze.

2. Modulo Feature di base

Ogni progetto di app istantanea deve includere un singolo modulo di funzionalità di base, che contiene il codice e le risorse utilizzate in tutti i moduli dell'applicazione. Ad esempio, se apri il nostro progetto base / res / mipmap cartella, quindi vedrai tutte le icone di avvio dell'applicazione, che saranno chiaramente utilizzate in più moduli. 


Poiché contiene codice e risorse comuni, tutti dei moduli funzione del progetto dipendono da questo modulo funzione base singola. 

Continuando su questo tema, il modulo delle caratteristiche di base contiene le voci Manifest che vengono utilizzate nell'intero progetto. Ad esempio, il tuo progetto base / src / main / AndroidManifest.xml il file contiene le impostazioni per l'icona, il tema e l'etichetta della tua applicazione: 

   

L'altro elemento notevole è il modulo base build.gradle file, che contiene alcuni nuovi attributi:

// Tutte le feature di base e i moduli di funzionalità "regolari" usano il plugin com.android.feature, piuttosto che il plugin com.android.application // applica il plugin: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Specifica che questa è l'unica funzione di base del progetto, usando l'espressione 'baseFeature true' // baseFeature true ... ... ... dependencies // Usa 'progetto applicazione' per aggiungere una dipendenza dal modulo delle caratteristiche di base, al tuo modulo 'app' del progetto installabile // progetto applicativo (': app') // Usa 'feature project' per fare riferimento al modulo feature del nostro progetto, opportunamente chiamato 'feature' // feature project (': feature') 

Noterai anche che questo particolare build.gradle il file manca un ID applicazione attributo e (allarme spoiler) troverai esattamente la stessa cosa quando verremo a ispezionare i nostri moduli build.gradle file. Il nostro progetto ID applicazione è dichiarato nel modulo dell'applicazione build.gradle file solo.

Il progetto di applicazione (:app) linea nel nostro modulo base build.gradle file (vedi sopra) assicura che il singolo del progetto ID applicazione l'attributo è propagato attraverso tutti della nostra build.gradle file, motivo per cui questo attributo è mancante dal resto del nostro progetto. 

3. Modulo funzione

Quando alla fine arriverete ad aggiungere il supporto di Instant App a un progetto esistente, il compito più importante sarà estrarre ciascuna funzionalità della vostra applicazione nel proprio modulo di funzionalità, poiché ogni modulo di funzionalità contiene il codice e le risorse necessarie per fornire questa funzionalità solo. 

Se apri il nostro progetto caratteristica modulo, quindi vedrai che contiene il Attività principale classe, in più activity_main e content_main file di risorse, in sostanza tutti i componenti inclusi in Attività di base modello.  

Un singolo modulo feature può essere costituito da più attività, ma ogni modulo deve avere almeno un'attività definita come attività del punto di ingresso di questo modulo. 

Ogni attività del punto di ingresso viene mappata su un URL specifico, in modo che quando l'utente tocca questo URL carica l'attività associata e l'utente ha accesso a questo particolare modulo di funzionalità. 

Si designa l'attività del punto di ingresso di un modulo tramite manifest di quel modulo. In sostanza, è necessario aprire questo file e aggiungere quanto segue all'attività che si desidera utilizzare come punto di ingresso: 

  • Un filtro intent, con il CATEGORY_LAUNCHER e ACTION_MAIN intenti.
  • UN elemento contenente tutte le informazioni sull'URL che si desidera mappare a questa attività del punto di ingresso. 
  • Il Android: autoVerify attributo. Questo dice al sistema di controllare che la tua app abbia il permesso di agire come gestore predefinito per questo particolare URL. Questo è un meccanismo di sicurezza importante che aiuta a proteggere i proprietari di siti Web da app dannose che potrebbero tentare di dirottare i loro URL.

Se apri il file manifest del nostro modulo funzione, vedrai che tutto questo codice è già stato aggiunto al nostro Attività principale dichiarazione:

            

Il file finale che vedremo in questo modulo è il build.gradle file, che contiene alcune righe di codice degno di nota: 

// Di nuovo, stiamo usando il plugin com.android.feature, piuttosto che com.android.application // applica il plugin: 'com.android.feature' android // Come accennato in precedenza, in questa sezione manca un 'applicationID' attributo // ... ... ... dipendenze implementazione fileTree (dir: 'libs', include: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2',  exclude group: 'com.android.support', module: 'support-annotations') // Tutti i moduli feature hanno una dipendenza dal modulo feature di base, che stiamo dichiarando qui // progetto di implementazione (': base') testImplementation 'junit: junit: 4.12' 

Poiché tutti i moduli funzione dipendono dal modulo delle caratteristiche di base, la prima volta che l'utente richiede qualunque funzionalità dalla tua applicazione, riceveranno il modulo delle caratteristiche di base più il modulo funzione a cui stanno effettivamente tentando di accedere. 

Si noti che sebbene questo particolare progetto sia costituito da un modulo feature di base e un modulo funzione, se la tua app ha solo una funzione che vuoi rendere disponibile come app istantanea, allora è possibile creare un progetto che consiste in un modulo feature di base solo. Analizzeremo entrambi i "tipi" di progetto di app istantanea in questa serie. 

4. Modulo app istantaneo

Il modulo Instant App ha uno scopo semplice: agisce come un contenitore che prende tutti i tuoi moduli funzione e li trasforma in APK di app istantanee.

Se apri il modulo Instant App di questo progetto, vedrai che è praticamente vuoto a parte un build.gradle file, che dichiara semplicemente il tuo modulo funzione di base e il tuo modulo funzione come dipendenze:

applica il plug-in: progetto di implementazione 'com.android.instantapp' dependencies progetto di implementazione (': feature') (': base')

Testare la tua app

Dal momento che questo progetto non contiene collegamenti di app, non saremo in grado di testare i suoi componenti delle app istantanee, ma possiamo ancora eseguire questo progetto come app installabile. Questo potrebbe non sembrare particolarmente eccitante, ma tenendo presente che la maggior parte del codice e delle risorse del nostro progetto si trovano nel modulo delle caratteristiche delle app istantanee, è importante verificare come il nostro progetto funzioni come un'applicazione installabile. 

Avviare l'AVD creato in precedenza o collegare uno smartphone o tablet Android fisico compatibile al computer di sviluppo, quindi selezionare Esegui> Esegui ...> app dalla barra degli strumenti di Android Studio. 

Nonostante il fatto che tutti i nostri Attività principale il codice si trova nel modulo funzione, una volta caricata la nostra app vedrai il Attività principaleIl pulsante di azione fluttuante (FAB) e Ciao mondo Messaggio. Quello che stiamo vedendo qui è il nostro modulo applicativo che prende il codice e le risorse che si trovano nella funzione di Instant App separata e nei moduli di funzionalità di base e li combina in un'app installabile. 

Conclusione 

In questo tutorial abbiamo esaminato in modo approfondito come funzionano le app istantanee ed esplorato i vari motivi per cui potresti voler aggiungere il supporto di Instant App ai tuoi progetti Android. 

In un mondo ideale, la tua decisione di iniziare ad esplorare le app istantanee coinciderebbe perfettamente con l'inizio di un nuovo progetto Android, ma sfortunatamente, essendo uno sviluppatore raramente questo è conveniente! È molto più probabile che dovrai riconfigurare un progetto esistente per supportare le app istantanee, il che non è vero abbastanza semplice come selezionare una casella di controllo nella procedura guidata di creazione del progetto di Android Studio! 

Nel prossimo post, daremo uno sguardo approfondito su come aggiungere il supporto istantaneo delle app a un progetto esistente. Ti mostrerò anche come implementare collegamenti di app, quindi alla fine del prossimo post avrai creato un'app istantanea completamente funzionante che potrai avviare e testare su qualsiasi dispositivo AVD o Android compatibile. 

.