Todos os produtos
Search
Central de documentação

Mobile Platform as a Service:Gerenciar pacotes offline

Última atualização: Jun 28, 2026

Os pacotes offline permitem agrupar páginas H5 para carregamento local, evitando o impacto no desempenho causado por condições de rede ruins. Entregue atualizações de pacotes aos clientes pela plataforma de publicação.

Gerencie pacotes offline das seguintes maneiras:

Pré-requisitos

Certifique-se de integrar o NebulamPaaSBiz.framework ao projeto do cliente após adicionar o SDK.

Gerar um pacote offline

Para gerar um pacote offline .amr, crie um pacote frontend .zip e gere o pacote .amr online. Para mais informações, consulte Gerar um pacote offline.

Carregar um pacote offline

Carregue um pacote offline de duas formas, dependendo se ele está pré-definido no cliente:

Pré-definir um pacote offline

Páginas como a inicial ou a de login devem carregar rapidamente, independentemente das condições de rede. Agrupe esses recursos em um pacote offline e pré-defina-o no projeto para garantir o carregamento mesmo com o aplicativo offline.

Execute as etapas a seguir:

  1. Crie um bundle separado, como DemoCustomPresetApps.bundle. Adicione o pacote offline .amr e o arquivo h5_json.json baixado da plataforma de publicação a esse bundle.111

    Nota

    Atualmente, a plataforma de publicação permite baixar o arquivo de configuração h5_json.json apenas para um único pacote offline. Se você pré-definir vários pacotes offline, mescle-os manualmente no array de dados do arquivo JSON.

  2. Ao inicializar o contêiner, chame o método initNebulaWithCustomPresetApplistPath e defina o caminho do pacote offline pré-definido para o bundle criado na etapa anterior.

     - (void)application:(UIApplication *)application beforeDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     {
         // Initialize rpc
         [MPRpcInterface initRpc];
    
         // Initialize the container
         // [MPNebulaAdapterInterface initNebula];
    
         // Set the custom JSAPI path and preset offline package information
         NSString *presetApplistPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle/h5_json.json"] ofType:nil];
         NSString *appPackagePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPresetApps.bundle"] ofType:nil];
         NSString *pluginsJsapisPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"DemoCustomPlugins.bundle/Poseidon-UserDefine-Extra-Config.plist"] ofType:nil];
         [MPNebulaAdapterInterface initNebulaWithCustomPresetApplistPath:presetApplistPath customPresetAppPackagePath:appPackagePath customPluginsJsapisPath:pluginsJsapisPath];
     }
  3. Assim como no carregamento de um pacote offline não pré-definido, chame o método fornecido pelo contêiner Nebula para carregar o pacote offline ao acessar a página correspondente.

     - (void)openPresetPackage {
         [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}];
     }

Carregar um pacote offline remoto

Publique dinamicamente um pacote offline pela plataforma de publicação e carregue-o diretamente no cliente, em vez de pré-defini-lo. Isso evita que o pacote do cliente fique excessivamente grande.

Execute as etapas a seguir:

  1. Após iniciar o aplicativo, pré-carregue as informações do pacote e baixe o pacote offline. Essa ação evita a exibição de uma tela em branco ao abrir o pacote.

    • Código de exemplo

        [[MPNebulaAdapterInterface shareInstance] requestAllNebulaApps:^(NSDictionary *data, NSError *error) {
            NSLog(@"[mpaas] nebula rpc data :%@", data);
        }];
    • Métodos da interface

        @interface MPNebulaAdapterInterface : NSObject
      
        /**
         *  Request for a single application
         *
         *  @param params   The list of requests in {appid:version} format. You can pass multiple app IDs. The version number can have up to four segments, such as 1.0.0.1. If you do not specify a version, pass an empty value to use the latest version. Fuzzy matching is supported. For example, '*' matches the latest version, and '1.*' matches the latest version that starts with 1.
         *  @param finish   Completion callback
         */
        - (void)requestNebulaAppsWithParams:(NSDictionary *)params finish:(NAMRequestFinish)finish;
      
        @end
        @interface MPNebulaAdapterInterface : NSObject
      
        /**
         *  Full update of local offline package information
         *
         *  @param finish Completion callback
         *
         */
        - (void)requestAllNebulaApps:(NAMRequestFinish)finish;
      
        /**
         *  Request for a single application
         *
         *  @param params   The list of requests in {appid:version} format. You can pass multiple app IDs. The version number can have up to four segments, such as 1.0.0.1. If you do not specify a version, pass an empty value to use the latest version. Fuzzy matching is supported. For example, '*' matches the latest version, and '1.*' matches the latest version that starts with 1.
         *  @param finish   Completion callback
         */
        - (void)requestNebulaAppsWithParams:(NSDictionary *)params finish:(NAMRequestFinish)finish;
      
        @end
  2. Após configurar o cliente, entregue um pacote offline pela plataforma de publicação. Para mais informações, consulte Real-time Release > Offline Package Management > Publish an offline package.

  3. Ao acessar a página correspondente, chame o método fornecido pelo contêiner Nebula para carregar o pacote offline. A página usará então o pacote offline entregue pela plataforma de publicação.

    • Código de exemplo

        - (void)openPresetPackage {
        [[MPNebulaAdapterInterface shareInstance] startH5ViewControllerWithNebulaApp:@{@"appId":@"20180910"}];
        }
    • Método da interface

        @interface MPNebulaAdapterInterface : NSObject
      
        /**
         *  Creates an H5 container based on the provided offline package information and automatically pushes to open it.
         *
         *  @param params The startup parameters for the H5 container. The appId parameter is required. For other optional parameters, see the document at https://tech.antfin.com/docs/2/85001.
         *
         */
        - (void)startH5ViewControllerWithNebulaApp:(NSDictionary *)params;
      
        @end

Usar um pacote de recursos global

Quando vários aplicativos H5 compartilham os mesmos recursos, como código do framework ReactJS, coloque esses recursos em um pacote de recursos global para reduzir o tamanho de cada aplicativo. Configure o pacote offline global no método afterDidFinishLaunchingWithOptions, conforme o código de exemplo a seguir. Neste exemplo, 77777777 é o ID do aplicativo do pacote de recursos global.

A propriedade nebulaCommonResourceAppList especifica qual pacote offline o contêiner H5 usa como pacote de recursos global. Sem essa configuração, o pacote não entrará em vigor, mesmo que seja integrado.

- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [MPNebulaAdapterInterface shareInstance].nebulaCommonResourceAppList = @[@"77777777"];// Set the global resource package
}

Para melhorar a velocidade de carregamento da página, pré-defina o pacote de recursos global. Ainda é possível entregar atualizações posteriormente pelo backend do aplicativo H5.

Atualizar dinamicamente um pacote offline

O mPaaS oferece recursos de atualização dinâmica. Entregue uma nova versão de um pacote offline pela plataforma de publicação para atualizar a página correspondente no cliente. Para mais informações, consulte Real-time Release > Offline Package Management > Publish an offline package.

Links relacionados