# Tài liệu Triển khai Braze - WAmazing App
## Mục lục
1. [Tổng quan](#tổng-quan)
2. [Cấu hình môi trường](#cấu-hình-môi-trường)
3. [Triển khai Android](#triển-khai-android)
4. [Triển khai iOS](#triển-khai-ios)
5. [Event Tracking](#event-tracking)
6. [SDK Debugger](#sdk-debugger)
7. [Content Cards](#content-cards)
8. [Monitoring và Analytics](#monitoring-và-analytics)
## Tổng quan
Braze được sử dụng trong WAmazing app để:
- **Event Tracking**: Theo dõi hành vi người dùng
- **Content Cards**:<!--
https://play.tailwindcss.com/V4B6tDWkg1
-->
<div class="[--color:red] md:[--color:green]">
<div class="aspect-square w-20 bg-[var(--color)]">1</div>
<div class="aspect-square w-20 bg-[--color]">2</div>
</div>
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4a9d1041",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, Joseph Baker!\n",
"Welcome, Joseph Baker! This is message number 1.\n",
"Welcome, Joseph Baker! This is message number 2.\n",
"Welcome, Joseph Baker! This is message number 3.\n"
]
}
],
"source": [
"def user_name():\n",
" user_name = input(\"Ent# 1. confirm node & npm
node -v
npm -v
# 2. create folder and server file
mkdir $env:USERPROFILE\Projects\NodeProjects\node-test
cd $env:USERPROFILE\Projects\NodeProjects\node-test
notepad server.mjs # paste your ESM server code and save
# 3. run server
node server.mjs
# then visit http://127.0.0.1:3000 in your browser
# 4. Then (in a new PowerShell window) install the Cacher CLI:
npm install -g @cacherapp/cli
cacher run-server:start -o file://
# Copy the Address & Token o# Task
Creation des coupes 20m amont et 20m aval si le profil contiens ausii bis et ter (exemple "Profil_04")

# Etape 1
Executer script in consol python qui creera values avec bis et ter pour toutes les attributes de colonne "Profils" 20m among et aval:
```python
from qgis.core import *
import math
# ---- paramètres à adapter ----
NOM_AXE = 'Flow' # couche de l'écoulement
NO<?php
// c
$pickedCard = new Card(new CardSuit(CardSuit::SPADES), new CardRank(CardRank::ACE));
// d
$aceSpade = new Card(CardSuit::spades(), CardRank::ace());
$twoSpade = new Card(CardSuit::spades(), CardRank::two());
if ($aceSpace->isGreaterThan($twoSpade)) {
// do something when greater, such as sum the weight to count points
}/**
* @param {string} s
* @return {boolean}
*/
var hasSameDigits = function(s) {
// Convert the input string into an array of digits (as numbers)
let digits = s.split('').map(Number);
// Repeat the transformation until only two digits remain
while (digits.length > 2) {
let nextDigits = [];
// Loop through each pair of consecutive digits
for (let i = 0; i < digits.length - 1; i++) {
// Compute the sum modulo 10
let sumMod10 = (d<script>
document.addEventListener('DOMContentLoaded', function () {
// 1) Selecteer alle navigaties waar dropdowns kunnen staan
const navRoots = document.querySelectorAll('.uk-navbar-nav, .uk-nav');
// 2) Voeg ARIA aan ouderlinks toe en verberg het icoon voor SR
navRoots.forEach(nav => {
nav.querySelectorAll('li.uk-parent > a, li.menu-item-has-children > a').forEach(link => {
// aria-attributen op de toggle
link.setAttribute('aria-haspopup', 'true');
if (!link.h
// ========================================
// lib/api.ts
// ========================================
// Your best-of-both-worlds Axios instance is ready (JWT + logging + 401 handling).
// Attach token automatically
// Redirect to /login on 401
// Simplified response (response.data)
import axios from 'axios';
import Router from 'next/router';
const api = axios.create({
baseURL: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:5000',
headers: { 'Content-Type': 'application/json' },/**
* @param {number[]} nums
* @param {number} k
* @param {number} numOperations
* @return {number}
*/
var maxFrequency = function (nums, k, numOperations) {
// Sort the array to enable binary search and range grouping
nums.sort((a, b) => a - b);
let maxFreq = 0;
const numCount = new Map(); // Stores frequency of each unique number
const candidateModes = new Set(); // Stores potential target values to maximize frequency
// Helper to add a value and its ±k neighbors# Sonar Tips and Tricks
### Specify project name
Add to the parent pom in the properties part:
```
<properties>
<sonar.projectKey>NAME-IN-SONAR-QUBE</sonar.projectKey>
</properties>
```// /b2b‑checkout.js
import wixUsers from 'wix-users';
import wixLocation from 'wix-location';
import { session } from 'wix-storage-frontend';
import { getMemberCheckoutProfile, createOrderFromProfile } from 'backend/b2bCheckout.jsw';
const COUNTRY_NAMES = {
AT: 'Österreich',
DE: 'Deutschland',
CH: 'Schweiz',
IT: 'Italien'
// weitere Ländercodes ergänzen …
};
$w.onReady(function () {
const logs = [];
resetFields();
if ($w('#paymentMethodRadio')) $w('#pa// backend/b2bCheckout.jsw
import { currentMember } from 'wix-members-backend';
import { contacts } from 'wix-crm-backend';
import wixData from 'wix-data';
import wixStores from 'wix-stores-backend';
/* --------------------------- Helper: UUID + Country --------------------------- */
function pseudoUuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
const r = (Math.random() * 16) | 0;
const v = c === 'x' ? r : (r & 0x3) | 0x8;
return v.toStr<p class="text">CSSの場合</p>
<svg class="svg1" viewBox="0 0 300 200">
<rect fill="red" stroke="black" stroke-width="10" x="0" y="0" width="300" height="200"></rect>
</svg>
<svg class="svg2" viewBox="0 0 300 200">
<rect fill="red" stroke="black" stroke-width="10" x="0" y="0" width="300" height="200"></rect>
</svg>
<!-- vector-effect="non-scaling-stroke" でも解決可能 -->
<svg class="svg2" viewBox="0 0 300 200">
<rect fill="red" vector-effect="non-scaling-stroke" stroke="black" stroke-width="10" x="0User-agent: *
Disallow: /dev/wp-admin/
Allow: /dev/wp-admin/admin-ajax.php
Sitemap: https://fiva.gr/sitemap_index.xml
# OpenAI's GPTBot
User-agent: GPTBot
Allow: /
# Anthropic's ClaudeBot
User-agent: ClaudeBot
Allow: /
# Google AI crawler (Google-Extended)
User-agent: Google-Extended
Allow: /
# Perplexity AI crawler
User-agent: PerplexityBot
Allow: /
# Generic allow for everything else
User-agent: *
Disallow:<dependencies>
<!-- Spring Boot Web + Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- JWT -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>