如何在Next.js中集成Universal Links
DeepLinking

How to Integrate Universal Links in Next.js with Capacitor

Learn step by step how to set up universal links for your Next.js app with Capacitor on both iOS and Android platforms.

Martin Donadieu

Martin Donadieu

内容营销人员

How to Integrate Universal Links in Next.js with Capacitor

在iOS上使用universal links和在Android上使用App Links允许用户从链接直接进入您的应用程序,而不需要浏览器。这对于改善用户体验并在网页和应用程序之间保持上下文非常有用。在本指南中,我们将逐步介绍如何使用Capacitor为Next.js应用程序设置这些深度链接。对于归因和延迟深度链接 @capgo/capacitor-appsflyer 可以将安装营销活动路由到正确的应用程序屏幕。

设置深度链接并不需要很多code,但它确实需要一些配置。通过本指南的结束,您将能够点击类似于 https://www.capgo.app/details/22 并且如果已安装,应用程序将打开到正确的页面。

首先,我们将创建一个新的 Next.js 应用程序和用于测试的详细页面:

npx create-next-app@latest capgoLinks
cd capgoLinks
mkdir pages/details
touch pages/details/[id].js
npm run build
npx cap add ios
npx cap add android

确保您的 bundle IDcapacitor.config.json 文件中正确设置,因为它对于设置至关重要:

{
  "appId": "com.capgo.deeplinks",
  "appName": "capgoLinks",
  "webDir": "out",
  "bundledWebRuntime": false
}

对于路由,Next.js 使用基于文件的路由,因此通过在 pages/details/[id].js中创建一个文件,我们已经设置了通配符路由。

pages/details/[id].js中,我们可以使用 Next.js 内置的路由器从 URL 中检索 ID:

import { useRouter } from 'next/router'

function DetailsPage() {
  const router = useRouter()
  const { id } = router.query

  return (
    <div>
      <p>My ID: {id}</p>
    </div>
  )
}

export default DetailsPage

现在,让我们处理 appUrlOpen 事件与 Capacitor。这个事件在应用程序通过自定义 URL 方案打开时触发。添加一个监听器在 pages/_app.js 文件:

import { useEffect } from 'react'
import { App } from '@capacitor/app'

function MyApp({ Component, pageProps }) {
  useEffect(() => {
    App.addListener('appUrlOpen', (event) => {
      const slug = event.url.split('.app').pop()
      if (slug)
        window.location.href = slug

    })
  }, [])

  return <Component {...pageProps} />
}

export default MyApp

这个 code 监听事件并在您的 Next.js 应用程序中导航到适当的路由。 appUrlOpen iOS 配置

对于 iOS,您需要一个具有 Associated Domains 启用的应用 ID。创建一个

apple-app-site-association 文件,以下内容,替换YOURTEAMID 您的实际团队 ID 和包 ID: com.your.bundleid 将此文件上传到

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOURTEAMID.com.your.bundleid",
        "paths": ["*"]
      }
    ]
  }
}

iOS 配置 .well-known 在您的域名下创建一个目录,使其可在 https://www.capgo.app/.well-known/apple-app-site-association.

在 Xcode 中,使用格式 applinks:capgo.app.

Android 配置

为 Android App Links,遵循以下步骤:

  1. 如果您没有一个,请生成一个密钥库文件。
  2. 从密钥库中获取 SHA256 指纹。
  3. 创建一个 assetlinks.json 文件,包含您的包名和 SHA256 指纹。
  4. 将此文件上传到您的 .well-known 目录。

在您的 AndroidManifest.xml, 添加一个 intent-filter 到处理深度链接的元素: activity 上传文件后,您可以使用 Google 的数字资产链接工具验证它。如果设置正确,您将看到一个绿色的勾选标记。

<activity ...>
  <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="capgo.app" />
  </intent-filter>
</activity>

要构建和签署您的应用,请使用以下命令: assetlinks.json 这将在您的连接的 Android 设备上安装已签名的应用。

__CAPGO_KEEP_0__ 配置本机项目设置

cd android
./gradlew assembleRelease
cd ..
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android/app/build/outputs/apk/release/app-release-unsigned.apk alias_name
zipalign -v 4 android/app/build/outputs/apk/release/app-release-unsigned.apk capgo.apk
adb install capgo.apk

为了自动化本机项目设置,请考虑使用

Capacitor 配置包

。在您的项目中安装它: Capacitor configure packagea

npm install @capacitor/configure

to capacitor.config.yaml 在你的项目根目录下:

vars:
  BUNDLE_ID: com.capgo.deeplinks
  PACKAGE_NAME: com.capgo.deeplinks
platforms:
  ios:
    targets:
      App:
        bundleId: $BUNDLE_ID
    entitlements:
      - com.apple.developer.associated-domains: ['applinks:capgo.app']
  android:
    packageName: $PACKAGE_NAME

使用此配置运行配置工具:

npx cap-config run capacitor.config.yaml

这将应用 YAML 文件中指定的设置到你的原生项目中。

结论

在 Next.js 应用中使用 Capacitor 设置深度链接涉及配置你的域名和项目设置,适用于 iOS 和 Android。虽然这个过程需要注意细节,但它比以前的方法要流畅得多,并不需要额外的插件。确保你的域名验证文件正确服务,并使用相应平台工具检查它们。一旦设置完成,你的应用将从 web 链接中无缝打开,提供了从 web 到应用的smooth过渡给你的用户。

如果你正在使用 How to Integrate Universal Links in Next.js with Capacitor 来规划原生插件工作,连接它与 Capgo 插件目录 为 Capgo 插件目录中的产品工作流程 Capacitor 由 Capgo 提供 for the implementation detail in Capacitor Plugins by Capgo, 添加或更新插件 对于在添加或更新插件中实现的细节 Ionic 企业插件替代品 对于 Ionic 企业插件替代品中的产品工作流程 Capgo 本机构建 对于 Capgo 本机构建中的产品工作流程

Capacitor 应用实时更新

当 web 层面的 bug 活跃时,通过 Capgo 将修复推送到用户端,而不是等待几天的 app store 审批。用户在后台接收更新,而原生变化保持在正常的审批路径中。

立即开始

最新博客文章

Capgo 为您提供创建真正专业的移动应用所需的最佳见解。