Todos os produtos
Search
Central de documentação

SuperApp:Operações de miniapp

Última atualização: Jun 29, 2026

Use as APIs do SDK de contêiner de miniapp para listar, pesquisar, abrir, visualizar e gerenciar miniapps no seu aplicativo nativo.

Obter lista de miniapps

Recupera uma lista de miniapps disponíveis.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];

if (miniAppService) {
   // The default value of the anchor parameter is 0.
  [miniAppService getMiniAppList:anchor completionBlock:^(int resultCode, NSArray * _Nonnull miniApps, NSString *anchor) {
  	 // A resultCode of 200 indicates success.
     // Returns up to 10 miniapps per request. Use the anchor parameter to retrieve more.
  }];
}

Pesquisar miniapps

Pesquisa miniapps por palavra-chave.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];

if (miniAppService) {
   // keyword is the search term, and the default value of anchor is 0.
  [miniAppService queryMiniApps:keyword anchor:anchor completionBlock:^(int resultCode, NSArray * _Nonnull miniApps, NSString *anchor) {
 		// A resultCode of 200 indicates a successful search.	
    // Returns up to 10 results per request. Use the anchor parameter to retrieve more.
  }];
}

Abrir um miniapp

Abre um miniapp pelo ID. O método é o mesmo para miniapps WindVane e uni-app. Como essa operação pode demorar, adicione feedback de UI no callback de conclusão.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];

if (miniAppService) {
   EMASMiniAppOpenConfiguration *config = [[EMASMiniAppOpenConfiguration alloc] init];
   [miniAppService openMiniApp:appId openConfiguration:config completionBlock:^(int resultCode, NSDictionary * _Nonnull resultDict) {
            
    }];
}

Abrir uma página específica do miniapp

Defina path para abrir uma página específica e extraData para passar dados a essa página.

Nota
  • Em miniapps uni-app, path é a URL da página e extraData contém os argumentos de inicialização, recuperáveis via plus.runtime.arguments.

  • Para miniapps WindVane, acesse as páginas via https://{appId}.app.mini.windvane.suite.emas.alibaba.com/index.html#/{path}?key=value&key2=123. Seu miniapp deve usar roteamento hash para navegação entre páginas.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    
if (miniAppService) {
    EMASMiniAppOpenConfiguration *config = [[EMASMiniAppOpenConfiguration alloc] init];
    if (path.length > 0) {
        // The deeplink path.
        config.path = path;
    }
    if (params){
        // Extended parameters.
        config.extraData = params;
    }
    
    [miniAppService openMiniApp:self.appId openConfiguration:config completionBlock:^(int resultCode, NSDictionary * _Nonnull resultDict) {
        NSLog(@"resultCode = %d, resultDict = %@",resultCode,resultDict);
        if (resultCode == 200) {
            // On success, the container automatically redirects the user to the miniapp.
        }
    }];
}

Visualizar um miniapp

Visualiza um miniapp usando seu ID e publishId, geralmente obtidos ao escanear um QR code na Open Platform.

 // miniAppId is the miniapp ID obtained from the Open Platform; P79127424345890**** is an example of publishId.
- (void)previewMiniApp:(NSString *)miniAppId publishId:(NSString *)publishId miniAppType:(EMASMiniAppType)miniAppType {
    id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    if (miniAppService) {
        EMASMiniAppOpenConfiguration *config = [[EMASMiniAppOpenConfiguration alloc] init];
        config.miniAppType = miniAppType;
        [miniAppService previewMiniApp:miniAppId publishId:publishId openConfiguration:config completionBlock:^(int resultCode, NSDictionary * _Nonnull resultDict) {
            
        }];
    }
}

Obter lista de categorias

Recupera todas as categorias de miniapps.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    if (miniAppService) {
        [miniAppService queryMiniAppCategories:^(int resultCode, NSArray *resultArray) {
            if (resultCode == 200) {
               // A resultCode of 200 indicates success and returns the list of miniapp categories.
            } else {
              // Failed to get the list.
               }
        }];
    }

Obter miniapps por categoria

Recupera os miniapps de uma categoria especificada.

id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
   if (miniAppService) {
        [miniAppService queryMiniAppsByCategory:categoryId completionBlock:^(int resultCode, NSArray * _Nonnull resultArray) {
            if (resultCode == 200) {
                // A resultCode of 200 indicates success and returns the list of miniapps.
            } else {
               // Failed to get the list.
            }
        }];
    }

Pré-carregar pacotes de miniapp

Pré-carrega um pacote de miniapp.

Método:

  • (void)preloadMiniApp:(NSString )appId openConfiguration:(EMASMiniAppOpenConfiguration )openConfiguration completionBlock:(void(^)(int resultCode, NSDictionary *resultDict))completionBlock

Parâmetros:

Parâmetro

Tipo

Descrição

appId

String

O ID do miniapp.

openConfiguration

EMASMiniAppOpenConfiguration

Configuração de abertura do miniapp.

completionBlock

Callback invocado após a conclusão do pré-carregamento.

Exemplo de uso

#import <EMASServiceManager/EMASServiceManager.h>
#import <EMASMiniAppApi/EMASMiniAppService.h>

- (void)preloadMiniApp:(NSString *)miniAppId {
    id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    if (miniAppService) {
        EMASMiniAppOpenConfiguration *config = [[EMASMiniAppOpenConfiguration alloc] init];
        // To preload a uni-app miniapp, specify the type as `EMASMiniAppTypeUniApp`.
//        config.miniAppType = EMASMiniAppTypeUniApp;
        [miniAppService preloadMiniApp:miniAppId openConfiguration:config completionBlock:^(int resultCode, NSDictionary * _Nonnull resultDict) {
            NSLog(@"preloadMiniApp:resultCode:%d\nresultDict:%@", resultCode, resultDict);
        }];
    }
}

Obter informações de cache do miniapp

Método:

  • (NSArray *)getMiniAppPkgInfoList;

Valor de retorno: um array de dicionários, cada um contendo metadados de cache de um miniapp.

Chave

Valor

Descrição

mini_app_id

String

O ID do miniapp.

mini_app_name

String

O nome do miniapp.

cache_size

String

O tamanho do pacote de miniapp em cache, em bytes.

cache_version

String

A versão do pacote de miniapp em cache.

create_time

String

A data de criação do pacote de miniapp em cache.

last_access_time

String

A data do último acesso ao pacote de miniapp em cache.

preload_pkg_size

String

O tamanho do pacote pré-carregado, em bytes.

preload_pkg_version

String

A versão do pacote pré-carregado.

Exemplo de uso:

#import <EMASServiceManager/EMASServiceManager.h>
#import <EMASMiniAppApi/EMASMiniAppService.h>

- (void)getMiniAppCacheInfo {
    id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    if (miniAppService) {
        NSArray *caches = [miniAppService getMiniAppPkgInfoList];
        NSLog(@"getMiniAppInfoList:%@", caches);
        
    }
}

Exemplo de valor de retorno:

[
    {
        mini_app_id=1512008766390152499200, 
        mini_app_name=AI Search, 
        cache_size=4096, 
        cache_version=0.0.26, 
        create_time=2026-01-21 16:38:54, 
        last_access_time=2026-01-21 16:38:54,
        preload_pkg_size=4096,
        preload_pkg_version=0.0.26
    },
    ...
]

Exclua caches de miniapp

Método:

  • (BOOL)removeMiniAppPackages:(NSArray<NSString >)miniAppIds

Parâmetros:

Parâmetro

Tipo

Descrição

miniAppIds

NSArray<NSString *>

IDs dos miniapps cujos caches devem ser excluídos.

Valor de retorno:

YES: todos os caches especificados foram excluídos.

NO: falha ao excluir um ou mais caches.

Exemplo de uso:

#import <EMASServiceManager/EMASServiceManager.h>
#import <EMASMiniAppApi/EMASMiniAppService.h>

- (void)removeMiniAppPkgs:(NSArray<NSString *>*)miniAppIds {
    if (miniAppIds && miniAppIds.count > 0) {
        id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
        if (miniAppService) {
            BOOL isSuccess = [miniAppService removeMiniAppPackages:miniAppIds];
        }
    }
    
}

Estatísticas de download de miniapp

Definição da interface do observer:

@protocol SAIDownloadStatsObserver <NSObject>

- (void)onMiniAppDownloadSuccess:(NSDictionary *)params;
- (void)onMiniAppDownloadFailed:(NSDictionary *)params;

@end

Parâmetros do callback:

Chave

Valor

Descrição

mini_app_id

String

O ID do miniapp.

mini_app_version

String

A versão do miniapp.

Exemplo de registro:

#import <EMASMiniAppService/SAIDownloadStatsObserver.h>
#import <EMASServiceManager/EMASServiceManager.h>
#import <EMASMiniAppApi/EMASMiniAppService.h>

- (void)registerObserver {
    id<EMASMiniAppService> miniAppService = [[EMASServiceManager sharedInstance] serviceForProtocol:@"EMASMiniAppService"];
    if (miniAppService) {
        [miniAppService registerServiceObserver:self];
    }
}

- (void)onMiniAppDownloadFailed:(NSDictionary *)params {
    NSLog(@"------onMiniAppDownloadFailed:%@", params);
}

- (void)onMiniAppDownloadSuccess:(NSDictionary *)params {
    NSLog(@"------onMiniAppDownloadSuccess:%@", params);
}

Defina o idioma do aplicativo para miniapps

Define o idioma dos miniapps. Chame esta API sempre que o idioma mudar no seu aplicativo nativo. Ela atualiza o campo appLanguage retornado pelo método JSAPI (WindVane) WVSystem.getSystemInfo.

Nota: esta API só entra em vigor após a inicialização do contêiner de miniapp.

[EMASMiniAppPortal.share setAppLanguage:@"XXX"];