You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置使扫描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的Linking API就能实现:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:43:23