Referência da API do SDK do React Native Client
Importante
O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar migrar.
O plug-in CodePush é composto por dois componentes:
Um módulo JavaScript, que pode ser importado/necessário e permite que o aplicativo interaja com o serviço durante o tempo de execução (por exemplo, verifique se há atualizações, inspecione os metadados sobre a atualização do aplicativo em execução no momento).
Uma API nativa (Objective-C e Java) que permite que o host do aplicativo React Native se inicialize com o local correto do pacote JS.
As seções a seguir descrevem a forma e o comportamento dessas APIs em detalhes:
Referência da API JavaScript
Quando você precisar react-native-code-push
do , o objeto de módulo fornece os seguintes métodos de nível superior, além do decorador de componentes de nível raiz:
allowRestart: permite que reinicializações programáticas ocorram como resultado da instalação de uma atualização e, opcionalmente, reinicia imediatamente o aplicativo se uma atualização pendente tiver tentado reiniciar o aplicativo enquanto as reinicializações não foram permitidas. Esse método é uma API avançada e só será necessário se o aplicativo não permitir reinicializações explicitamente por meio do
disallowRestart
método.checkForUpdate: pergunta ao serviço CodePush se a implantação do aplicativo configurada tem uma atualização disponível.
disallowRestart: não permite temporariamente que qualquer reinicialização programática ocorra como resultado da instalação de uma atualização do CodePush. Esse método é uma API avançada e é útil quando um componente em seu aplicativo (por exemplo, um processo de integração) precisa garantir que nenhuma interrupção do usuário final possa ocorrer durante seu tempo de vida.
getCurrentPackage: recupera os metadados sobre a atualização atualmente instalada (como descrição, tempo de instalação, tamanho).
Observação
A partir do
v1.10.3-beta
módulo CodePush,getCurrentPackage
está preterido em favor degetUpdateMetadata
*.getUpdateMetadata: recupera os metadados de uma atualização instalada (como descrição, obrigatório).
notifyAppReady: notifica o runtime do CodePush de que uma atualização instalada é considerada bem-sucedida. Se você estiver verificando e instalando atualizações manualmente (ou seja, não está usando o método de sincronização para lidar com tudo para você), esse método DEVERÁ ser chamado; caso contrário, o CodePush tratará a atualização como falha e reverterá para a versão anterior na próxima reinicialização do aplicativo.
restartApp: reinicia imediatamente o aplicativo. Se houver uma atualização pendente, ela será exibida imediatamente para o usuário final. Caso contrário, chamar esse método tem o mesmo comportamento que o usuário final matando e reiniciando o processo.
sincronização: Permite verificar se há uma atualização, baixá-la e instalá-la, tudo com uma única chamada. A menos que você precise de interface do usuário ou comportamento personalizado, recomendamos que a maioria dos desenvolvedores use esse método ao integrar o CodePush em seus aplicativos
Empurrar código
// Wrapper function
codePush(rootComponent: React.Component): React.Component;
codePush(options: CodePushOptions)(rootComponent: React.Component): React.Component;
// Decorator; Requires ES7 support
@codePush
@codePush(options: CodePushOptions)
Usado para envolver um componente React dentro de um componente React de "ordem superior" que sabe como sincronizar o pacote JavaScript do seu aplicativo e os ativos de imagem quando ele é montado. Internamente, o componente de ordem superior chama sync
dentro de seu componentDidMount
identificador de ciclo de vida, que executa uma verificação de atualização, baixa a atualização se ela existir e instala a atualização para você.
Esse decorador fornece suporte para permitir que você personalize seu comportamento para habilitar facilmente aplicativos com requisitos diferentes. Abaixo estão alguns exemplos de maneiras de usá-lo (você pode escolher um ou até mesmo usar uma combinação):
Sincronização silenciosa na inicialização do aplicativo (o comportamento padrão mais simples). Seu aplicativo baixará automaticamente as atualizações disponíveis e as aplicará na próxima vez que o aplicativo for reiniciado (como o sistema operacional ou o usuário final o eliminou ou o dispositivo foi reiniciado). Dessa forma, toda a experiência de atualização é "silenciosa" para o usuário final, pois ele não vê nenhum prompt de atualização ou reinicialização de aplicativo "sintético".
// Fully silent update that keeps the app in // sync with the server, without ever // interrupting the end user class MyApp extends Component {} MyApp = codePush(MyApp);
Sincronização silenciosa sempre que o aplicativo for retomado. O mesmo que 1, exceto que verificamos se há atualizações ou aplicamos uma atualização, se houver, toda vez que o aplicativo retornar ao primeiro plano após ser "colocado em segundo plano".
// Sync for updates every time the app resumes. class MyApp extends Component {} MyApp = codePush({ checkFrequency: codePush.CheckFrequency.ON_APP_RESUME, installMode: codePush.InstallMode.ON_NEXT_RESUME })(MyApp);
Interativo. Quando uma atualização estiver disponível, solicite permissão ao usuário final antes de baixá-la e aplique a atualização imediatamente. Se uma atualização fosse lançada usando o
mandatory
sinalizador, o usuário final ainda seria notificado sobre a atualização, mas não teria a opção de ignorá-la.// Active update that lets the end user know // about each update, and displays it to them // immediately after downloading it class MyApp extends Component {} MyApp = codePush({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE })(MyApp);
Registre/exiba o progresso. Enquanto o aplicativo estiver sincronizando com o servidor para atualizações, use os
codePushStatusDidChange
ganchos de evento oucodePushDownloadDidProgress
para registrar os diferentes estágios desse processo ou até mesmo exibir uma barra de progresso para o usuário.// Make use of the event hooks to keep track of // the different stages of the sync process. class MyApp extends Component { codePushStatusDidChange(status) { switch(status) { case codePush.SyncStatus.CHECKING_FOR_UPDATE: console.log("Checking for updates."); break; case codePush.SyncStatus.DOWNLOADING_PACKAGE: console.log("Downloading package."); break; case codePush.SyncStatus.INSTALLING_UPDATE: console.log("Installing update."); break; case codePush.SyncStatus.UP_TO_DATE: console.log("Up-to-date."); break; case codePush.SyncStatus.UPDATE_INSTALLED: console.log("Update installed."); break; } } codePushDownloadDidProgress(progress) { console.log(progress.receivedBytes + " of " + progress.totalBytes + " received."); } } MyApp = codePush(MyApp);
Opções de Empurrar de Código
O codePush
decorador aceita um objeto "options" que permite personalizar vários aspectos do comportamento padrão mencionado acima:
checkFrequency (codePush.CheckFrequency) - Especifica quando você deseja verificar se há atualizações. Assume o padrão de
codePush.CheckFrequency.ON_APP_START
. Consulte a referência deCheckFrequency
enumeração para obter uma descrição das opções disponíveis e o que elas fazem.deploymentKey (String) - Especifica a chave de implantação que você deseja consultar para uma atualização. Por padrão, esse valor é derivado do arquivo Info.plist (iOS) e do arquivo MainActivity.java (Android), mas essa opção permite que você o substitua do lado do script se precisar usar dinamicamente uma implantação diferente.
installMode (codePush.InstallMode) – especifica quando você deseja instalar atualizações opcionais (aquelas que não estão marcadas como obrigatórias). Assume o padrão de
codePush.InstallMode.ON_NEXT_RESTART
. Consulte a referência deInstallMode
enumeração para obter uma descrição das opções disponíveis e o que elas fazem.mandatoryInstallMode (codePush.InstallMode) - Especifica quando você deseja instalar atualizações, que são marcadas como obrigatórias. Assume o padrão de
codePush.InstallMode.IMMEDIATE
. Consulte a referência deInstallMode
enumeração para obter uma descrição das opções disponíveis e o que elas fazem.minimumBackgroundDuration (Number) - Especifica o número mínimo de segundos para o aplicativo ficar em segundo plano antes de reiniciá-lo. Essa propriedade só se aplica a atualizações instaladas usando
InstallMode.ON_NEXT_RESUME
ouInstallMode.ON_NEXT_SUSPEND
, e pode ser útil para colocar sua atualização na frente dos usuários finais mais cedo, sem ser muito intrusiva. O padrão é0
, que aplica a atualização imediatamente após uma retomada ou a menos que a suspensão do aplicativo seja longa o suficiente para não importar, por mais tempo que esteja em segundo plano.updateDialog (UpdateDialogOptions) – Um objeto "options" usado para determinar se uma caixa de diálogo de confirmação deve ser exibida para o usuário final quando uma atualização estiver disponível e, em caso afirmativo, quais cadeias de caracteres usar. O padrão é
null
, o que desativa a caixa de diálogo. Definir isso como qualquertrue
valor habilitará a caixa de diálogo com as cadeias de caracteres padrão, e passar um objeto para esse parâmetro permite habilitar a caixa de diálogo, bem como substituir uma ou mais das cadeias de caracteres padrão. Antes de ativar essa opção em um aplicativo distribuído pela App Store, consulte esta observação.A lista a seguir representa as opções disponíveis e seus padrões:
appendReleaseDescription (booleano) - Indica se você deseja acrescentar a descrição de uma versão disponível à mensagem de notificação, que é exibida para o usuário final. Assume o padrão de
false
.descriptionPrefix (String) - Indica a string com a qual você deseja prefixar a descrição da versão, se houver, ao exibir a notificação de atualização para o usuário final. Usa como padrão
" Description: "
mandatoryContinueButtonLabel (String) – o texto a ser usado para o botão que o usuário final deve pressionar para instalar uma atualização obrigatória. Assume o padrão de
"Continue"
.mandatoryUpdateMessage (String) – o texto usado como o corpo de uma notificação de atualização, quando a atualização é especificada como obrigatória. Assume o padrão de
"An update is available that must be installed."
.optionalIgnoreButtonLabel (String) – o texto a ser usado para o botão que o usuário final pode pressionar para ignorar uma atualização opcional disponível. Assume o padrão de
"Ignore"
.optionalInstallButtonLabel (String) - O texto a ser usado para o botão que o usuário final pode pressionar para instalar uma atualização opcional. Assume o padrão de
"Install"
.optionalUpdateMessage (String) – o texto usado como o corpo de uma notificação de atualização, quando a atualização é opcional. Assume o padrão de
"An update is available. Would you like to install it?"
.title (String) – o texto usado como cabeçalho de uma notificação de atualização exibida para o usuário final. Assume o padrão de
"Update available"
.
rollbackRetryOptions (RollbackRetryOptions) – o mecanismo de repetição de reversão permite que o aplicativo tente reinstalar uma atualização que foi revertida anteriormente (com as restrições especificadas nas opções). É um objeto de "opções" usado para determinar se uma nova tentativa de reversão deve ocorrer e, em caso afirmativo, quais configurações usar para a nova tentativa de reversão. O padrão é nulo, o que tem o efeito de desabilitar o mecanismo de repetição. Definir isso como qualquer valor verdadeiro habilitará o mecanismo de repetição com as configurações padrão, e passar um objeto para esse parâmetro permite habilitar a repetição de reversão, bem como substituir um ou mais dos valores padrão.
A lista a seguir representa as opções disponíveis e seus padrões:
delayInHours (Number) – Especifica o tempo mínimo em horas que o aplicativo aguardará após a reversão mais recente antes de tentar reinstalar o mesmo pacote revertido. Não pode ser menor que
0
. Pode ser número flutuante. Assume o padrão de24
.maxRetryAttempts (Número) – Especifica o número máximo de tentativas de repetição que o aplicativo pode fazer antes de parar de tentar. Não pode ser menor que
1
. Assume o padrão de1
.
codePushStatusDidChange (gancho de evento)
Chamado quando o processo de sincronização passa de um estágio para outro no processo de atualização geral. O gancho de evento é chamado com um código de status que representa o estado atual e pode ser qualquer um dos SyncStatus
valores.
codePushDownloadDidProgress (gancho de evento)
Chamado periodicamente quando uma atualização disponível está sendo baixada do servidor CodePush. O método é chamado com um DownloadProgress
objeto, que contém as duas propriedades a seguir:
totalBytes (Number) – o número total de bytes que devem ser recebidos para esta atualização (esse é o tamanho do conjunto de arquivos, que foi alterado em relação à versão anterior).
receivedBytes (Number) - O número de bytes baixados até o momento, que podem ser usados para acompanhar o progresso do download.
codePush.allowRestart
codePush.allowRestart(): void;
Repermite a ocorrência de reinicializações programáticas que, de outra forma, teriam sido rejeitadas devido a uma chamada anterior para disallowRestart
. Se disallowRestart
nunca foi chamado em primeiro lugar, chamar esse método resulta em uma não operação.
Se uma atualização do disallowRestart
CodePush estiver pendente no momento, que tentou reiniciar o aplicativo (por exemplo, ele usou InstallMode.IMMEDIATE
), mas foi bloqueada por ter sido chamada, a chamada allowRestart
resultará em uma reinicialização imediata. Essa reinicialização permite que a atualização seja aplicada o mais rápido possível, sem interromper o usuário final durante fluxos de trabalho críticos (por exemplo, um processo de integração).
Por exemplo, a chamada allowRestart
dispararia uma reinicialização imediata se um dos três cenários mencionados nos disallowRestart
documentos ocorresse depois disallowRestart
de ser chamado. No entanto, a chamada allowRestart
não dispararia uma reinicialização se os seguintes pontos forem verdadeiros:
Nenhuma atualização do CodePush foi instalada desde a última vez
disallowRestart
que foi chamada e, portanto, não há necessidade de reiniciar de qualquer maneira.No momento, há uma atualização pendente do CodePush, mas ela foi instalada por meio
InstallMode.ON_NEXT_RESTART
do , portanto, uma reinicialização programática não é necessária.No momento, há uma atualização pendente do CodePush, mas ela foi instalada por meio
InstallMode.ON_NEXT_RESUME
e o aplicativo ainda não foi colocado em segundo plano, portanto, ainda não há necessidade de reiniciar programaticamente.Nenhuma chamada foi feita desde
restartApp
a última vezdisallowRestart
que foi chamada.
Esse comportamento garante que nenhuma reinicialização seja acionada como resultado da chamada allowRestart
, a menos que uma tenha sido explicitamente solicitada durante o período não permitido. Desta forma, allowRestart
é semelhante a chamar restartApp(true)
, exceto que o primeiro só acionará uma reinicialização se a atualização atualmente pendente quiser reiniciar, mas o último será reiniciado enquanto uma atualização estiver pendente.
Consulte disallowRestart para obter um exemplo de como esse método pode ser usado.
codePush.checkForUpdate
codePush.checkForUpdate(deploymentKey: String = null, handleBinaryVersionMismatchCallback: (update: RemotePackage) => void): Promise<RemotePackage>;
Consulta o serviço CodePush para ver se a implantação do aplicativo configurada tem uma atualização disponível. Por padrão, ele usará a chave de implantação configurada no arquivo Info.plist (iOS) ou no arquivo MainActivity.java (Android), mas você pode substituí-la especificando um valor por meio do parâmetro opcionaldeploymentKey
. Isso pode ser útil quando você deseja "redirecionar" dinamicamente um usuário para uma implantação específica, como permitir "acesso antecipado" por meio de um easter egg ou uma opção de configuração do usuário.
O segundo parâmetro handleBinaryVersionMismatchCallback
opcional é uma função de retorno de chamada opcional que pode ser usada para notificar o usuário se houver alguma atualização binária.
Por exemplo, considere um caso de uso em que a versão binária atualmente instalada é 1.0.1 com um rótulo (rótulo de push de código) v1. Posteriormente, o código nativo foi alterado no ciclo de desenvolvimento e a versão binária foi atualizada para 1.0.2. Quando uma verificação de atualização de codepush é disparada, ignoramos as atualizações com incompatibilidade de versão binária (porque a atualização não está direcionada para a versão binária do aplicativo instalado no momento). Nesse caso, o aplicativo instalado (1.0.1) ignorará a atualização direcionada à versão 1.0.2. Você pode usar handleBinaryVersionMismatchCallback
para fornecer um gancho para lidar com essas situações.
Importante
Tenha cuidado ao usar alertas nesse retorno de chamada se você estiver desenvolvendo um aplicativo iOS, devido ao processo de revisão da App Store : os aplicativos não devem forçar os usuários a classificar o aplicativo, revisá-lo, baixar outros aplicativos ou outras ações semelhantes para acessar a funcionalidade, o conteúdo ou o uso do aplicativo.
Esse método retorna um Promise
, que é resolvido para um dos dois valores possíveis:
null
se não houver uma atualização disponível. Isso pode acontecer nos seguintes cenários:- A implantação configurada não contém nenhuma versão e, portanto, nada para atualizar.
- A versão mais recente dentro da implantação configurada está direcionada a uma versão binária diferente da que você está executando atualmente (mais antiga ou mais recente).
- O aplicativo em execução no momento já tem a versão mais recente da implantação configurada e, portanto, não precisa dela novamente.
- A versão mais recente na implantação configurada está marcada como desabilitada no momento, portanto, não é permitido baixá-la.
- A versão mais recente dentro da implantação configurada está em um estado de "distribuição ativa" e o dispositivo solicitante não se enquadra na porcentagem de usuários qualificados para ela.
Uma
RemotePackage
instância, que representa uma atualização disponível que pode ser inspecionada ou baixada posteriormente.
Exemplo de uso:
codePush.checkForUpdate()
.then((update) => {
if (!update) {
console.log("The app is up to date!");
} else {
console.log("An update is available! Should we download it?");
}
});
codePush.disallowRestart
codePush.disallowRestart(): void;
Não permite temporariamente que reinicializações programáticas ocorram como resultado de um dos seguintes cenários:
Uma atualização do CodePush é instalada usando
InstallMode.IMMEDIATE
Uma atualização do CodePush é instalada usando
InstallMode.ON_NEXT_RESUME
e o aplicativo é retomado em segundo plano (opcionalmente, sendo limitado pelaminimumBackgroundDuration
propriedade)O
restartApp
método foi denominadoObservação
As etapas 1 e 2 funcionam efetivamente chamando
restartApp
por você, para que você possa pensar em bloquear qualquer chamada pararestartApp
, independentemente dedisallowRestart
seu aplicativo chamá-la direta ou indiretamente.
Depois de chamar esse método, todas as chamadas para sync
ainda teriam permissão para verificar se há uma atualização, baixá-la e instalá-la, mas uma tentativa de reiniciar o aplicativo seria enfileirada até allowRestart
ser chamada. Dessa forma, a solicitação de reinicialização é capturada e pode ser "liberada" sempre que você quiser permitir que ela ocorra.
Essa é uma API avançada e é útil principalmente quando componentes individuais em seu aplicativo (como um processo de integração) precisam garantir que nenhuma interrupção do usuário final possa ocorrer durante seu tempo de vida, enquanto continua a permitir que o aplicativo continue sincronizando com o servidor CodePush em seu próprio ritmo e usando os modos de instalação apropriados. Isso tem o benefício de permitir que o aplicativo descubra e baixe as atualizações disponíveis o mais rápido possível, além de evitar interrupções durante as principais experiências do usuário final.
Como alternativa, você também pode usar InstallMode.ON_NEXT_RESTART
a chamada sync
whenever (que nunca tentará reiniciar programaticamente o aplicativo) e, em seguida, chamar restartApp
explicitamente em pontos do aplicativo que são "seguros" para fazer isso. disallowRestart
fornece uma abordagem alternativa para isso quando o código que sincroniza com o servidor CodePush é separado do código/componentes que desejam impor uma política de não reinicialização.
Exemplo de uso:
class OnboardingProcess extends Component {
...
componentWillMount() {
// Ensure that any CodePush updates that are
// synchronized in the background can't trigger
// a restart while this component is mounted.
codePush.disallowRestart();
}
componentWillUnmount() {
// Reallow restarts, and optionally trigger
// a restart if one was currently pending.
codePush.allowRestart();
}
...
}
codePush.getCurrentPackage
Observação
Esse método é considerado preterido a partir do v1.10.3-beta
módulo CodePush. Se você estiver executando esta versão (ou mais recente), recomendamos usar o codePush.getUpdateMetadata
instead, pois ele tem um comportamento mais previsível.
codePush.getCurrentPackage(): Promise<LocalPackage>;
Recupera os metadados sobre o "pacote" atualmente instalado (como descrição, tempo de instalação). Isso pode ser útil para cenários como exibir uma caixa de diálogo "o que há de novo?" depois que uma atualização foi aplicada ou verificar se há uma atualização pendente que está aguardando para ser aplicada por meio de uma retomada ou reinicialização.
Esse método retorna um Promise
, que é resolvido para um dos dois valores possíveis:
null
se o aplicativo estiver executando o pacote JS do binário e não uma atualização do CodePush. Isso ocorre nos seguintes cenários:- O usuário final instalou o binário do aplicativo e ainda não instalou uma atualização do CodePush
- O usuário final instalou uma atualização do binário (por exemplo, do repositório), que limpou as atualizações antigas do CodePush e deu precedência de volta ao binário JS no binário.
Uma
LocalPackage
instância, que representa os metadados da atualização do CodePush em execução no momento.
Exemplo de uso:
codePush.getCurrentPackage()
.then((update) => {
// If the current app "session" represents the first time
// this update has run, and it had a description provided
// with it upon release, let's show it to the end user
if (update.isFirstRun && update.description) {
// Display a "what's new?" modal
}
});
codePush.getUpdateMetadata
codePush.getUpdateMetadata(updateState: UpdateState = UpdateState.RUNNING): Promise<LocalPackage>;
Recupera os metadados de uma atualização instalada (como descrição, obrigatório) cujo estado corresponde ao parâmetro especificado updateState
. Isso pode ser útil para cenários como exibir uma caixa de diálogo "o que há de novo?" depois que uma atualização foi aplicada ou verificar se há uma atualização pendente que está aguardando para ser aplicada por meio de uma retomada ou reinicialização. Para obter mais informações sobre os possíveis estados de atualização e o que eles representam, consulte a referência UpdateState.
Esse método retorna um Promise
, que é resolvido para um dos dois valores possíveis:
null
se uma atualização com o estado especificado não existir no momento. Isso ocorre nos seguintes cenários:O usuário final ainda não instalou nenhuma atualização do CodePush e é por isso que nenhum metadado está disponível para nenhuma atualização, independentemente do que você especificar como parâmetro
updateState
.O usuário final instalou uma atualização do binário (por exemplo, do repositório), que limpou as atualizações antigas do CodePush e deu precedência de volta ao binário JS no binário. Ele exibiria o mesmo comportamento que # 1
O
updateState
parâmetro é definido comoUpdateState.RUNNING
, mas o aplicativo não está executando uma atualização do CodePush no momento. Pode haver uma atualização pendente, mas o aplicativo ainda não foi reiniciado para torná-lo ativo.O
updateState
parâmetro é definido comoUpdateState.PENDING
, mas o aplicativo não tem nenhuma atualização pendente no momento.
Uma
LocalPackage
instância, que representa os metadados para a atualização do CodePush solicitada no momento (em execução ou pendente).
Exemplo de uso:
// Check if there's currently a CodePush update running, and if
// so, register it with the HockeyApp SDK (https://github.com/slowpath/react-native-hockeyapp)
// so that crash reports will correctly display the JS bundle version the user was running.
codePush.getUpdateMetadata().then((update) => {
if (update) {
hockeyApp.addMetadata({ CodePushRelease: update.label });
}
});
// Check to see if there's still an update pending.
codePush.getUpdateMetadata(UpdateState.PENDING).then((update) => {
if (update) {
// There's a pending update, do we want to force a restart?
}
});
codePush.notifyAppReady
codePush.notifyAppReady(): Promise<void>;
Notifica o runtime do CodePush de que uma atualização recém-instalada deve ser considerada bem-sucedida e, portanto, uma reversão automática do lado do cliente não é necessária. É obrigatório chamar essa função em algum lugar no código do pacote atualizado. Caso contrário, na próxima vez que o aplicativo for reiniciado, o runtime do CodePush assumirá que a atualização instalada falhou e reverterá para a versão anterior. Esse comportamento existe para ajudar a garantir que os usuários finais não sejam bloqueados por uma atualização interrompida.
Se você estiver usando a sync
função e fazendo sua verificação de atualização na inicialização do aplicativo, não precisará chamá-la notifyAppReady
manualmente, pois sync
a chamará para você. Esse comportamento existe devido à suposição de que quando sync
é chamado em seu aplicativo, ele representa uma boa aproximação de uma inicialização bem-sucedida.
Observação
Esse método também tem o alias de notifyApplicationReady
(para compatibilidade com versões anteriores).
codePush.restartApp
codePush.restartApp(onlyIfUpdateIsPending: Boolean = false): void;
Reinicia imediatamente o aplicativo. Se um valor verdadeiro for fornecido ao onlyIfUpdateIsPending
parâmetro, o aplicativo só será reiniciado se houver realmente uma atualização pendente aguardando para ser aplicada.
Esse método é para cenários avançados e é útil principalmente quando as seguintes condições são verdadeiras:
Seu aplicativo está especificando um valor de modo de instalação de
ON_NEXT_RESTART
ouON_NEXT_RESUME
ao chamar ossync
métodos orLocalPackage.install
. Isso não se aplica à atualização até que o aplicativo seja reiniciado (pelo usuário final ou pelo sistema operacional) ou retomado e, portanto, a atualização não será exibida imediatamente para o usuário final.Você tem um evento de usuário específico do aplicativo (como o usuário final navegou de volta para a rota inicial do aplicativo) que permite aplicar a atualização de maneira discreta e, potencialmente, obtém a atualização para o usuário final antes de esperar até a próxima reinicialização ou retomada.
codePush.sync
codePush.sync(options: Object, syncStatusChangeCallback: function(syncStatus: Number), downloadProgressCallback: function(progress: DownloadProgress), handleBinaryVersionMismatchCallback: function(update: RemotePackage)): Promise<Number>;
Sincroniza o pacote JavaScript e os ativos de imagem do aplicativo com a versão mais recente para a implantação configurada. Ao contrário do método checkForUpdate , que verifica a presença de uma atualização e permite que você controle o que fazer em seguida, sync
lida com a experiência de verificação, download e instalação de atualização para você.
Esse método fornece suporte para dois "modos" diferentes (mas personalizáveis) para habilitar facilmente aplicativos com requisitos diferentes:
O modo silencioso (o comportamento padrão) baixa automaticamente as atualizações disponíveis e as aplica na próxima vez que o aplicativo for reiniciado (por exemplo, o sistema operacional ou o usuário final o eliminou ou o dispositivo foi reiniciado). Dessa forma, toda a experiência de atualização é "silenciosa" para o usuário final, pois ele não vê nenhum prompt de atualização ou reinicialização de aplicativo "sintético".
O modo ativo, que quando uma atualização está disponível, solicita permissão ao usuário final antes de baixá-la e, em seguida, aplica imediatamente a atualização. Se uma atualização fosse lançada usando o
mandatory
sinalizador, o usuário final ainda seria notificado sobre a atualização, mas não teria a opção de ignorá-la.
Exemplo de uso:
// Fully silent update that keeps the app in
// sync with the server, without ever
// interrupting the end user
codePush.sync();
// Active update, which lets the end user know
// about each update, and displays it to them
// immediately after downloading it
codePush.sync({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE });
Dica
Se você quiser decidir se deseja verificar ou baixar uma atualização disponível com base no nível de bateria do dispositivo do usuário final, nas condições da rede etc., encapsule a chamada em sync
uma condição que garanta que você a chame apenas quando desejado.
Opções de sincronização
Embora o sync
método tente facilitar a realização de atualizações silenciosas e ativas com pouca configuração, ele aceita um objeto "options" que permite personalizar muitos aspectos do comportamento padrão mencionado acima. As opções disponíveis são idênticas ao CodePushOptions, com exceção da checkFrequency
opção:
deploymentKey (cadeia de caracteres) - Consulte
CodePushOptions
.installMode (codePush.InstallMode) - Consulte .
CodePushOptions
mandatoryInstallMode (codePush.InstallMode) - Consulte .
CodePushOptions
minimumBackgroundDuration (Number) - Consulte .
CodePushOptions
updateDialog (UpdateDialogOptions) - Consulte .
CodePushOptions
rollbackRetryOptions (RollbackRetryOptions) - Consulte
CodePushOptions
.
Exemplo de uso:
// Use a different deployment key for this
// specific call, instead of the one configured
// in the Info.plist file
codePush.sync({ deploymentKey: "KEY" });
// Download the update silently, but install it on
// the next resume, as long as at least 5 minutes
// has passed since the app was put into the background.
codePush.sync({ installMode: codePush.InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 60 * 5 });
// Download the update silently, and install optional updates
// on the next restart, but install mandatory updates on the next resume.
codePush.sync({ mandatoryInstallMode: codePush.InstallMode.ON_NEXT_RESUME });
// Changing the title displayed in the
// confirmation dialog of an "active" update
codePush.sync({ updateDialog: { title: "An update is available!" } });
// Displaying an update prompt which includes the
// description for the CodePush release
codePush.sync({
updateDialog: {
appendReleaseDescription: true,
descriptionPrefix: "\n\nChange log:\n"
},
installMode: codePush.InstallMode.IMMEDIATE
});
// Shortening the retry delay and increasing
// the number of maximum retry attempts
// in comparison to defaults
codePush.sync({
rollbackRetryOptions: {
delayInHours: 8,
maxRetryAttempts: 3
}
});
Além das opções, o sync
método também aceita vários parâmetros de função opcionais, que permitem que você assine o ciclo de vida do "pipeline" para exibir a interface do usuário adicional conforme necessário (como um "modal de verificação de atualização ou um modal de progresso de sync
download):
syncStatusChangedCallback ((syncStatus: Number) => void) - Chamado quando o processo de sincronização passa de um estágio para outro no processo de atualização geral. O método é chamado com um código de status, que representa o estado atual e pode ser qualquer um dos
SyncStatus
valores.downloadProgressCallback ((progress: DownloadProgress) => void) - Chamado periodicamente quando uma atualização disponível está sendo baixada do servidor CodePush. O método é chamado com um
DownloadProgress
objeto, que contém as duas propriedades a seguir:totalBytes (Number) – o número total de bytes que devem ser recebidos para esta atualização (esse é o tamanho do conjunto de arquivos, que foi alterado em relação à versão anterior).
receivedBytes (Number) - O número de bytes baixados até o momento, que podem ser usados para acompanhar o progresso do download.
handleBinaryVersionMismatchCallback ((update: RemotePackage) => void) - Chamado quando há alguma atualização binária disponível. O método é chamado com um
RemotePackage
objeto. Consulte a seção codePush.checkForUpdate para obter mais detalhes.
Exemplo de uso:
// Prompt the user when an update is available
// and then display a "downloading" modal
codePush.sync({ updateDialog: true },
(status) => {
switch (status) {
case codePush.SyncStatus.DOWNLOADING_PACKAGE:
// Show "downloading" modal
break;
case codePush.SyncStatus.INSTALLING_UPDATE:
// Hide "downloading" modal
break;
}
},
({ receivedBytes, totalBytes, }) => {
/* Update download modal progress */
}
);
Esse método retorna um Promise
, que é resolvido para um SyncStatus
código que indica por que a sync
chamada foi bem-sucedida. Esse código pode ser um dos seguintes SyncStatus
valores:
codePush.SyncStatus.UP_TO_DATE (4) – O aplicativo está atualizado com o servidor CodePush.
codePush.SyncStatus.UPDATE_IGNORED (5) - O aplicativo tinha uma atualização opcional, que o usuário final optou por ignorar. (Isso só é aplicável quando o
updateDialog
é usado)codePush.SyncStatus.UPDATE_INSTALLED (6) - A atualização foi instalada e será executada imediatamente após o retorno da
syncStatusChangedCallback
função ou na próxima vez que o aplicativo for retomado/reiniciado, dependendo doInstallMode
especificado emSyncOptions
.codePush.SyncStatus.SYNC_IN_PROGRESS (7) – Há uma operação em andamento
sync
em execução que impede que a chamada atual seja executada.
O sync
método pode ser chamado em qualquer lugar que você queira verificar se há uma atualização. Isso pode estar no componentWillMount
evento do ciclo de vida do seu componente raiz, no manipulador onPress de um <TouchableHighlight>
componente, no retorno de chamada de um cronômetro periódico ou em qualquer outra coisa que faça sentido para suas necessidades. Assim como o checkForUpdate
método, ele faz a solicitação de rede para verificar se há uma atualização em segundo plano, para que não afete a capacidade de resposta do thread da interface do usuário ou do thread JavaScript.
Objetos de pacote
Os checkForUpdate
métodos and getUpdateMetadata
retornam Promise
objetos que, quando resolvidos, fornecem acesso a objetos "package". O pacote representa a atualização do código e quaisquer metadados extras (como descrição, obrigatório?). A API CodePush tem a distinção entre os seguintes tipos de pacotes:
LocalPackage: representa uma atualização baixada que já está em execução ou foi instalada e está aguardando a reinicialização do aplicativo.
RemotePackage: representa uma atualização disponível no servidor CodePush que ainda não foi baixada.
LocalPackage
Contém detalhes sobre uma atualização que foi baixada localmente ou já instalada. Você pode obter uma referência a uma instância desse objeto chamando o método no nível getUpdateMetadata
do módulo ou como o valor da promessa retornada pelo RemotePackage.download
método.
Propriedades
- appVersion: a versão binária do aplicativo da qual esta atualização depende. Esse é o valor que foi especificado por meio do
appStoreVersion
parâmetro ao chamar o comando darelease
CLI. (Cadeia de caracteres) - deploymentKey: a chave de implantação usada originalmente para baixar esta atualização. (Cadeia de caracteres)
- description: a descrição da atualização. Esse é o mesmo valor que você especificou na CLI quando lançou a atualização. (Cadeia de caracteres)
- failedInstall: indica se esta atualização foi instalada anteriormente, mas foi revertida. O
sync
método ignorará automaticamente as atualizações, que falharam anteriormente, portanto, você só precisa se preocupar com essa propriedade se estiver usandocheckForUpdate
. (Booleano) - isFirstRun: indica se esta é a primeira vez que a atualização foi executada após a instalação. Isso é útil para determinar se você deseja mostrar um "O que há de novo?" UI para o usuário final após a instalação de uma atualização. (Booleano)
- isMandatory: indica se a atualização é considerada obrigatória. Esse é o valor especificado na CLI quando a atualização foi lançada. (Booleano)
- isPending: Indica se esta atualização está em um estado "pendente". Quando
true
, isso significa que a atualização foi baixada e instalada, mas a reinicialização do aplicativo necessária para aplicá-la ainda não ocorreu, e é por isso que suas alterações não estão visíveis para o usuário final no momento. (Booleano) - label: o rótulo interno fornecido automaticamente à atualização pelo servidor CodePush, como
v5
. Esse valor identifica exclusivamente a atualização em sua implantação. (Cadeia de caracteres) - packageHash: o valor de hash SHA da atualização. (Cadeia de caracteres)
- packageSize: o tamanho do código contido na atualização, em bytes. (Número)
Métodos
- install(installMode: codePush.InstallMode = codePush.InstallMode.ON_NEXT_RESTART, minimumBackgroundDuration = 0): Promise<void>: instala a atualização salvando-a no local no disco em que o runtime espera encontrar a versão mais recente do aplicativo. O
installMode
parâmetro controla quando as alterações são apresentadas ao usuário final. O valor padrão é aguardar até a próxima reinicialização do aplicativo para exibir as alterações, mas você pode consultar aInstallMode
referência de enumeração para obter uma descrição das opções disponíveis e o que elas fazem. Se oinstallMode
parâmetro estiver definido comoInstallMode.ON_NEXT_RESUME
, ominimumBackgroundDuration
parâmetro permitirá que você controle por quanto tempo o aplicativo deve estar em segundo plano antes de forçar a instalação depois que ela for retomada.
Pacote Remoto
Contém detalhes sobre uma atualização que está disponível para download no servidor CodePush. Você obtém uma referência a uma instância desse objeto chamando o checkForUpdate
método quando uma atualização está disponível. Se você estiver usando a sync
API, não precisa se preocupar com o RemotePackage
, pois ele cuidará do processo de download e instalação automaticamente para você.
Propriedades
O RemotePackage
herda todas as mesmas propriedades que o LocalPackage
, mas inclui uma adicional:
- downloadUrl: a URL em que o pacote está disponível para download. Essa propriedade só é necessária para uso avançado, pois o
download
método manipulará automaticamente a aquisição de atualizações para você. (Cadeia de caracteres)
Métodos
- download(downloadProgressCallback?: Function): Promise<LocalPackage>: Baixa a atualização disponível do serviço CodePush. Se a
downloadProgressCallback
for especificado, ele será chamado periodicamente com umDownloadProgress
objeto ({ totalBytes: Number, receivedBytes: Number }
) que relata o progresso do download até que ele seja concluído. Retorna uma promessa que é resolvida com oLocalPackage
.
Enumerações
A API do CodePush inclui as seguintes enumerações, que podem ser usadas para personalizar a experiência de atualização:
InstallMode
Essa enumeração especifica quando você deseja que uma atualização instalada seja realmente aplicada e pode ser passada para os sync
métodos or LocalPackage.install
. Ele inclui os seguintes valores:
codePush.InstallMode.IMMEDIATE (0) – indica que você deseja instalar a atualização e reiniciar o aplicativo imediatamente. Esse valor é apropriado para cenários de depuração, bem como ao exibir um prompt de atualização para o usuário, pois ele esperaria ver as alterações imediatamente após aceitar a instalação. Além disso, esse modo pode ser usado para impor atualizações obrigatórias, pois remove a latência potencialmente indesejada entre a instalação da atualização e a próxima vez que o usuário final reiniciar ou retomar o aplicativo.
codePush.InstallMode.ON_NEXT_RESTART (1) - Indica que você deseja instalar a atualização, mas não forçar a reinicialização do aplicativo. Quando o aplicativo for reiniciado "naturalmente" (por causa do sistema operacional ou do usuário final que o matou), a atualização será escolhida sem problemas. Esse valor é apropriado ao fazer atualizações silenciosas, pois provavelmente é prejudicial para o usuário final se o aplicativo for reiniciado repentinamente do nada. Eles não perceberiam que uma atualização foi baixada. Esse é o modo padrão usado para os
sync
métodos eLocalPackage.install
.codePush.InstallMode.ON_NEXT_RESUME (2) - Indica que você deseja instalar a atualização, mas não deseja reiniciar o aplicativo até a próxima vez que o usuário final o retomar em segundo plano. Dessa forma, você não interrompe a sessão atual, mas pode obter a atualização na frente deles antes de ter que esperar pela próxima reinicialização natural. Esse valor é apropriado para instalações silenciosas que podem ser aplicadas na retomada de forma não invasiva.
codePush.InstallMode.ON_NEXT_SUSPEND (3) – Indica que você deseja instalar a atualização enquanto ela está em segundo plano, mas somente depois de ficar em segundo plano por
minimumBackgroundDuration
segundos (0 por padrão), para que o contexto do usuário não seja perdido, a menos que a suspensão do aplicativo seja longa o suficiente para não importar.
Frequência de verificação
Essa enumeração especifica quando você deseja que seu aplicativo seja sincronizado com o servidor para atualizações e pode ser passada para o codePushify
decorador. Ele inclui os seguintes valores:
codePush.CheckFrequency.ON_APP_START (0) - Indica que você deseja verificar se há atualizações sempre que o processo do aplicativo for iniciado.
codePush.CheckFrequency.ON_APP_RESUME (1) - Indica que você deseja verificar se há atualizações sempre que o aplicativo for trazido de volta ao primeiro plano após ser "colocado em segundo plano" (o usuário pressionou o botão home, o aplicativo inicia um processo de pagamento separado e assim por diante).
codePush.CheckFrequency.MANUAL (2) - Desabilite a verificação automática de atualizações, mas verifique apenas quando
codePush.sync()
for chamado no código do aplicativo.
Status de sincronização
Essa enumeração syncStatusChangedCallback
é fornecida à função que pode ser passada para o sync
método, para se conectar ao processo de atualização geral. Ele inclui os seguintes valores:
- codePush.SyncStatus.CHECKING_FOR_UPDATE (0) - O servidor CodePush está sendo consultado para uma atualização.
- codePush.SyncStatus.AWAITING_USER_ACTION (1) - Uma atualização está disponível e uma caixa de diálogo de confirmação foi mostrada ao usuário final. (Isso só é aplicável quando o
updateDialog
é usado) - codePush.SyncStatus.DOWNLOADING_PACKAGE (2) - Uma atualização disponível está sendo baixada do servidor CodePush.
- codePush.SyncStatus.INSTALLING_UPDATE (3) - Uma atualização disponível foi baixada e está prestes a ser instalada.
- codePush.SyncStatus.UP_TO_DATE (4) – O aplicativo está totalmente atualizado com a implantação configurada.
- codePush.SyncStatus.UPDATE_IGNORED (5) - O aplicativo tem uma atualização opcional, que o usuário final optou por ignorar. (Isso só é aplicável quando o
updateDialog
é usado) - codePush.SyncStatus.UPDATE_INSTALLED (6) - Uma atualização disponível foi instalada e será executada imediatamente após o retorno da
syncStatusChangedCallback
função ou na próxima vez que o aplicativo for retomado/reiniciado, dependendo doInstallMode
especificado emSyncOptions
. - codePush.SyncStatus.SYNC_IN_PROGRESS (7) – Há uma operação em andamento
sync
impedindo que a chamada atual seja executada. - codePush.SyncStatus.UNKNOWN_ERROR (-1) - A operação de sincronização encontrou um erro desconhecido.
UpdateState
Essa enumeração especifica o estado em que uma atualização está atualmente e pode ser especificada ao chamar o getUpdateMetadata
método. Ele inclui os seguintes valores:
codePush.UpdateState.RUNNING (0) – indica que uma atualização representa a versão do aplicativo que está em execução no momento. Isso pode ser útil para identificar atributos sobre o aplicativo, para cenários como exibir a descrição da versão em uma caixa de diálogo "o que há de novo?" ou relatar a versão mais recente para um serviço de análise ou relatório de falhas.
codePush.UpdateState.PENDING (1) – Indica que uma atualização foi instalada, mas o aplicativo ainda não foi reiniciado para aplicá-la. Isso pode ser útil para determinar se há uma atualização pendente, que talvez você queira forçar uma reinicialização programática (via
restartApp
) para aplicar.codePush.UpdateState.LATEST (2) - Indica que uma atualização representa a versão mais recente disponível e pode estar em execução ou pendente.
Referência da API Objective-C (iOS)
A API Objective-C é disponibilizada importando o cabeçalho para o CodePush.h
arquivo AppDelegate.m e consiste em uma única classe pública chamada CodePush
.
CodePush
Contém métodos estáticos para recuperar o NSURL
que representa o arquivo de pacote JavaScript mais recente e pode ser passado para o RCTRootView
método do initWithBundleURL
ao inicializar seu aplicativo no arquivo AppDelegate.m .
Os CodePush
métodos da classe podem ser considerados como resolvedores compostos, que sempre carregam o pacote apropriado, para acomodar os seguintes cenários:
Quando um usuário final instala seu aplicativo da loja (como
1.0.0
), ele recebe o pacote JS contido no binário. Esse é o comportamento que você obteria sem usar o CodePush, mas garantimos que ele não interrompa :)Assim que você começar a lançar atualizações do CodePush, os usuários finais receberão o pacote JS que representa a versão mais recente da implantação configurada. Esse é o comportamento que permite iterar além do que você enviou para a loja.
Assim que você lançar uma atualização para a loja de aplicativos (como
1.1.0
) e seus usuários finais a atualizarem, eles receberão novamente o pacote JS contido no binário. Esse comportamento garante que as atualizações do CodePush direcionadas a uma versão binária anterior não sejam usadas (já que não sabemos se elas funcionariam) e seus usuários finais sempre terão uma versão funcional do seu aplicativo.Repita #2 e #3 à medida que os lançamentos do CodePush e os lançamentos da loja de aplicativos continuam no infinito (e além?)
Devido a esse comportamento, você pode implantar atualizações com segurança nas lojas de aplicativos e no CodePush, conforme necessário, e ter certeza de que os usuários finais sempre obterão a versão mais recente.
Métodos
(NSURL *)bundleURL - Retorna o pacote
NSURL
JS mais recente, conforme descrito acima. Esse método pressupõe que o nome do pacote JS contido no binário do aplicativo sejamain.jsbundle
.(NSURL *)bundleURLForResource:(NSString *)resourceName – equivalente ao
bundleURL
método, mas também permite personalizar o nome do pacote JS pesquisado no binário do aplicativo. Isso é útil se você não estiver nomeando esse arquivomain
(que é a convenção padrão). Esse método pressupõe que a extensão do pacote JS seja*.jsbundle
.(NSURL *)bundleURLForResource:(NSString *)resourceName withExtension:(NSString *)resourceExtension: equivalente ao
bundleURLForResource:
método, mas também permite personalizar a extensão usada pelo pacote JS pesquisado no binário do aplicativo. Isso é útil se você não estiver nomeando esse arquivo*.jsbundle
(que é a convenção padrão).(void)overrideAppVersion:(NSString *)appVersionOverride - Define a versão da interface binária do aplicativo, que, de outra forma, seria padrão para a versão da App Store especificada como
CFBundleShortVersionString
no Info.plist. Isso deve ser chamado uma única vez, antes que a URL do pacote seja carregada.(void)setDeploymentKey:(NSString *)deploymentKey – define a chave de implantação que o aplicativo deve usar ao consultar atualizações. Essa é uma alternativa dinâmica para definir a chave de implantação em seu Info.plist ou especificar uma chave de implantação em JS ao chamar
checkForUpdate
ousync
.
Referência da API Java (Android)
API para React Native versão 0.60 e superior
Como autolinking
o usa react-native.config.js
para vincular plug-ins, os construtores são especificados nesse arquivo. Mas você pode substituir variáveis personalizadas para gerenciar o plug-in CodePush colocando esses valores em recursos de cadeia de caracteres.
Chave pública - usada para verificação de pacote no recurso de assinatura de código. Consulte a seção Assinatura de código para obter mais detalhes sobre o recurso de assinatura de código. Para definir a chave pública, você deve adicionar o conteúdo da chave pública a
strings.xml
com nameCodePushPublicKey
. O CodePush obtém automaticamente essa propriedade e habilita o recurso de Assinatura de Código. Por exemplo:<string moduleConfig="true" name="CodePushPublicKey">your-public-key</string>
URL do servidor - usado para especificar a URL do servidor CodePush. O valor padrão: "https://codepush.appcenter.ms/" é substituído adicionando seu caminho a
strings.xml
com nameCodePushServerUrl
. O CodePush obtém automaticamente essa propriedade e usará esse caminho para enviar solicitações. Por exemplo:<string moduleConfig="true" name="CodePushServerUrl">https://yourcodepush.server.com</string>
API para React Native inferior a 0,60
A API Java é disponibilizada importando a classe para o com.microsoft.codepush.react.CodePush
arquivo MainActivity.java e consiste em uma única classe pública chamada CodePush
.
CodePush
Constrói o tempo de execução do cliente CodePush e representa a ReactPackage
instância que você adiciona à lista de pacotes do aplicativo.
Construtores
CodePush(String deploymentKey, Activity mainActivity) – cria uma nova instância do runtime do CodePush, que será usada para consultar o serviço em busca de atualizações por meio da chave de implantação fornecida. O
mainActivity
parâmetro deve sempre ser definido comothis
ao configurar sua lista de pacotes React dentro daMainActivity
classe. Esse construtor coloca o runtime do CodePush no "modo de versão", portanto, se você quiser habilitar o comportamento de depuração, use o construtor a seguir.CodePush(String deploymentKey, Activity mainActivity, bool isDebugMode) – equivalente ao construtor anterior, mas permite que você especifique se deseja que o runtime do CodePush esteja no modo de depuração ou não. Ao usar esse construtor, o
isDebugMode
parâmetro sempre deve ser definido comoBuildConfig.DEBUG
para permanecer sincronizado com seu tipo de build. Ao colocar o CodePush no modo de depuração, os seguintes comportamentos são habilitados:As atualizações antigas do CodePush não são excluídas do armazenamento sempre que um novo binário é implantado no emulador/dispositivo. Esse comportamento permite que você implante novos binários, sem aumentar a versão durante o desenvolvimento e sem obter continuamente a mesma atualização sempre que seu aplicativo chama
sync
.O cache local que o runtime do React Native mantém no modo de depuração é excluído sempre que uma atualização do CodePush é instalada. Isso garante que, quando o aplicativo for reiniciado após a aplicação de uma atualização, seja possível ver as alterações esperadas. Assim que este PR for mesclado, não precisaremos mais fazer isso.
CodePush(String deploymentKey, Context context, boolean isDebugMode, Integer publicKeyResourceDescriptor) – Equivalente ao construtor anterior, mas permite que você especifique o descritor de recurso de chave pública necessário para ler o conteúdo da chave pública. Consulte a seção Assinatura de código para obter mais detalhes sobre o recurso de assinatura de código.
CodePush(String deploymentKey, contexto de contexto, booleano isDebugMode, String serverUrl) – o construtor permite que você especifique a URL do servidor CodePush. O valor padrão:
"https://codepush.appcenter.ms/"
é substituído pelo valor especificado emserverUrl
.
Métodos estáticos
getBundleUrl() - Retorna o caminho para a versão mais recente do arquivo de pacote JS do seu aplicativo, supondo que o nome do recurso seja
index.android.bundle
. Se o aplicativo estiver usando um nome de pacote diferente, use a versão sobrecarregada desse método, que permite especificá-lo. Esse método tem o mesmo comportamento de resolução que o equivalente Objective-C descrito acima.getBundleUrl(String bundleName) - Retorna o caminho para a versão mais recente do arquivo de pacote JS do seu aplicativo, usando o nome do recurso especificado (como
index.android.bundle
). Esse método tem o mesmo comportamento de resolução que o equivalente Objective-C descrito acima.overrideAppVersion(String appVersionOverride) - Define a versão da interface binária do aplicativo, que de outra forma seria padronizada para a
versionName
versão da Play Store especificada como no build.gradle. Isso deve ser chamado uma única vez, antes que a instância do CodePush seja construída.