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.
Em miniapps uni-app,
pathé a URL da página eextraDatacontém os argumentos de inicialização, recuperáveis viaplus.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 |
|
|
String |
O ID do miniapp. |
|
|
String |
O nome do miniapp. |
|
|
String |
O tamanho do pacote de miniapp em cache, em bytes. |
|
|
String |
A versão do pacote de miniapp em cache. |
|
|
String |
A data de criação do pacote de miniapp em cache. |
|
|
String |
A data do último acesso ao pacote de miniapp em cache. |
|
|
String |
O tamanho do pacote pré-carregado, em bytes. |
|
|
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 |
|
|
String |
O ID do miniapp. |
|
|
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"];