Expo实现Android App Link:未安装应用跳转Play Store无需服务器?
无需服务器实现App跳转/Play Store fallback的方案
首先纠正一个误解:Android App Link完全具备你需要的“已安装开App,未安装跳Play Store”的能力,而且可以做到无需自己搭建服务器(仅需完成域名验证,可通过Google的服务托管验证文件)。以下是具体可行的方案:
方案1:正确配置Android App Link(推荐)
这是最符合Android规范的方案,无额外服务器成本,且无浏览器弹窗:
- 步骤1:准备域名
你需要一个自己的域名(可以用免费域名,比如免费顶级域名服务),不需要搭建复杂服务器,仅需完成域名验证。 - 步骤2:配置AndroidManifest
在目标Activity中添加App Link的intent-filter:<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 替换成你的域名链接 --> <data android:scheme="https" android:host="yourdomain.com" android:pathPrefix="/open" /> </intent-filter> - 步骤3:完成域名验证(无需自建服务器)
如果你使用Google Play App Signing(绝大多数开发者都会用),可以通过Google Play Console自动托管验证文件:- 登录Google Play Console,进入你的App页面,选择「设置」→「App integrity」→「App Links」。
- 添加你的域名,按照提示完成域名验证(可通过Google Search Console验证域名所有权,无需自己上传验证文件到服务器)。
- 效果
用户扫描包含https://yourdomain.com/open的二维码或点击该链接时:- 若App已安装:系统直接打开你的App,跳过浏览器。
- 若未安装:系统自动跳转至Play Store的App详情页。
方案2:自定义URI Scheme + Play Store链接组合(无服务器但有弹窗)
如果不想配置域名,这个方案可以临时用,但体验稍差:
- 在AndroidManifest中配置自定义URI Scheme的intent-filter:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" android:host="open" /> </intent-filter> - 生成的二维码直接使用Play Store链接:
https://play.google.com/store/apps/details?id=<你的包名>。 - 效果
当用户扫码打开链接时:- 若App已安装:部分浏览器会先检测到App能处理跳转逻辑,用户可选择“打开App”。
- 若未安装:直接打开Play Store详情页。
缺点是部分浏览器会弹出选择弹窗,体验不如App Link。
为什么之前的“取巧方案”不是必须的
你提到的带redirect元标签的网页方案,本质是利用浏览器的跳转优先级,但App Link是系统级的拦截,更稳定且无需自己托管网页,完全可以替代该方案。
内容的提问来源于stack exchange,提问作者Seba99
相关产品推荐
相关产品推荐

