| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /**
- * CTA 按钮控制器
- *
- * - 页面加载后按钮常驻可见(工具栏之上)
- * - 填色完成后调用 `ctaHighlight()` 放大 + 强脉冲,引导用户点击
- * - 点击后通过 mraid 适配层跳转 Store
- */
- import { openStoreUrl } from "./mraid";
- /** App Store / Google Play 落地页链接,按需替换 */
- // 正式上线时换回自己的 app:
- // const STORE_URL_IOS = "https://apps.apple.com/app/id1575480118";
- // const STORE_URL_ANDROID = "https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number";
- // 测试期间使用 PBN,避免产生无效转化
- const STORE_URL_IOS =
- "https://apps.apple.com/gb/app/paint-by-number-coloring-games/id1420058690";
- const STORE_URL_ANDROID =
- "https://play.google.com/store/apps/details?id=com.oakever.paintbynumber";
- function getStoreUrl(): string {
- const ua = navigator.userAgent;
- if (/android/i.test(ua)) return STORE_URL_ANDROID;
- return STORE_URL_IOS; // iOS / 桌面 fallback
- }
- /**
- * 初始化 CTA 按钮:绑定点击事件。
- * 应在 DOM ready 后调用一次。
- */
- export function initCta(): void {
- const btn = document.getElementById("cta-btn");
- if (!btn) return;
- btn.addEventListener("click", () => {
- openStoreUrl(getStoreUrl());
- });
- }
- /**
- * 填色完成后调用,放大按钮并加强脉冲动画,吸引用户点击。
- */
- export function ctaHighlight(): void {
- const btn = document.getElementById("cta-btn");
- if (!btn) return;
- btn.classList.add("cta-highlight");
- }
|