Bläddra i källkod

detail页面支持手动拉起app

guoziyun 10 månader sedan
förälder
incheckning
593883182a
3 ändrade filer med 38 tillägg och 6 borttagningar
  1. 5 1
      routes/v2/detail.js
  2. 33 1
      views/v2/detail.ejs
  3. 0 4
      views/v2/share.ejs

+ 5 - 1
routes/v2/detail.js

@@ -65,7 +65,10 @@ router.get('/:id', function (req, res, next) {
       // deeplink 相关
       let applink = `https://art.pcoloring.com${req.originalUrl}`;
       let downlink = `https://pcoloring.com/anc/`;
-
+      let openapplink = applink;
+      if (!req.originalUrl.includes('check')) {
+        openapplink = applink.concat(req.originalUrl.includes('?') ? '&check=1' : '?check=1');
+      }
 
       const userAgent = req.headers['user-agent'];
       console.log('User-Agent:', userAgent);
@@ -97,6 +100,7 @@ router.get('/:id', function (req, res, next) {
         collections: recmCollections,
         applink,
         downlink,
+        openapplink,
       };
 
       // 渲染EJS模板到内存中

+ 33 - 1
views/v2/detail.ejs

@@ -367,7 +367,7 @@
           <a id="repaintBtn" onclick="onRepaint('<%= detail._id %>')" class="btn" style="display: none;">Repaint</a>
           <a id="reviewBtn" href="/play/<%= detail._id %>" class="btn"
             style="background-color: orange; display: none;">Review</a>
-          <a id="appBtn" class="btn" href="<%= downlink %>" style="background-color: darkolivegreen;">Paint on APP</a>
+          <a id="appBtn" class="btn" href="<%= openapplink %>" style="background-color: darkolivegreen;">Paint on APP</a>
           <a href="/download/pdf/page/<%= detail._id %>" class="btn"
             style="background-color: lightseagreen;">Download</a>
           <a id="printBtn" onclick="printImage('<%= detail._id %>')" class="btn"
@@ -551,6 +551,38 @@
 
         // 页面加载完成后执行
         document.addEventListener('DOMContentLoaded', () => {
+          // 检查 URL 中是否包含 check=1 参数
+          const urlParams = new URLSearchParams(window.location.search);
+          const hasCheckParam = urlParams.has('check');
+
+          // 如果是带 check 参数的页面,则执行拉起检测逻辑
+          if (hasCheckParam) {
+            let appLaunched = false;
+
+            // 监听页面可见性变化(判断 App 是否被拉起)
+            document.addEventListener('visibilitychange', function () {
+              if (document.hidden) {
+                // 页面被隐藏,说明 App 可能被成功拉起
+                appLaunched = true;
+              }
+            });
+
+            // 监听页面焦点变化(辅助判断)
+            window.addEventListener('blur', function () {
+              appLaunched = true;
+            });
+
+            // 1 秒后检查是否成功拉起 App
+            setTimeout(function () {
+              if (!appLaunched) {
+                // 未拉起 App,跳转到下载页
+                window.location.href = '<%= downlink %>';
+              }
+            }, 1000);
+          }
+
+
+          // 内地内容相关
           const METADATA_KEY = '__storage_metadata__';
 
           const container = document.getElementById('status');

+ 0 - 4
views/v2/share.ejs

@@ -412,10 +412,6 @@
       const urlParams = new URLSearchParams(window.location.search);
       const hasCheckParam = urlParams.has('check');
 
-      console.log(window.location.search);
-
-      console.log('hasCheckParam:', hasCheckParam);
-
       // 定义下载页面 URL(与 Download App 按钮保持一致)
       const downloadUrl = document.querySelector('.btn-secondary').href;