guoziyun 10 месяцев назад
Родитель
Сommit
f547bf3fd5
1 измененных файлов с 35 добавлено и 41 удалено
  1. 35 41
      views/v2/share-simple.ejs

+ 35 - 41
views/v2/share-simple.ejs

@@ -415,27 +415,42 @@
 
     // claim bonus 超过1秒自动跳转到下载页
     document.addEventListener('DOMContentLoaded', function () {
+      const urlScheme = `anc://page/<%= id %>`
       const userAgent = navigator.userAgent || navigator.vendor || window.opera;
+      const isFacebookBrowser = navigator.userAgent.match(/FBAN|FBAV/i);
+      const isWeChatBrowser = /micromessenger/i.test(userAgent);
+      const isAndroid = /android/i.test(userAgent);
+      const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream;
+
       // 检查 URL 中是否包含 check=1 参数
       const urlParams = new URLSearchParams(window.location.search);
       const hasCheckParam = urlParams.has('check');
       // 定义下载页面 URL(与 Download App 按钮保持一致)
       const downloadUrl = document.querySelector('.btn-secondary').href;
 
-      // =============== 新增: Facebook 应用内浏览器检测 ===============
-      const isFacebookBrowser = navigator.userAgent.match(/FBAN|FBAV/i);
-      const isAndroid = /android/i.test(userAgent);
-
-      if (isFacebookBrowser && isAndroid) {
+      if (isFacebookBrowser) {
         console.log("检测到Facebook应用内浏览器");
-        // 添加Facebook特定的处理逻辑
-        window.location.href = "intent://" + "<%= applink %>".replace(/^https?:\/\//, "") + "#Intent;scheme=https;package=com.pcoloring.art.puzzle.color.by.number;end";
       }
-      // =============== Facebook 检测结束 ===============
 
+      // 微信环境相关
+      function closeOverlay() {
+        wechatGuideOverlay.classList.remove('active');
+      }
+      const wechatGuideOverlay = document.getElementById('wechat-guide-overlay');
+      if (isWeChatBrowser) {
+        wechatGuideOverlay.classList.add('active');
+        return; // 微信浏览器直接返回,不执行后续自动跳转逻辑
+      }
 
       // 如果是带 check 参数的页面,则执行拉起检测逻辑
       if (hasCheckParam) {
+
+        // 通用下载页,一般是在pc浏览器而非android/ios环境,直接跳转,不用等待
+        if (downloadUrl === 'https://art.pcoloring.com/app') {
+          window.location.href = downloadUrl;
+          return;
+        }
+
         let appLaunched = false;
 
         // 监听页面可见性变化(判断 App 是否被拉起)
@@ -451,23 +466,20 @@
           appLaunched = true;
         });
 
-        // 通用下载页,一般是在pc浏览器而非android/ios环境,直接跳转,不用等待
-        if (downloadUrl === 'https://art.pcoloring.com/app') {
-          window.location.href = downloadUrl;
-        } else {
-          // 1 秒后检查是否成功拉起 App
-          setTimeout(function () {
-            if (!appLaunched) {
-              // =============== 修改: 针对Facebook浏览器优化跳转逻辑 ===============
-              if (isFacebookBrowser && isAndroid) {
-                // 在Facebook浏览器中,使用更明显的跳转方式
-                window.location.href = "intent://" + "<%= applink %>".replace(/^https?:\/\//, "") + "#Intent;scheme=https;package=com.pcoloring.art.puzzle.color.by.number;end";
-              } else {
+
+        setTimeout(function () {
+          if (!appLaunched) {
+            // 尝试 URL Scheme
+            window.location.href = urlScheme;
+
+            // 再次设置一个更短的定时器,如果 URL Scheme 也失败,则跳转下载页
+            setTimeout(function () {
+              if (!appLaunched) {
                 window.location.href = downloadUrl;
               }
-            }
-          }, 500);
-        }
+            }, 500); // 500ms 足够判断 URL Scheme 是否有效
+          }
+        }, 1000); // 1 秒后检查,给 Universal Link / App Link 足够时间响应
 
       }
 
@@ -512,24 +524,6 @@
       imagePlaceholder.innerHTML = '<p>图片加载失败</p>'; // 显示错误提示
     };
 
-    const wechatGuideOverlay = document.getElementById('wechat-guide-overlay');
-
-    // MARK: 微信环境检测
-    function isWeChatBrowser() {
-      const ua = window.navigator.userAgent.toLowerCase();
-      return ua.includes('micromessenger');
-    }
-
-    function closeOverlay() {
-      wechatGuideOverlay.classList.remove('active');
-    }
-
-    if (isWeChatBrowser()) {
-      wechatGuideOverlay.classList.add('active');
-      console.log("检测到微信浏览器,显示引导层。");
-    } else {
-      wechatGuideOverlay.classList.remove('active'); // 确保隐藏
-    }
 
   </script>
 </body>