Configure uma lista de permissões de atualização, verifique novas versões e solicite a atualização aos usuários após integrar o SDK.
Definir uma lista de permissões
Defina o ID de usuário da lista de permissões:
MPLogger.setUserId("your_whitelist_id");
Verificar novas versões
-
Verifique se há uma nova versão e exiba uma notificação pop-up:
NotaEste método exibe um pop-up de atualização rápida sem lógica de atualização forçada. Para forçar a atualização, implemente uma atualização personalizada.
MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.fastCheckNewVersion(activity, drawable); -
Verifique se há uma nova versão e retorne apenas o resultado:
MPUpgrade mMPUpgrade = new MPUpgrade(); // Synchronous method. Call it in a subthread. int result = mMPUpgrade.fastCheckHasNewVersion(); if (result == UpgradeConstants.HAS_NEW_VERSION) { // A new version is available. } else if (result == UpgradeConstants.HAS_NO_NEW_VERSION) { // No new version is available. } else if (result == UpgradeConstants.HAS_SOME_ERROR) { // An error occurred. }
Obter informações detalhadas sobre a atualização
Chame fastGetClientUpgradeRes para obter detalhes da atualização:
MPUpgrade mMPUpgrade = new MPUpgrade();
// Synchronous method. Call it in a subthread.
ClientUpgradeRes clientUpgradeRes = mMPUpgrade.fastGetClientUpgradeRes();
A resposta inclui o número da nova versão, a URL de download e outros parâmetros:
downloadURL: URL de download.guideMemo: informações da atualização.newestVersion: número da versão mais recente.-
resultStatus: modo de atualização.202: lembrete único.
204: múltiplos lembretes.
203/206: atualização forçada.
fileSize: tamanho do arquivo de download.
Outras verificações personalizadas
Para mais opções de personalização, consulte os exemplos abaixo:
-
Implemente a interface
MPaaSCheckCallBackpara tratar solicitações do SDK de atualização, como exibir uma caixa de diálogo:MPUpgrade mMPUpgrade = new MPUpgrade(); mMPUpgrade.setUpgradeCallback(new MPaaSCheckVersionService.MPaaSCheckCallBack() { ......... }); -
Use o método
MPUpgrade.checkNewVersionpara verificar informações de atualização.A classe
MPUpgradeencapsula a chamada aMPaaSCheckVersionService. Também é possível criar uma implementação personalizada. Para mais informações sobreMPaaSCheckVersionServiceeMPaaSCheckCallBack, consulte Referência da API.
Personalizar a pasta de download dos pacotes de instalação (compatível com as versões 10.1.60 e posteriores)
Configure a pasta de download:
File dir = getApplicationContext().getExternalFilesDir("custom_folder");
MPUpgrade mpUpgrade = new MPUpgrade();
mpUpgrade.setDownloadPath(dir.getAbsolutePath());
Adicione também a seguinte configuração ao arquivo file_path.xml:
// external-files-path corresponds to the folder of getExternalFilesDir.
// Use the element that corresponds to your custom folder. If you are unsure which to choose, search for "Adapt to File Provider".
<external-files-path
name="download"
path="custom_folder" />
Personalizar notificações
MPUpgrade mMPUpgrade = new MPUpgrade();
mMPUpgrade.setShowDefaultNotification(false);// Set to true to show the default download notification, or false to use a custom download notification.
mMPUpgrade.update(clientUpgradeRes, new UpgradeDownloadCallback() {
@Override
public void onLoadNotificationConfig(UpgradeDownloadRequest upgradeDownloadRequest) {
}
@Override
public void onPrepare(UpgradeDownloadRequest upgradeDownloadRequest) {
// Create a custom download notification.
}
@Override
public void onProgress(UpgradeDownloadRequest upgradeDownloadRequest, int i) {
// Update the progress of the notification progress bar chart.
}
@Override
public void onCancel(UpgradeDownloadRequest upgradeDownloadRequest) {
}
@Override
public void onFinish(UpgradeDownloadRequest upgradeDownloadRequest, String s) {
}
@Override
public void onFailed(UpgradeDownloadRequest upgradeDownloadRequest, int i, String s) {
}
});
Lidar com falhas na análise de pacotes após atualização forçada
Em algumas ROMs, pode ocorrer falha na análise do pacote após uma atualização forçada, pois certas ROMs acessam o processo do aplicativo durante a instalação. A atualização forçada encerra esse processo e causa a falha. Esse comportamento personalizado da ROM não está em conformidade com o padrão do Android. Para resolver o problema, defina UpgradeForceExitCallback e configure needForceExit para retornar false.
-
Implemente o callback.
public class UpgradeForceExitCallbackImpl implements UpgradeForceExitCallback { @Override public boolean needForceExit(boolean forceExitApp, MicroApplicationContext context) { // If you return false, the process is not forcibly killed, which prevents package parsing failures. If you return true, you must handle the process exit, and the doForceExit method below is called. return false; } @Override public void doForceExit(boolean forceExitApp, MicroApplicationContext context) { // To shut down the process, needForceExit must return true. Then, shut down the process within this method. } } -
Defina o callback.
MPUpgrade mpUpgrade = new MPUpgrade(); mpUpgrade.setForceExitCallback(new UpgradeForceExitCallbackImpl());ImportanteUse a mesma instância de
MPUpgradepara definir o callback e solicitar a atualização.Esse callback evita falhas na análise de pacotes, mas o componente de atualização deixa de encerrar automaticamente o processo. Se o usuário retornar ao aplicativo em vez de tocar em Install, exiba uma sobreposição pop-up não cancelável para impedir que a atualização forçada seja ignorada.