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
-
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 -
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' -
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,EMASUniappMiniAppou ambos, conforme os tipos de contêiner integrados ao aplicativo. As flagsuseWindVaneeuseUniAppna 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
-
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-licenseSe 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
.frameworkou.ade 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. -
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.