본문으로 건너뛰기
DeepLinking

How to Integrate Universal Links in Next.js with Capacitor

Next.js 앱에 Universal Links를 설정하는 방법에 대해 단계별로 배울 수 있습니다. Capacitor를 사용하여 iOS 및 Android 플랫폼에서 Universal Links를 설정하는 방법을 배울 수 있습니다.

작성 기여자

마틴 도나디유

작가

발레리아

리뷰어

조던

편집자

How to Integrate Universal Links in Next.js with Capacitor

iOS와 Android의 Universal links, App Links는 사용자가 링크를 클릭하여 앱으로 바로 이동할 수 있도록 해줍니다. 이 기능은 사용자 경험을 개선하고 웹 페이지에서 앱으로의 컨텍스트를 유지하는 데 유용합니다. 이 가이드에서는 Capacitor를 사용하여 Next.js 앱에 이러한 깊은 링크를 설정하는 과정을 안내합니다. attribution 및 deferred deep links에 대해 @capgo/capacitor-appsflyer 설치 캠페인을 올바른 인앱 화면으로 라우팅할 수 있습니다.

깊은 링크를 설정하는 데는 code가 많이 필요하지 않지만, 설정을 위해 몇 가지 구성이 필요합니다. 이 가이드를 마치면, 앱이 설치된 경우 링크를 클릭하여 올바른 페이지로 앱이 열리도록 설정할 수 있습니다. https://www.capgo.app/details/22 Next.js 깊은 링크 설정

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 ID __CAPGO_KEEP_0__.config.json capacitor.config.json __CAPGO_KEEP_0__

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

Next.js는 파일 기반 라우팅을 사용하므로, 파일을 생성하여 pages/details/[id].js, wildcard route를 이미 설정했습니다.

Next.js의 내장 라우터를 사용하여 pages/details/[id].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 event with Capacitor. This event is triggered when the app is opened via a custom URL scheme. Add a listener in the 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

This code listens for the appUrlOpen 이벤트를 감지하고, Next.js 앱 내의 적절한 경로로 이동합니다.

iOS 설정

iOS에서는 앱 ID에 Associated Domains를 활성화해야 합니다. apple-app-site-association 파일에 다음 내용을 포함하고, YOURTEAMID 그리고 com.your.bundleid 실제 팀 ID 및 번들 ID를 입력하세요:

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

이 파일을 도메인의 .well-known 디렉토리에 업로드하여 https://www.capgo.app/.well-known/apple-app-site-association.

Xcode에서 앱의 권한에 도메인을 추가하세요. 형식은 applinks:capgo.app.

Android Configuration

Android 앱 링크를 위해 다음 단계를 따르세요:

  1. 키스토어 파일을 생성하세요. 만약 키스토어 파일이 없다면.
  2. SHA256 서명으로 키스토어에서 서명 정보를 얻으세요.
  3. 자산 링크 JSON 파일을 생성하세요. assetlinks.json 패키지 이름과 SHA256 지문으로 구성된 파일을 만드세요.
  4. 이 파일을 .well-known 에서 업로드하세요.

에서 AndroidManifest.xml, intent-filteractivity 을 추가하세요. 이

<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 이 파일을 업로드한 후,

의 디지털 자산 링크 도구를 사용하여 확인할 수 있습니다. 모든 설정이 올바르게 구성되어 있다면, 녹색 체크 표시를 볼 수 있습니다.

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 Configure for Native Project Settings

자동 프로젝트 설정을 자동화하기 위해 고려해 볼 수 있는 것은 Capacitor configure 패키지를 사용하는 것입니다.__CAPGO_KEEP_0__ configure 패키지를 프로젝트에 설치하세요:

npm install @capacitor/configure

프로젝트의 루트 디렉토리에 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

__CAPGO_KEEP_0__ configure 도구를 이 구성 파일과 함께 실행하세요:

npx cap-config run capacitor.config.yaml

이러한 설정은 YAML 파일에 지정된 설정을 네이티브 프로젝트에 적용합니다.

결론

Capacitor를 사용하여 Next.js 앱에 대한 깊이 링크를 설정하는 것은 iOS와 Android의 도메인 및 프로젝트 설정을 구성하는 것입니다. 프로세스는 세부 사항에 주의를 기울이는 것이지만 이전 방법에 비해 더 간소화되어 있으며 추가 플러그인을 설치할 필요가 없습니다. 도메인 확인 파일이 올바르게 제공되는지 확인하고 각 플랫폼의 도구를 사용하여 확인하세요. 설정이 완료되면 앱은 웹 링크에서 무결점으로 열리며, 사용자가 웹에서 앱으로의 전환을 원활하게 하여 사용자 경험을 향상시킵니다.

How to Integrate Universal Links in Next.js with __CAPGO_KEEP_0__를 사용하는 경우 Capacitor native 플러그인 작업을 계획하기 위해, 그것을 연결하세요. Capgo 플러그인 디렉토리 Capgo 플러그인 디렉토리에서 제품 워크플로우 Capacitor 플러그인들에 의해 Capgo Capacitor 플러그인들에 의해 Capgo의 구현 세부 사항 플러그인 추가 또는 업데이트 플러그인 추가 또는 업데이트의 구현 세부 사항 Ionic Enterprise 플러그인 대체 Ionic Enterprise 플러그인 대체의 제품 워크플로우, 그리고 Capgo 네이티브 빌드 Capgo 네이티브 빌드의 제품 워크플로우.

Capacitor 앱에 대한 실시간 업데이트

Capacitor 앱에서 웹-layer 버그가 생겼을 때, 앱 스토어 승인 대기 없이 Capgo를 통해 픽스를 배포하세요. 사용자는 배경에서 업데이트를 받으며, 네이티브 변경 사항은 일반적인 리뷰 경로를 따릅니다.

Capgo는 앱 스토어 승인 대기 없이 __CAPGO_KEEP_0__를 통해 사용자에게 빠르게 업데이트를 제공합니다.

Capgo에서 인간 지원을 받으세요.

__CAPGO_KEEP_0__ 시작하기

Capgo gives you the best insights you need to create a truly professional mobile app.