如何配置使扫描NFC标签时自动打开Expo构建的React Native应用
如何配置使扫描NFC标签时自动打开Expo构建的React Native应用
嘿,我来帮你搞定这个NFC唤起Expo应用的问题!既然你已经确认网站链接能正常唤起应用(说明assetlinks.json配置没问题),那咱们接下来就把NFC的部分补全,一步步来:
第一步:确认NFC标签的URL匹配关联域名
你用的https://my-web.com/tag/login这个URL完全没问题,只要域名和你配置关联的一致就行。注意检查标签里的URL有没有拼写错误,必须是完整的HTTPS链接哦。第二步:配置Expo应用的关联规则
打开项目里的app.json(或者app.config.js),添加对应平台的配置,告诉系统哪些URL要唤起你的应用:{ "expo": { // 其他已有配置... "ios": { "associatedDomains": ["applinks:my-web.com"] }, "android": { "intentFilters": [ { "action": "VIEW", "data": [ { "scheme": "https", "host": "my-web.com", "pathPrefix": "/tag/login" } ], "category": ["BROWSABLE", "DEFAULT"] } ] } } }这里iOS用
associatedDomains绑定域名,Android用intentFilters精准匹配/tag/login路径,这样系统就知道这个路径的链接该唤起你的应用了。第三步:处理应用内的唤起逻辑
当NFC标签唤起应用后,你可能需要处理这个链接对应的业务(比如登录),用Expo的LinkingAPI就能实现:import { Linking, useEffect } from 'react-native'; export default function App() { useEffect(() => { const handleDeepLink = (event) => { const url = event.url; // 这里根据URL做你需要的操作,比如跳转到登录页 if (url.includes('/tag/login')) { console.log('通过NFC标签唤起应用啦,URL:', url); // 比如导航到登录页面:navigation.navigate('Login'); } }; // 处理应用刚启动时的唤起链接 Linking.getInitialURL().then(url => { if (url) handleDeepLink({ url }); }); // 监听后续的链接唤起事件 const subscription = Linking.addEventListener('url', handleDeepLink); return () => subscription.remove(); }, []); // 你的应用其他代码... }第四步:重新构建并部署应用
因为修改了app.json的配置,你需要重启开发服务(expo start --clear),如果是生产环境,得重新打包提交到应用商店——这些配置必须打包进应用才能生效哦。第五步:测试NFC标签
现在扫描你的NFC标签,系统应该会弹出选项让你打开应用,或者直接唤起应用(取决于手机系统设置)。如果还是有问题,可以再检查下:assetlinks.json是否放在网站的.well-known目录下(比如https://my-web.com/.well-known/assetlinks.json),内容里的Android包名、SHA256指纹是否和你的应用一致- 如果要支持iOS,别忘了配置
apple-app-site-association文件,同样放在根目录或.well-known下 - 应用的包名(Android)、Bundle ID(iOS)是否和关联文件里的完全匹配
备注:内容来源于stack exchange,提问作者Melchy
相关产品推荐
相关产品推荐

