@akross/artemis-ads-sdk 3.7.0 → 3.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +138 -134
  3. package/dist/akross-ads-sdk.esm.js +1 -1
  4. package/dist/akross-ads-sdk.iife.js +1 -1
  5. package/dist/akross-ads-sdk.min.js +1 -1
  6. package/dist/akross-ads-sdk.umd.js +1 -1
  7. package/dist/core/AAManager.d.ts.map +1 -1
  8. package/dist/modules/rv/programmatic/AARewardedVideo.d.ts +2 -0
  9. package/dist/modules/rv/programmatic/AARewardedVideo.d.ts.map +1 -1
  10. package/dist/modules/rv/programmatic/LuminaRewardedVideoWrapper.d.ts +40 -0
  11. package/dist/modules/rv/programmatic/LuminaRewardedVideoWrapper.d.ts.map +1 -0
  12. package/dist/modules/rv/programmatic/index.d.ts +1 -0
  13. package/dist/modules/rv/programmatic/index.d.ts.map +1 -1
  14. package/dist/modules/rv/vast/AAVastPlayer.d.ts +1 -0
  15. package/dist/modules/rv/vast/AAVastPlayer.d.ts.map +1 -1
  16. package/dist/types/ArtemisSdkConfig.d.ts +4 -0
  17. package/dist/types/ArtemisSdkConfig.d.ts.map +1 -1
  18. package/dist/types/models/AACampaign.d.ts +0 -1
  19. package/dist/types/models/AACampaign.d.ts.map +1 -1
  20. package/dist/types/models/AACampaignConfig.d.ts.map +1 -1
  21. package/dist/types/models/AAMainData.d.ts +2 -1
  22. package/dist/types/models/AAMainData.d.ts.map +1 -1
  23. package/dist/utils/AAMediaResultHelper.d.ts +2 -0
  24. package/dist/utils/AAMediaResultHelper.d.ts.map +1 -1
  25. package/dist/utils/DeviceUtil.d.ts +8 -0
  26. package/dist/utils/DeviceUtil.d.ts.map +1 -0
  27. package/dist/utils/ExternalJsLoader.d.ts +7 -2
  28. package/dist/utils/ExternalJsLoader.d.ts.map +1 -1
  29. package/dist/utils/index.d.ts +2 -1
  30. package/dist/utils/index.d.ts.map +1 -1
  31. package/package.json +3 -2
package/CHANGELOG.md ADDED
@@ -0,0 +1,46 @@
1
+ # Changelog
2
+
3
+ Todas as mudanças notáveis do projeto são documentadas neste arquivo.
4
+
5
+ O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
6
+ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR/).
7
+
8
+ ## [3.7.1] - 2025-01-29
9
+
10
+ - Republicação: 3.7.0 foi deprecated no npm; esta versão substitui o release final.
11
+
12
+ ---
13
+
14
+ ## [3.7.0] - 2025-01-29
15
+
16
+ Esta versão consolida três branches mergeadas: **Kwai (Lumina)**, **external_redirect** e **proxyExternalScripts**.
17
+
18
+ ### Kwai / Lumina (Rewarded Video)
19
+
20
+ - **Lumina Rewarded Video**: Integração com Kwai Lumina Ad SDK para anúncios recompensados no waterfall programático.
21
+ - **LuminaRewardedVideoWrapper**: Wrapper para exibição de RV via Lumina (tagId + token).
22
+ - **`luminaToken` em `SDKConfig`**: Nova opção para uso do Lumina RV.
23
+ - **Pré-carregamento do Lumina**: `AAManager` pré-carrega o script do Lumina quando `luminaToken` está configurado.
24
+ - **Waterfall programático**: Suporte a step `LUMINA_RV` no waterfall de rewarded video (junto com GAM_RV).
25
+ - **ExternalJsLoader**: método `loadLuminaScript` e interface `LuminaScriptConfig`.
26
+
27
+ ### Tipo de mídia external_redirect
28
+
29
+ - **Novo tipo de mídia `external_redirect`**: Redirecionamento externo sem interface própria; o SDK retorna resultado e o cliente implementa o redirecionamento.
30
+ - **AAExternalRedirect**: Módulo que trata o tipo `external_redirect`; envia apenas evento de clique (sem impressão), retorna `AAMediaPlayResult.EXTERNAL_REDIRECT`.
31
+ - **Dois formatos de conteúdo**: Suporte a `content.externalRedirect` (novo) e campos em `content` (compatibilidade).
32
+
33
+ ### proxyExternalScripts
34
+
35
+ - **`proxyExternalScripts` em `SDKConfig`**: Nova opção para carregar scripts externos (GPT, IMA, Lumina) via proxy quando necessário.
36
+ - **ExternalJsLoader**: Suporte a carregamento via proxy nos scripts externos.
37
+
38
+ ### Documentação
39
+
40
+ - README atualizado: estrutura do projeto, remoção de APIs inexistentes (webViewBridge, loadAd, etc.), `SDKConfig` alinhado ao código.
41
+
42
+ ---
43
+
44
+ ## [Versões anteriores]
45
+
46
+ Para histórico de versões anteriores a 3.7.1, consulte as tags e releases no repositório.
package/README.md CHANGED
@@ -7,7 +7,6 @@ SDK JavaScript para o AdServer Akross Artemis - Carregamento de banners e mídia
7
7
  - **TypeScript Vanilla**: Sem dependências de frameworks
8
8
  - **Múltiplos Builds**: UMD (NPM), IIFE (CDN) e ESM (sites modernos)
9
9
  - **API Global**: `window.AkrossAds` para uso em Flutter Web/WebView
10
- - **WebView Bridge**: Comunicação automática via `window.Akross.postMessage`
11
10
  - **Banner Loader**: Carregamento otimizado de banners com fit inteligente
12
11
  - **Sample Interativa**: Interface web para testes locais
13
12
 
@@ -24,16 +23,18 @@ npm install @akross/artemis-ads-sdk
24
23
  ```javascript
25
24
  import { init, ArtemisAdsBannerLoader } from '@akross/artemis-ads-sdk';
26
25
 
27
- // Configuração do SDK
28
- const sdkConfig = {
29
- baseUrl: 'https://api.akross.com.br',
30
- appId: 'seu-app-id',
31
- appVersion: '1.0.0',
32
- debug: true
26
+ const SDK_CONFIG = {
27
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
28
+ debug: true,
29
+ timeout: 10000,
30
+ appId: 'com.example.myapp', // ID da aplicação (equivalente ao package name do Android)
31
+ appVersion: '1.0.0', // Versão da aplicação
32
+ artemisAdsAppId: 'akross-app-123', // ID do app Artemis Ads
33
+ primaryColor: '#ff0000', // Cor primária do projeto (formato hexadecimal)
34
+ luminaToken: 'QQDCYMdFh2AJqwP' // Token do Lumina SDK (opcional - usa valor padrão se não fornecido)
33
35
  };
34
36
 
35
- // Inicializar SDK
36
- const sdk = await init(sdkConfig);
37
+ const sdk = await init(SDK_CONFIG);
37
38
  ```
38
39
 
39
40
  ### Carregamento de Banner
@@ -114,22 +115,23 @@ export default function BannerAd({ zoneId }) {
114
115
  ```html
115
116
  <script src="https://cdn.akross.com/sdk/akross-ads-sdk.iife.js"></script>
116
117
  <script>
117
- // Inicializa o SDK
118
- const sdk = window.AkrossAds.init({
119
- baseUrl: 'https://api.akross.com/ads',
120
- debug: true,
121
- webViewBridge: {
122
- enabled: true
123
- }
124
- });
125
-
126
- // Carrega um anúncio
127
- sdk.loadAd(document.getElementById('ad-container'), {
128
- adId: 'my-ad',
129
- slotId: 'banner-slot',
130
- adServerUrl: 'https://api.akross.com/ads',
131
- dimensions: { width: 300, height: 250 }
132
- });
118
+ (async function() {
119
+ const SDK_CONFIG = {
120
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
121
+ debug: true,
122
+ timeout: 10000,
123
+ appId: 'com.example.myapp',
124
+ appVersion: '1.0.0',
125
+ artemisAdsAppId: 'akross-app-123',
126
+ primaryColor: '#ff0000',
127
+ luminaToken: 'QQDCYMdFh2AJqwP'
128
+ };
129
+ const sdk = await window.AkrossAds.init(SDK_CONFIG);
130
+
131
+ // Banner: usar ArtemisAdsBannerLoader
132
+ const bannerLoader = new window.AkrossAds.ArtemisAdsBannerLoader('#ad-container');
133
+ await bannerLoader.loadZone('sua-zone-id');
134
+ })();
133
135
  </script>
134
136
  ```
135
137
 
@@ -138,12 +140,18 @@ export default function BannerAd({ zoneId }) {
138
140
  ```javascript
139
141
  import { init } from '@akross/artemis-ads-sdk';
140
142
 
141
- const sdk = init({
142
- baseUrl: 'https://api.akross.com/ads',
143
- debug: true
144
- });
143
+ const SDK_CONFIG = {
144
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
145
+ debug: true,
146
+ timeout: 10000,
147
+ appId: 'com.example.myapp',
148
+ appVersion: '1.0.0',
149
+ artemisAdsAppId: 'akross-app-123',
150
+ primaryColor: '#ff0000',
151
+ luminaToken: 'QQDCYMdFh2AJqwP'
152
+ };
145
153
 
146
- // Usar o SDK...
154
+ const sdk = await init(SDK_CONFIG);
147
155
  ```
148
156
 
149
157
  ### Via CommonJS/UMD
@@ -151,9 +159,18 @@ const sdk = init({
151
159
  ```javascript
152
160
  const { init } = require('@akross/artemis-ads-sdk');
153
161
 
154
- const sdk = init({
155
- baseUrl: 'https://api.akross.com/ads'
156
- });
162
+ const SDK_CONFIG = {
163
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
164
+ debug: true,
165
+ timeout: 10000,
166
+ appId: 'com.example.myapp',
167
+ appVersion: '1.0.0',
168
+ artemisAdsAppId: 'akross-app-123',
169
+ primaryColor: '#ff0000',
170
+ luminaToken: 'QQDCYMdFh2AJqwP'
171
+ };
172
+
173
+ const sdk = await init(SDK_CONFIG);
157
174
  ```
158
175
 
159
176
  ## 📚 API Reference
@@ -190,66 +207,77 @@ interface ArtemisAdsBannerLoaderClickListener {
190
207
  #### Inicialização
191
208
 
192
209
  ```javascript
193
- const sdk = window.AkrossAds.init({
194
- baseUrl: 'https://api.akross.com/ads', // URL base do servidor
195
- timeout: 10000, // Timeout em ms
196
- debug: false, // Modo debug
197
- webViewBridge: { // Configurações do WebView
198
- enabled: true,
199
- targetOrigin: '*' // Origem permitida
200
- }
201
- });
210
+ const SDK_CONFIG = {
211
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
212
+ debug: true,
213
+ timeout: 10000,
214
+ appId: 'com.example.myapp', // ID da aplicação (equivalente ao package name do Android)
215
+ appVersion: '1.0.0', // Versão da aplicação
216
+ artemisAdsAppId: 'akross-app-123', // ID do app Artemis Ads
217
+ primaryColor: '#ff0000', // Cor primária do projeto (formato hexadecimal)
218
+ luminaToken: 'QQDCYMdFh2AJqwP' // Token do Lumina SDK (opcional - usa valor padrão se não fornecido)
219
+ };
220
+
221
+ const sdk = await window.AkrossAds.init(SDK_CONFIG);
202
222
  ```
203
223
 
204
- #### Carregar Anúncio
224
+ #### Campanhas e Banner
205
225
 
206
226
  ```javascript
207
- const response = await sdk.loadAd(element, {
208
- adId: 'unique-ad-id',
209
- slotId: 'slot-identifier',
210
- adServerUrl: 'https://api.akross.com/ads',
211
- dimensions: { width: 300, height: 250 },
212
- options: { /* parâmetros adicionais */ }
213
- });
227
+ // Solicitar campanhas por zone
228
+ const response = await sdk.requestCampaign('sua-zone-id', 1);
229
+
230
+ // Banner: usar ArtemisAdsBannerLoader
231
+ const bannerLoader = new window.AkrossAds.ArtemisAdsBannerLoader('#container');
232
+ await bannerLoader.loadZone('sua-zone-id');
214
233
  ```
215
234
 
216
- #### Gerenciar Anúncios
235
+ #### Rewarded Video e mídias
217
236
 
218
237
  ```javascript
219
- // Criar instância de anúncio
220
- const adInstance = sdk.createAd(config);
221
-
222
- // Carregar anúncio
223
- await adInstance.load();
238
+ // Mídias (VAST, programático, survey, etc.) são executadas via AAMedia.click()
239
+ // O fluxo típico: requestCampaign -> escolher mídia -> media.click()
240
+ const campaigns = await sdk.requestCampaign('zone-rv', 1);
241
+ const media = campaigns?.zones?.[0]?.campaigns?.[0]?.content;
242
+ if (media) {
243
+ const result = await media.click();
244
+ }
245
+ ```
224
246
 
225
- // Atualizar anúncio
226
- await adInstance.refresh();
247
+ ## 🔧 Configuração
227
248
 
228
- // Destruir anúncio
229
- adInstance.destroy();
249
+ ### Configuração do SDK
230
250
 
231
- // Obter anúncios ativos
232
- const activeAds = sdk.getActiveAds();
251
+ Exemplo de configuração (como no sample e na inicialização real):
233
252
 
234
- // Destruir todos os anúncios
235
- sdk.destroyAll();
253
+ ```javascript
254
+ const SDK_CONFIG = {
255
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
256
+ debug: true,
257
+ timeout: 10000,
258
+ appId: 'com.example.myapp', // ID da aplicação (equivalente ao package name do Android)
259
+ appVersion: '1.0.0', // Versão da aplicação
260
+ artemisAdsAppId: 'akross-app-123', // ID do app Artemis Ads
261
+ primaryColor: '#ff0000', // Cor primária do projeto (formato hexadecimal)
262
+ luminaToken: 'QQDCYMdFh2AJqwP', // Token do Lumina SDK (opcional - usa valor padrão se não fornecido)
263
+ proxyExternalScripts: false // Carregar scripts externos (GPT, IMA, Lumina) via proxy (opcional)
264
+ };
236
265
  ```
237
266
 
238
- ## 🔧 Configuração
239
-
240
- ### Configuração do SDK
267
+ Interface TypeScript:
241
268
 
242
269
  ```typescript
243
270
  interface SDKConfig {
244
271
  baseUrl: string;
245
- appId: string;
246
- appVersion: string;
247
- debug?: boolean;
248
272
  timeout?: number;
249
- webViewBridge?: {
250
- enabled: boolean;
251
- targetOrigin?: string;
252
- };
273
+ debug?: boolean;
274
+ appId?: string;
275
+ appVersion?: string;
276
+ artemisAdsAppId?: string;
277
+ primaryColor?: string;
278
+ luminaToken?: string;
279
+ proxyExternalScripts?: boolean;
280
+ cdnBaseUrl?: string;
253
281
  }
254
282
  ```
255
283
 
@@ -411,27 +439,6 @@ if (result.result === AAMediaPlayResult.EXTERNAL_REDIRECT) {
411
439
  }
412
440
  ```
413
441
 
414
- ## 🌐 WebView Integration
415
-
416
- O SDK detecta automaticamente quando está rodando em um WebView e configura o bridge de comunicação:
417
-
418
- ```javascript
419
- // Verifica se está em WebView
420
- if (sdk.isWebView()) {
421
- console.log('Executando em WebView');
422
- }
423
-
424
- // Obtém informações do WebView
425
- const webViewInfo = sdk.getWebViewInfo();
426
- console.log(webViewInfo);
427
-
428
- // Envia mensagem para o WebView
429
- sdk.sendToWebView('ad_click', {
430
- adId: 'my-ad',
431
- timestamp: Date.now()
432
- });
433
- ```
434
-
435
442
  ## 🏗️ Builds Disponíveis
436
443
 
437
444
  ### 📦 Formatos de Build
@@ -566,14 +573,15 @@ sample/
566
573
  O sample usa configurações padrão que podem ser alteradas em `demo.js`:
567
574
 
568
575
  ```javascript
569
- const sdkConfig = {
570
- baseUrl: 'https://ads.timfun.com.br/adserver/',
571
- debug: true,
572
- timeout: 10000,
573
- appId: 'com.example.myapp',
574
- appVersion: '1.0.0',
575
- artemisAdsAppId: 'akross-app-123',
576
- primaryColor: '#ff0000'
576
+ const SDK_CONFIG = {
577
+ baseUrl: 'https://ads.timfun.com.br/adserver/',
578
+ debug: true,
579
+ timeout: 10000,
580
+ appId: 'com.example.myapp', // ID da aplicação (equivalente ao package name do Android)
581
+ appVersion: '1.0.0', // Versão da aplicação
582
+ artemisAdsAppId: 'akross-app-123', // ID do app Artemis Ads
583
+ primaryColor: '#ff0000', // Cor primária do projeto (formato hexadecimal)
584
+ luminaToken: 'QQDCYMdFh2AJqwP' // Token do Lumina SDK (opcional - usa valor padrão se não fornecido)
577
585
  };
578
586
  ```
579
587
 
@@ -636,22 +644,6 @@ npm run publish:major
636
644
  npm pack
637
645
  ```
638
646
 
639
- ## 🔄 WebView Bridge
640
-
641
- O SDK implementa comunicação bidirecional com WebView:
642
-
643
- ### Mensagens Enviadas para WebView:
644
- - `ad_request` - Requisição de anúncio
645
- - `ad_response` - Resposta do anúncio
646
- - `ad_error` - Erro no carregamento
647
- - `ad_click` - Clique no anúncio
648
- - `ad_impression` - Impressão do anúncio
649
-
650
- ### Mensagens Recebidas do WebView:
651
- - `ad_request` - Solicitação de anúncio
652
- - `ad_error` - Erro reportado
653
- - `ad_click` - Clique reportado
654
-
655
647
  ## 🛠️ Estrutura do Projeto
656
648
 
657
649
  ### 📁 Estrutura Principal
@@ -660,24 +652,29 @@ O SDK implementa comunicação bidirecional com WebView:
660
652
  src/
661
653
  ├── ads-core/ # Core do sistema de anúncios
662
654
  │ ├── AdsManager.ts # Gerenciador principal de anúncios
663
- │ ├── network/ # Camada de rede
664
- │ │ ├── ApiFactory.ts # Factory para APIs
665
- │ │ ├── ServicesAds.ts # Serviços de anúncios
666
- │ │ └── interceptor/ # Interceptadores HTTP
655
+ │ ├── index.ts
667
656
  │ └── util/ # Utilitários do core
668
- └── AAMediaTypeValidator.ts
657
+ ├── AADeviceContextHelper.ts
658
+ │ └── index.ts
669
659
  ├── core/
670
- └── AAManager.ts # Gerenciador principal do SDK
660
+ ├── AAManager.ts # Gerenciador principal do SDK
661
+ │ └── network/ # Camada de rede
662
+ │ ├── ApiFactory.ts # Factory para APIs
663
+ │ ├── ServicesAds.ts # Serviços de anúncios
664
+ │ └── interceptor/ # Interceptadores HTTP
671
665
  ├── events/
672
666
  │ └── AAEventsCallbackHelper.ts # Helper para eventos
673
667
  ├── modules/ # Módulos específicos
674
668
  │ ├── image/ # Banner Loader
675
669
  │ │ └── ArtemisAdsBannerLoader.ts
676
670
  │ ├── rv/ # Rewarded Video
677
- │ │ ├── programmatic/ # Anúncios programáticos
671
+ │ │ ├── programmatic/ # Anúncios programáticos (waterfall)
678
672
  │ │ │ ├── AARewardedVideo.ts
679
- │ │ │ └── GAMRewardedVideoWrapper.ts
680
- │ │ └── vast/ # Player VAST
673
+ │ │ │ ├── GAMRewardedVideoWrapper.ts
674
+ │ │ │ ├── LuminaRewardedVideoWrapper.ts # Kwai Lumina RV
675
+ │ │ │ └── utils/
676
+ │ │ │ └── WaterfallResultHelper.ts
677
+ │ │ └── vast/ # Player VAST
681
678
  │ │ ├── AAVastPlayer.ts
682
679
  │ │ └── AAVastPlayerUI.ts
683
680
  │ ├── poll/ # Survey V2
@@ -692,9 +689,13 @@ src/
692
689
  │ └── ... (outros modelos)
693
690
  ├── utils/ # Utilitários gerais
694
691
  │ ├── AAMediaResultHelper.ts # Helper para resultados
695
- │ ├── AAReportHelper.ts # Helper para relatórios
692
+ │ ├── DeviceUtil.ts
693
+ │ ├── ExternalJsLoader.ts # Carregamento de scripts (GPT, IMA, Lumina)
694
+ │ ├── GlobalLoadingOverlay.ts
696
695
  │ ├── logger.ts # Sistema de logging
697
- └── ... (outros utils)
696
+ ├── PreferencesUtil.ts
697
+ │ ├── version.ts
698
+ │ └── index.ts
698
699
  └── index.ts # Ponto de entrada principal
699
700
  ```
700
701
 
@@ -760,10 +761,13 @@ interface SDKConfig {
760
761
  baseUrl: string;
761
762
  timeout?: number;
762
763
  debug?: boolean;
763
- webViewBridge?: {
764
- enabled: boolean;
765
- targetOrigin?: string;
766
- };
764
+ appId?: string;
765
+ appVersion?: string;
766
+ artemisAdsAppId?: string;
767
+ primaryColor?: string;
768
+ luminaToken?: string;
769
+ proxyExternalScripts?: boolean;
770
+ cdnBaseUrl?: string;
767
771
  }
768
772
  ```
769
773