Todos os produtos
Search
Central de documentação

SuperApp:Integrar um contêiner de miniapp a um aplicativo nativo

Última atualização: Jun 29, 2026

O Enterprise Mobile Application Studio (EMAS) oferece os contêineres de miniapp WindVane e uni-app para incorporação em aplicativos iOS nativos. Este tópico descreve como adicionar as dependências necessárias e inicializar o contêiner para que seu aplicativo carregue e execute miniapps.

Pré-requisitos

Antes de começar, verifique se você tem:

  • A AccessKey, a SecretKey e o App Code de um aplicativo nativo. Para mais informações, consulte o tópico Configure an app no capítulo Application Open Platform (for platform operators) do User Guide.

  • O nome de domínio da Application Open Platform. O nome de domínio do ambiente de demonstração é poc.superapp-intl.com.

Etapa 1: Adicionar dependências

  1. Adicione os repositórios do CocoaPods.

    pod repo add superapp-intl-emas-ios-emas-specs https://gitlab-console.superapp-intl.com/emas-ios/emas-specs.git 
    pod repo add superapp-intl-emas-ios-emas-specs-thirdpart https://gitlab-console.superapp-intl.com/emas-ios/emas-specs-thirdpart.git
  2. No arquivo Podfile, no diretório raiz do projeto, configure as fontes do CocoaPods.

    Os SDKs dos contêineres de miniapp são distribuídos por um repositório privado do CocoaPods. Entre em contato com o engenheiro de O&M para obter as credenciais de conta necessárias à autenticação na fonte privada.

    source 'https://gitlab-console.superapp-intl.com/emas-ios/emas-specs.git'
    source 'https://gitlab-console.superapp-intl.com/emas-ios/emas-specs-thirdpart.git'
  3. No Podfile, adicione as dependências do contêiner de miniapp.

    use_frameworks!
    
    # Required for both WindVane and uni-app containers
    pod 'EMASServiceManager'
    pod 'EMASMiniAppAdapter'
    
    # Required only for the WindVane miniapp container
    pod 'EMASWindVaneMiniApp'
    
    # Required only for the uni-app miniapp container
    pod 'EMASUniappMiniApp'

    Inclua EMASWindVaneMiniApp, EMASUniappMiniApp ou ambos, conforme os tipos de contêiner integrados ao aplicativo. As flags useWindVane e useUniApp na Etapa 2 devem corresponder aos pods incluídos aqui.

Etapa 2: Inicializar o contêiner

Chame o código de inicialização em application(_:didFinishLaunchingWithOptions:) para garantir que o contêiner de miniapp esteja pronto antes da execução de qualquer outra funcionalidade do aplicativo.

// Initialize the miniapp container
EMASMiniAppInitConfig *miniAppInitConfig = [EMASMiniAppInitConfig new];
miniAppInitConfig.useUniApp = YES;   // Set to YES if you added EMASUniappMiniApp
miniAppInitConfig.useWindVane = YES; // Set to YES if you added EMASWindVaneMiniApp
miniAppInitConfig.accessKey = @"ZXZ8****";                          // AccessKey from Application Open Platform
miniAppInitConfig.secretKey = @"3PNJxKtf7/eqUohlG3bI****";         // SecretKey from Application Open Platform
miniAppInitConfig.host = @"emas.example.com";                       // Domain name of Application Open Platform. The demo environment domain is emas-publish-intl.emas-poc.com.
miniAppInitConfig.appCode = @"161160615860445224****";              // App Code from Application Open Platform

EMASMiniAppServiceImpl *miniAppService = [EMASMiniAppServiceImpl new];
[miniAppService initialize:miniAppInitConfig];
[[EMASServiceManager sharedInstance] registerServiceProtocol:@"EMASMiniAppService" IMPClass:@"EMASMiniAppServiceImpl" target:miniAppService];

// Optional: register additional services for WindVane features.
// Uncomment the lines for any features you want to enable.
//[[EMASServiceManager sharedInstance] registerServiceProtocol:@"EMASMiniAppFavoriteService" IMPClass:@"EMASMiniAppFavoriteServiceImpl" target:[EMASMiniAppFavoriteService new]];   // Favorites
//[[EMASServiceManager sharedInstance] registerServiceProtocol:@"EMASUserInfoService" IMPClass:@"EMASUserInfoServiceImpl" target:[EMASUserInfoServiceImpl new]];                   // Associated users
//[[EMASServiceManager sharedInstance] registerServiceProtocol:@"EMASMiniAppURLService" IMPClass:@"EMASMiniAppURLServiceImpl" target:[EMASMiniAppURLServiceImpl new]];             // URL interception

Solução de problemas

  1. Compilação para iOS Simulator em Apple Silicon (série M)

    Ao executar em um simulador no Mac com chip Apple Silicon série M, selecione o simulador rotulado como Rosetta em Product > Destination.

    Se o Rosetta ainda não estiver instalado, instale-o:

    Instale o Rosetta:

    sudo softwareupdate --install-rosetta --agree-to-license

    Se você executar sem o Rosetta e encontrar o erro Building for 'iOS-simulator', but linking in object file built for iOS, acesse Build Settings > Excluded Architectures e adicione Any iOS Simulator SDK: arm64. Caso um arquivo .framework ou .a de terceiros gere o erro x86_64 Undefined symbol: _OBJC_CLASS_$_, acesse Build Settings > Other Linker Flags, adicione -ld64 e selecione o simulador rotulado como Rosetta em Product > Destination.

  2. Sandbox: erro de negação rsync.samba no Xcode 15

    O Xcode 15 introduziu a configuração ENABLE_USER_SCRIPT_SANDBOXING. Se ocorrer o erro Sandbox: rsync.samba deny, acesse Build Settings > User script sandboxing e defina o valor como No.

Referência da API

Para mais informações, consulte Referência da API.