Funzioni e impostazioni
Configurazione del Plugin Updater
Consulta Readme su Github per maggiori informazioni
CapacitorUpdater può essere configurato con queste opzioni:
Proprietà | Tipo | Descrizione | Predefinito | Da |
---|---|---|---|---|
appReadyTimeout | number | Configura il numero di millisecondi che il plugin nativo deve attendere prima di considerare un aggiornamento ‘fallito’. Disponibile solo per Android e iOS | 10000 // (10 secondi) | |
responseTimeout | number | Configura il numero di millisecondi che il plugin nativo deve attendere prima di considerare timeout l’API. Disponibile solo per Android e iOS | 20 // (20 secondi) | |
autoDeleteFailed | boolean | Configura se il plugin deve eliminare automaticamente i bundle falliti. Disponibile solo per Android e iOS | true | |
autoDeletePrevious | boolean | Configura se il plugin deve eliminare automaticamente i bundle precedenti dopo un aggiornamento riuscito. Disponibile solo per Android e iOS | true | |
autoUpdate | boolean | Configura se il plugin deve utilizzare l’aggiornamento automatico tramite un server di aggiornamento. Disponibile solo per Android e iOS | true | |
resetWhenUpdate | boolean | Elimina automaticamente i bundle scaricati in precedenza quando viene installata una nuova versione nativa dell’app sul dispositivo. Disponibile solo per Android e iOS | true | |
updateUrl | string | Configura l’URL/endpoint a cui vengono inviati i controlli di aggiornamento. Disponibile solo per Android e iOS | https://plugincapgoapp/updates | |
channelUrl | string | Configura l’URL/endpoint per le operazioni sui canali. Disponibile solo per Android e iOS | https://plugincapgoapp/channel_self | |
statsUrl | string | Configura l’URL/endpoint a cui vengono inviate le statistiche di aggiornamento. Disponibile solo per Android e iOS. Impostare a "" per disabilitare la segnalazione delle statistiche | https://plugincapgoapp/stats | |
privateKey | string | Configura la chiave privata per la crittografia end-to-end degli aggiornamenti live. Disponibile solo per Android e iOS. Deprecato nella versione 620, sarà rimosso nella versione 700 | undefined | |
publicKey | string | Configura la chiave pubblica per la crittografia end-to-end degli aggiornamenti live Versione 2. Disponibile solo per Android e iOS | undefined | 620 |
version | string | Configura la versione corrente dell’app. Verrà utilizzata per la prima richiesta di aggiornamento. Se non impostata, il plugin otterrà la versione dal codice nativo. Solo Android e iOS | undefined | 41748 |
directUpdate | boolean | Fa sì che il plugin installi direttamente l’aggiornamento quando l’app è stata appena aggiornata/installata. Solo per modalità autoUpdate. Disponibile solo per Android e iOS | undefined | 510 |
periodCheckDelay | number | Configura il periodo di ritardo per il controllo periodico degli aggiornamenti in secondi. Disponibile solo per Android e iOS. Non può essere inferiore a 600 secondi (10 minuti) | 600 // (10 minuti) | |
localS3 | boolean | Configura la CLI per utilizzare un server locale per test o server di aggiornamento self-hosted | undefined | 41748 |
localHost | string | Configura la CLI per utilizzare un server locale per test o server di aggiornamento self-hosted | undefined | 41748 |
localWebHost | string | Configura la CLI per utilizzare un server locale per test o server di aggiornamento self-hosted | undefined | 41748 |
localSupa | string | Configura la CLI per utilizzare un server locale per test o server di aggiornamento self-hosted | undefined | 41748 |
localSupaAnon | string | Configura la CLI per utilizzare un server locale per test | undefined | 41748 |
localApi | string | Configura la CLI per utilizzare un’API locale per test | undefined | 633 |
localApiFiles | string | Configura la CLI per utilizzare un’API di file locale per test | undefined | 633 |
allowModifyUrl | boolean | Permette al plugin di modificare dinamicamente updateUrl, statsUrl e channelUrl dal lato JavaScript | false | 540 |
defaultChannel | string | Imposta il canale predefinito per l’app nella configurazioneEcco la traduzione in italiano: |
| <code>undefined</code> | 550 |
| appId
| string
| Configura l’id dell’app per l’app nella configurazione | undefined
| 600 |
| keepUrlPathAfterReload
| boolean
| Configura il plugin per mantenere il percorso URL dopo un ricaricamento ATTENZIONE: Quando viene attivato un ricaricamento, la ‘windowhistory’ verrà cancellata | false
| 680 |
Esempi
In capacitorconfigjson
:
{ "plugins": { "CapacitorUpdater": { "appReadyTimeout": 1000 // (1 secondo), "responseTimeout": 10 // (10 secondi), "autoDeleteFailed": false, "autoDeletePrevious": false, "autoUpdate": false, "resetWhenUpdate": false, "updateUrl": https://examplecom/api/auto_update, "channelUrl": https://examplecom/api/channel, "statsUrl": https://examplecom/api/stats, "privateKey": undefined, "publicKey": undefined, "version": undefined, "directUpdate": undefined, "periodCheckDelay": undefined, "localS3": undefined, "localHost": undefined, "localWebHost": undefined, "localSupa": undefined, "localSupaAnon": undefined, "localApi": undefined, "localApiFiles": undefined, "allowModifyUrl": undefined, "defaultChannel": undefined, "appId": undefined, "keepUrlPathAfterReload": undefined } }}
In capacitorconfigts
:
/// <reference types="@capgo/capacitor-updater" />
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { appReadyTimeout: 1000 // (1 secondo), responseTimeout: 10 // (10 secondi), autoDeleteFailed: false, autoDeletePrevious: false, autoUpdate: false, resetWhenUpdate: false, updateUrl: https://examplecom/api/auto_update, channelUrl: https://examplecom/api/channel, statsUrl: https://examplecom/api/stats, privateKey: undefined, publicKey: undefined, version: undefined, directUpdate: undefined, periodCheckDelay: undefined, localS3: undefined, localHost: undefined, localWebHost: undefined, localSupa: undefined, localSupaAnon: undefined, localApi: undefined, localApiFiles: undefined, allowModifyUrl: undefined, defaultChannel: undefined, appId: undefined, keepUrlPathAfterReload: undefined, }, },};
export default config;
notifyAppReady()
setUpdateUrl()
setStatsUrl()
setChannelUrl()
download()
next()
set()
delete()
list()
reset()
current()
reload()
setMultiDelay()
cancelDelay()
getLatest()
setChannel()
unsetChannel()
getChannel()
setCustomId()
getBuiltinVersion()
getDeviceId()
getPluginVersion()
isAutoUpdateEnabled()
removeAllListeners()
addListener('download', )
addListener('noNeedUpdate', )
addListener('updateAvailable', )
addListener('downloadComplete', )
addListener('majorAvailable', )
addListener('updateFailed', )
addListener('downloadFailed', )
addListener('appReloaded', )
addListener('appReady', )
isAutoUpdateAvailable()
getNextBundle()
- Interfaces
- Type Aliases
Metodi
notifyAppReady()
notifyAppReady() => Promise<AppReadyResult>
Notifica a Capacitor Updater che il bundle corrente sta funzionando (verrà eseguito un rollback se questo metodo non viene chiamato ad ogni avvio dell’app) Per impostazione predefinita questo metodo dovrebbe essere chiamato nei primi 10 secondi dopo l’avvio dell’app, altrimenti verrà eseguito un rollback Modifica questo comportamento con {@link appReadyTimeout}
Ritorna: Promise<AppReadyResult>
setUpdateUrl()
setUpdateUrl(options: UpdateUrl) => Promise<void>
Imposta l’updateUrl per l’app, questo sarà utilizzato per controllare gli aggiornamenti
Param | Type | Descrizione |
---|---|---|
options | UpdateUrl | contiene l’URL da utilizzare per controllare gli aggiornamenti |
Dal: 540
setStatsUrl()
setStatsUrl(options: StatsUrl) => Promise<void>
Imposta la statsUrl per l’app, questa verrà utilizzata per inviare statistiche. L’inserimento di una stringa vuota disabiliterà la raccolta delle statistiche.
Param | Type | Descrizione |
---|---|---|
options | StatsUrl | contiene l’URL da utilizzare per inviare statistiche |
Dal: 540
setChannelUrl()
setChannelUrl(options: ChannelUrl) => Promise<void>
Imposta la channelUrl per l’app, questa verrà utilizzata per impostare il canale
Param | Type | Descrizione |
---|---|---|
options | ChannelUrl | contiene l’URL da utilizzare per impostare il canale |
Dal: 540
download()
download(options: DownloadOptions) => Promise<BundleInfo>
Scarica un nuovo bundle dall’URL fornito, dovrebbe essere un file zip, con file al suo interno o con un ID unico al suo interno con tutti i tuoi file
Param | Type | Descrizione |
---|---|---|
options | DownloadOptions | Le {@link DownloadOptions} per scaricare un nuovo bundle zip |
Ritorna: Promise<BundleInfo>
next()
next(options: BundleId) => Promise<BundleInfo>
Imposta il prossimo bundle da utilizzare quando l’app viene ricaricata| Param | Type | Description |
| ------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| options
| BundleId
| Contiene l’ID del prossimo Bundle da impostare al prossimo avvio dell’app {@link BundleInfoid} |
Returns: Promise<BundleInfo>
set()
set(options: BundleId) => Promise<void>
Imposta il bundle corrente e riavvia immediatamente l’app
Param | Type | Description |
---|---|---|
options | BundleId | Un oggetto {@link BundleId} contenente il nuovo bundle id da impostare come corrente |
delete()
delete(options: BundleId) => Promise<void>
Elimina il bundle specificato dalla memoria dell’app nativa. Usa con {@link list} per ottenere gli ID dei Bundle memorizzati
Param | Type | Description |
---|---|---|
options | BundleId | Un oggetto {@link BundleId} contenente l’ID di un bundle da eliminare (nota, questo è l’id del bundle, NON il nome della versione) |
list()
list(options?: ListOptions | undefined) => Promise<BundleListResult>
Ottieni tutti i bundle scaricati localmente nella tua app
Param | Type | Description |
---|---|---|
options | ListOptions | Le {@link ListOptions} per elencare i bundle |
Returns: Promise<BundleListResult>
reset()
reset(options?: ResetOptions | undefined) => Promise<void>
Ripristina l’app al bundle ‘builtin’ (quello inviato all’Apple App Store / Google Play Store) o all’ultimo bundle caricato con successo
Param | Type | Description |
---|---|---|
options | ResetOptions | Contenente {@link ResetOptionstoLastSuccessful}, true ripristina al bundle builtin e false ripristinerà all’ultimo bundle caricato con successo |
current()
current() => Promise<CurrentBundleResult>
Ottieni il bundle corrente, se nessuno è impostato restituisce builtin
currentNative è il bundle originale installato sul dispositivo
Returns: Promise<CurrentBundleResult>
reload()
reload() => Promise<void>
Ricarica la vista
setMultiDelay()
setMultiDelay(options: MultiDelayConditions) => Promise<void>
Imposta un array {@link DelayCondition} contenente le condizioni che il Plugin utilizzerà per ritardare l’aggiornamento Dopo che tutte le condizioni sono soddisfatte, il processo di aggiornamento ripartirà come al solito, quindi l’aggiornamento verrà installato dopo un background o l’uccisione dell’app Per il tipo ‘date’, il valore deve essere una stringa di data iso8601 Per il tipo ‘background’, il valore deve essere un numero in millisecondi Per il tipo ‘nativeVersion’, il valore deve essere il numero di versione Per il tipo ‘kill’, il valore non viene utilizzato La funzione ha un comportamento non coerente l’opzione kill fa scattare l’aggiornamento dopo il primo kill e non dopo il prossimo background come altre opzioni. Questo sarà corretto in una futura release maggiore
Param | Type | Description |
---|---|---|
options | MultiDelayConditions | Contenente l’array {@link MultiDelayConditions} di condizioni da impostare |
Since: 430
cancelDelay()
cancelDelay() => Promise<void>
Annulla un {@link DelayCondition} per elaborare immediatamente un aggiornamento
Since: 400
getLatest()
getLatest(options?: GetLatestOptions | undefined) => Promise<LatestVersion>
Ottieni l’ultimo bundle disponibile dall’URL di aggiornamento
Param | Type |
---|---|
options | GetLatestOptions |
Returns: Promise<LatestVersion>
Since: 400
setChannel()
setChannel(options: SetChannelOptions) => Promise<ChannelRes>
Imposta il canale per questo dispositivo. Il canale deve consentire l’auto-assegnazione perché questo funzioni
Non utilizzare questo metodo per impostare il canale all’avvio quando autoUpdate
è abilitato nella {@link PluginsConfig}
Questo metodo serve per impostare il canale dopo che l’app è pronta
Questo metodo invia al backend di Capgo una richiesta per collegare l’ID del dispositivo al canale. Capgo può accettare o rifiutare a seconda delle impostazioni del tuo canale
Param | Type | Description |
---|---|---|
options | SetChannelOptions | È il canale {@link SetChannelOptions} da impostare |
Returns: Promise<ChannelRes>
Since: 470
unsetChannel()
unsetChannel(options: UnsetChannelOptions) => Promise<void>
Rimuove l’impostazione del canale per questo dispositivoIl dispositivo tornerà quindi al canale predefinito
Param | Tipo |
---|---|
options | UnsetChannelOptions |
Da: 470
getChannel()
getChannel() => Promise<GetChannelRes>
Ottieni il canale per questo dispositivo
Ritorna: Promise<GetChannelRes>
Da: 480
setCustomId()
setCustomId(options: SetCustomIdOptions) => Promise<void>
Imposta un ID personalizzato per questo dispositivo
Param | Tipo | Descrizione |
---|---|---|
options | SetCustomIdOptions | è il {@link SetCustomIdOptions} customId da impostare |
Da: 490
getBuiltinVersion()
getBuiltinVersion() => Promise<BuiltinVersion>
Ottieni la versione nativa dell’app o la versione integrata se impostata nella configurazione
Ritorna: Promise<BuiltinVersion>
Da: 520
getDeviceId()
getDeviceId() => Promise<DeviceId>
Ottieni ID univoco utilizzato per identificare il dispositivo (inviato al server di aggiornamento automatico)
Ritorna: Promise<DeviceId>
getPluginVersion()
getPluginVersion() => Promise<PluginVersion>
Ottieni la versione nativa del plugin Capacitor Updater (inviata al server di aggiornamento automatico)
Ritorna: Promise<PluginVersion>
isAutoUpdateEnabled()
isAutoUpdateEnabled() => Promise<AutoUpdateEnabled>
Ottieni lo stato della configurazione di aggiornamento automatico
Ritorna: Promise<AutoUpdateEnabled>
removeAllListeners()
removeAllListeners() => Promise<void>
Rimuovi tutti i listener per questo plugin
Da: 100
addListener(‘download’, )
addListener(eventName: 'download', listenerFunc: (state: DownloadEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento di download del bundle nell’App Si attiva quando inizia un download, durante il download e al termine
Param | Tipo |
---|---|
eventName | ’download’ |
listenerFunc | (state: DownloadEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 2011
addListener(‘noNeedUpdate’, )
addListener(eventName: 'noNeedUpdate', listenerFunc: (state: NoNeedEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento nessun aggiornamento necessario, utile quando vuoi forzare il controllo ogni volta che l’app viene avviata
Param | Tipo |
---|---|
eventName | ’noNeedUpdate’ |
listenerFunc | (state: NoNeedEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 400
addListener(‘updateAvailable’, )
addListener(eventName: 'updateAvailable', listenerFunc: (state: UpdateAvailableEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento aggiornamento disponibile, utile quando vuoi forzare il controllo ogni volta che l’app viene avviata
Param | Tipo |
---|---|
eventName | ’updateAvailable’ |
listenerFunc | (state: UpdateAvailableEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 400
addListener(‘downloadComplete’, )
addListener(eventName: 'downloadComplete', listenerFunc: (state: DownloadCompleteEvent) => void) => Promise<PluginListenerHandle>
Ascolta gli eventi downloadComplete
Param | Tipo |
---|---|
eventName | ’downloadComplete’ |
listenerFunc | (state: DownloadCompleteEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 400
addListener(‘majorAvailable’, )
addListener(eventName: 'majorAvailable', listenerFunc: (state: MajorAvailableEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento di aggiornamento Major nell’App, ti fa sapere quando l’aggiornamento major è bloccato dall’impostazione disableAutoUpdateBreaking
Param | Tipo |
---|---|
eventName | ’majorAvailable’ |
listenerFunc | (state: MajorAvailableEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 230
addListener(‘updateFailed’, )
addListener(eventName: 'updateFailed', listenerFunc: (state: UpdateFailedEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento di fallimento dell’aggiornamento nell’App, ti fa sapere quando l’aggiornamento non è riuscito a installarsi al prossimo avvio dell’app
Param | Tipo |
---|---|
eventName | ’updateFailed’ |
listenerFunc | (state: UpdateFailedEvent) => void |
Ritorna: Promise<PluginListenerHandle>
Da: 230
addListener(‘downloadFailed’,)
addListener(eventName: 'downloadFailed', listenerFunc: (state: DownloadFailedEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento di fallimento del download nell’App, ti informa quando il download di un bundle è fallito
Param | Type |
---|---|
eventName | ’downloadFailed’ |
listenerFunc | (state: DownloadFailedEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 400
addListener(‘appReloaded’, )
addListener(eventName: 'appReloaded', listenerFunc: () => void) => Promise<PluginListenerHandle>
Ascolta l’evento di ricaricamento nell’App, ti informa quando è avvenuto il ricaricamento
Param | Type |
---|---|
eventName | ’appReloaded’ |
listenerFunc | () => void |
Returns: Promise<PluginListenerHandle>
Since: 430
addListener(‘appReady’, )
addListener(eventName: 'appReady', listenerFunc: (state: AppReadyEvent) => void) => Promise<PluginListenerHandle>
Ascolta l’evento di app pronta nell’App, ti informa quando l’app è pronta all’uso
Param | Type |
---|---|
eventName | ’appReady’ |
listenerFunc | (state: AppReadyEvent) => void |
Returns: Promise<PluginListenerHandle>
Since: 510
isAutoUpdateAvailable()
isAutoUpdateAvailable() => Promise<AutoUpdateAvailable>
Verifica se l’aggiornamento automatico è disponibile (non disabilitato da serverUrl)
Returns: Promise<AutoUpdateAvailable>
getNextBundle()
getNextBundle() => Promise<BundleInfo | null>
Ottieni il prossimo bundle che verrà utilizzato quando l’app si ricaricherà Restituisce null se non è impostato alcun bundle successivo
Returns: Promise<BundleInfo | null>
Since: 680
Interfaces
AppReadyResult
Prop | Type |
---|---|
bundle | BundleInfo |
BundleInfo
Prop | Type |
---|---|
id | string |
version | string |
downloaded | string |
checksum | string |
status | BundleStatus |
UpdateUrl
Prop | Type |
---|---|
url | string |
StatsUrl
Prop | Type |
---|---|
url | string |
ChannelUrl
Prop | Type |
---|---|
url | string |
DownloadOptions
Prop | Type | Description | Default | Since |
---|---|---|---|---|
url | string | L’URL del file zip del bundle (es: distzip) da scaricare (Può essere qualsiasi URL Es: Amazon S3, un tag GitHub, qualsiasi altro posto dove hai ospitato il tuo bundle) | ||
version | string | Il codice/nome versione di questo bundle/versione | ||
sessionKey | string | La chiave di sessione per l’aggiornamento | undefined | 400 |
checksum | string | Il checksum per l’aggiornamento | undefined | 400 |
BundleId
Prop | Type |
---|---|
id | string |
BundleListResult
Prop | Type |
---|---|
bundles | BundleInfo[] |
ListOptions
Prop | Type | Description | Default | Since |
---|---|---|---|---|
raw | boolean | Se restituire la lista dei bundle grezza o il manifest Se true, la lista tenterà di leggere il database interno invece dei file su disco | false | 6140 |
ResetOptions
Prop | Type |
---|---|
toLastSuccessful | boolean |
CurrentBundleResult
Prop | Type |
---|---|
bundle | BundleInfo |
native | string |
MultiDelayConditions
Prop | Type |
---|---|
delayConditions | DelayCondition[] |
DelayCondition
Prop | Type | Description |
---|---|---|
kind | DelayUntilNext | Imposta le condizioni di ritardo in setMultiDelay |
value | string |
LatestVersion
Prop | Type | Description | Since |
---|---|---|---|
version | string | Risultato del metodo getLatest | 40 |
checksum | string | 6 | |
major | boolean | ||
message | string | ||
sessionKey | string | ||
error | string | ||
old | string | ||
url | string | ||
manifest | ManifestEntry[] | 61 |
ManifestEntry
Proprietà | Tipo |
---|---|
file_name | string | null |
file_hash | string | null |
download_url | string | null |
GetLatestOptions
Proprietà | Tipo | Descrizione | Predefinito | Da |
---|---|---|---|---|
channel | string | Il canale per ottenere l’ultima versione. Il canale deve consentire ‘self_assign’ affinché funzioni | undefined | 680 |
ChannelRes
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
status | string | Stato attuale del canale impostato | 470 |
error | string | ||
message | string |
SetChannelOptions
Proprietà | Tipo |
---|---|
channel | string |
triggerAutoUpdate | boolean |
UnsetChannelOptions
Proprietà | Tipo |
---|---|
triggerAutoUpdate | boolean |
GetChannelRes
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
channel | string | Stato attuale del canale ottenuto | 480 |
error | string | ||
message | string | ||
status | string | ||
allowSet | boolean |
SetCustomIdOptions
Proprietà | Tipo |
---|---|
customId | string |
BuiltinVersion
Proprietà | Tipo |
---|---|
version | string |
DeviceId
Proprietà | Tipo |
---|---|
deviceId | string |
PluginVersion
Proprietà | Tipo |
---|---|
version | string |
AutoUpdateEnabled
Proprietà | Tipo |
---|---|
enabled | boolean |
PluginListenerHandle
Proprietà | Tipo |
---|---|
remove | () => Promise<void> |
DownloadEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
percent | number | Stato attuale del download, tra 0 e 100 | 400 |
bundle | BundleInfo |
NoNeedEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
bundle | BundleInfo | Stato attuale del download, tra 0 e 100 | 400 |
UpdateAvailableEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
bundle | BundleInfo | Stato attuale del download, tra 0 e 100 | 400 |
DownloadCompleteEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
bundle | BundleInfo | Emesso quando è disponibile un nuovo aggiornamento | 400 |
MajorAvailableEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
version | string | Emesso quando è disponibile un nuovo bundle maggiore | 400 |
UpdateFailedEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
bundle | BundleInfo | Emesso quando un aggiornamento non riesce a installarsi | 400 |
DownloadFailedEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
version | string | Emesso quando un download fallisce | 400 |
AppReadyEvent
Proprietà | Tipo | Descrizione | Da |
---|---|---|---|
bundle | BundleInfo | Emesso quando l’app è pronta per l’uso | 520 |
status | string |
AutoUpdateAvailable
Proprietà | Tipo |
---|---|
available | boolean |
Type Aliases
BundleStatus
‘success’ | ‘error’ | ‘pending’ | ‘downloading’
DelayUntilNext
‘background’ | ‘kill’ | ‘nativeVersion’ | ‘date’