基于Node.js/PHP实现APP包名直达链接:已装启动未装跳转Play商店
实现APP唤起/安装引导的动态链接功能
核心思路
通过前端逻辑先尝试调用Android的intent协议唤起指定包名的APP,若唤起超时(说明未安装APP),则自动跳转到Google Play商店的对应应用页面。服务端仅需接收包名参数,返回包含该逻辑的页面即可。
Node.js(Express)实现
1. 初始化项目(可选)
如果还没创建项目,先执行:
npm init -y npm install express
2. 核心代码
创建server.js文件:
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/link', (req, res) => { const packageName = req.query.package; if (!packageName) { return res.status(400).send('缺少package参数'); } // 构造唤起APP的intent链接和Play商店链接 const intentUrl = `intent://${packageName}#Intent;scheme=android-app;package=${packageName};end`; const playStoreUrl = `https://play.google.com/store/apps/details?id=${packageName}`; // 返回包含跳转逻辑的HTML页面 res.send(` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>跳转中...</title> <script> // 尝试唤起APP window.location.href = '${intentUrl}'; // 3秒后如果没唤起成功,跳转到Play商店 setTimeout(() => { window.location.href = '${playStoreUrl}'; }, 3000); </script> </head> <body> 正在跳转...如果长时间未响应,请<a href="${playStoreUrl}">点击此处</a>前往应用商店安装 </body> </html> `); }); app.listen(PORT, () => { console.log(`服务运行在端口 ${PORT}`); });
3. 运行服务
node server.js
访问http://你的服务器地址:3000/link?package=com.test.app即可测试。
PHP实现
核心代码
创建link.php文件:
<?php $packageName = $_GET['package'] ?? ''; if (empty($packageName)) { http_response_code(400); echo '缺少package参数'; exit; } $intentUrl = "intent://{$packageName}#Intent;scheme=android-app;package={$packageName};end"; $playStoreUrl = "https://play.google.com/store/apps/details?id={$packageName}"; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>跳转中...</title> <script> window.location.href = '<?php echo $intentUrl; ?>'; setTimeout(() => { window.location.href = '<?php echo $playStoreUrl; ?>'; }, 3000); </script> </head> <body> 正在跳转...如果长时间未响应,请<a href="<?php echo $playStoreUrl; ?>">点击此处</a>前往应用商店安装 </body> </html>
将该文件部署到PHP服务器,访问http://你的服务器地址/link.php?package=com.test.app即可使用。
注意事项
- 该逻辑主要针对Android设备,iOS设备可额外添加
universal link或app scheme的唤起逻辑(需对应APP配置支持) - 部分浏览器可能会拦截intent唤起请求,页面中的备用链接可作为兜底方案
- 定时器时间可根据需求调整,建议设置2-5秒
内容的提问来源于stack exchange,提问作者LJ CREATION
相关产品推荐
相关产品推荐

