progma_flutter 0.6.1
progma_flutter: ^0.6.1 copied to clipboard
Progma analytics, revenue, conversion attribution, native billing and SDUI paywall engine.
0.6.1 #
- SDUI plan selection:
product_cardis selectable (radio style, starts on thehighlightcard) and apurchase_buttonwithuseSelection: truebuys the selected plan. product_cardshowsbadge, usesstyle.color/borderColor/backgroundColor, and prices the exact base plan/offer on the card.- Styles accept
padding/marginas a number or"t r b l",gradientas{colors}, plustextAlign,borderColorandborderWidth(same formats as the Android SDK). purchase_buttonhonorsbackgroundColor,color,borderRadius,height,fontSize,fontWeightand gradients.- The paywall keeps rendering with dashboard prices when Google Play is unavailable.
0.6.0 #
Breaking / behavior changes (integration hardening):
- Requires Flutter 3.44+ / Dart 3.12+: the Android plugin uses Flutter's built-in Kotlin (no KGP), which future Flutter versions require.
configure()never auto-provisions apps: the app must exist in the Progma panel. WithoutsdkKey, the package name must match exactly one registered app. The fallback packagecom.progma.appand the placeholder keyprogma_sdk_auto_pendingwere removed.configure()no longer throws on network errors; the last config is cached and used offline/at cold start (single cache key).flush()/flushAdRevenue()never throw, send batches of 50, keep the batch on network/408/429/401/5xx and drop batches the backend rejects with other 4xx (no more stuck queues). Queue capped at 1000 events.ProgmaProductacceptsproductId(as saved by the dashboard) besidesid, and exposesbasePlanId/offerId. Before, a paywall saved by the dashboard broke the whole config parse.- New
purchasePaywallProduct()andqueryAnyStoreProducts()(subscriptions and one-time products). Paywalls no longer query one-time products as subscriptions. restorePurchases()uses the store type of each purchase, so restored subscriptions are verified (and re-grant access).- Feature-access reasons match the backend:
emergency_kill,flag_kill_switch,version_outdated,paywall_required, ... (kill_switchwas split). registerPlacement()gates by the placement's paywall when there is no flag with the same key; a flag-gated placement without a paywall no longer runs the feature.- Hard SDUI paywalls cannot be closed with back/close buttons; terms/privacy links open; invalid colors no longer crash the paywall.
- New
openUrl(),openStoreListing(),openSubscriptionManagement();ProgmaVersionGuardandProgmaCustomerCenterbuttons now work. - Install referrer is submitted once per install; deep links forward
gclid/gbraid/wbraid/fbclid/UTM content/term.
0.5.7 #
- Customer Lifecycle Telemetry & Full Timeline Tracking:
trackPurchasenow serializes rich purchase metadata (title,formattedPrice,basePlanId,offerId,store = 'Play Store') inpurchase.rawand event properties.- Automatically wired into
purchaseStoreProductandrestorePurchases. - Identity alias history tracking in
Progma.instance.identify: recordsprevious_user_idtransitions and emitsalias_createdtelemetry matching backend timeline requirements. - Native Firebase Analytics bridge expanded: added reflection support for
setUserId,setUserProperty(with automaticinstallation_iduser property registration), andgetFirebaseAppInstanceId().
0.5.6 #
- Docs Update: Atualização da documentação no README.md para cobrir autoConfigure, SDUI Placements, Customer Center e AdMob.
0.5.5 #
-
registerPlacement(context, placementId)— Superwall-style placement API:- New
Progma.instance.registerPlacement()gates features behind paywalls with a single call. - Checks entitlement → presents paywall if needed → executes
feature()callback only after successful purchase. paramsmap for tracking context,customVariablesfor SDUI token injection,ProgmaPlacementHandlerfor lifecycle callbacks (onPresent,onDismiss,onSkip,onError).
- New
-
Custom Variables in SDUI Paywalls — RevenueCat V2-style
{{ custom.key }}tokens:showPaywall(context, customVariables: {'user_name': 'Alex', 'trial_days': '7'})now injects values into SDUI template strings at render time.- Supported namespaces:
{{ custom.* }},{{ user.name }},{{ user.id }},{{ product.price }},{{ product.title }}. - Applies to all text-rendering components:
text,badge,button,restore_button,purchase_button. ProgmaPaywallViewandProgmaSDUIRendererboth acceptcustomVariables.
-
ProgmaCustomerCenter— RevenueCat CustomerCenterView equivalent:- New self-service subscription management widget: status card (gradient, active/inactive), active entitlements list, trial countdown banner, Restore Purchases button, Refresh Status button, Play Store deep-link, and cancellation retention survey.
embedded: truefor inline embedding in settings;false(default) renders as a full-screen Scaffold with AppBar.accentColoroverride andonManageSubscriptioncallback.- Cancellation survey tracks
cancellation_survey_submittedwith reason to Progma backend.
-
ProgmaPlacementHandler:- New class mirroring Superwall's
PaywallPresentationHandlerwith typed callbacks for the full placement lifecycle.
- New class mirroring Superwall's
0.5.4 #
- Auto-Detect App Connect & Zero-Config Backend:
Progma.autoConfigure(): Auto-detecção de metadados do aplicativo (packageName,appName,versionName,versionCode,installerPackageName) no Android.- Registro e vinculação instantânea com o backend NestJS sem necessidade de criar o app manualmente ou passar
sdkKeyhardcoded. - Sincronização e cache persistente automático de
sdkKey, flags remotas, paywalls ativos, trials e entitlements. - Adicionado suporte a
ProgmaOptions(autoConnect: true)e gettersisConnected,isAutoConfigured,connectedAppName.
0.5.3 #
- Ponte Nativa Firebase Analytics:
- Reflexão dinâmica automática para o
FirebaseAnalyticspresente no classpath do app host no Android (ProgmaFirebaseBridge). - Espelhamento de eventos de retenção (
retention_d1,retention_d3,retention_d7) e de anúncios diretamente no dispositivo. - Adicionado listener de eventos Dart
Progma.onEventEmittede flagProgma.instance.syncWithFirebaseAnalytics.
- Reflexão dinâmica automática para o
0.5.2 #
- Cohorts de Retenção D1, D3, D7:
- Método
trackRetention(day, properties)para envio explícito de marcos de retenção. - Detecção automática de retenção em segundo plano baseada em carimbo de tempo persistente em
SharedPreferences.
- Método
- Granularidade de Inventário AdMob:
trackAdImpression(format, adUnitId, ...)com enumProgmaAdFormat(banner,interstitial,rewarded, etc.) e repasse direto para ILRD.trackAdReward(adUnitId, rewardType, rewardAmount)para concessão de bônus e prêmios.trackAdClick(adUnitId, ...)para cliques em unidades de anúncio.
0.5.1 #
- Behavioral Conversion Intelligence & Dual-Firebase Architecture:
- Alinhamento de eventos comportamentais e compatibilidade com o pipeline Dual-Firebase (Firebase A lado cliente / Firebase B central).
- Emissão de conversões preditivas
high_intent_usercomevent_idcanônico compartilhado. - Correção de mapeamento canônico de eventos para evitar erros de validação no backend NestJS.
0.5.0 #
- Server-Driven UI (SDUI 2.0): Motor nativo de renderização de paywalls orientados por componentes server-side (
ProgmaSDUIRenderer). - 4 Presets de Alta Conversão:
trial_timeline: Linha do tempo com lembrete no 5º dia e início de cobrança no 7º dia.hero_comparison: Imagem hero dramática e matriz de comparação de recursos.mascot_journey: Orbe 3D / mascote central com pilares de valor e jornada.social_proof_sunrise: Louros de prêmio, 5 estrelas (35k+ avaliações) e fundo degradê nascer do sol.
- Novos Componentes SDUI:
timeline,comparison_table,social_proof_header,hero_header,bullet_list,product_card,purchase_button,restore_button,close_buttoneterms_footer. - Fluxo de Pagamento Integrado:
showPaywall()dispara compras nativas do Google Play Billing 9.1.0 e atualiza entitlements automaticamente.
0.4.0 #
- Feature Flags & Remote Config: Controle remoto de funcionalidades com avaliação síncrona instantânea (0ms) via cache local persistente em
SharedPreferences. - UI Guards Inteligentes:
ProgmaFeatureGate: Guardião de interface para bloqueio e liberação de features pagas com paywalls dinâmicos.ProgmaVersionGuard: Enforcer de versão mínima obrigatória com redirecionamento para Google Play Store.ProgmaKillSwitchGuard: Bloqueio de emergência global com tela de manutenção bloqueante.
- Suporte a UUID & ID de Suporte:
- Getters
publicUserIdesupportId(formato amigávelUSER-XXXXXXXX). - Widget
ProgmaSupportFooterpronto para rodapé de configurações com cópia em 1 toque para área de transferência.
- Getters
- Push Token FCM: Método
registerPushToken(token)para registro de dispositivos e suporte a notificações push multicast de migração agressiva e alertas. - Hierarquia de Avaliação Resiliente: Fallback em cascata (Emergency Kill -> Versão Mínima -> Flag Kill-Switch -> Free Access -> Trial -> Entitlement / Google Play Billing).
0.3.0 #
- Google Play Billing 9.1 integrado ao plugin Android.
- Consulta de preços localizados, base plans e ofertas elegíveis.
- Compra, acknowledgement, restore e revalidação server-side.
- Catálogo comercial remoto para produtos avulsos e assinaturas.
0.2.0 #
- Consentimento explícito para analytics, advertising e personalização.
- Install Referrer e atribuição/deep links.
- Receita publicitária por impressão.
- Links de referral, wallet e saques Pix/PayPal.
- Telemetria Play Integrity.
0.1.0 #
- Primeira versão pública com eventos, compras e paywalls.