1. Cài đặt Server Deeplink

0 0 0

Người đăng: Khang Tran

Theo Viblo Asia

Bài viết này là phần đầu tiên trong seri: https://viblo.asia/s/huong-dan-chi-tiet-cai-dat-deeplink-trong-ung-dung-flutter-W13VMnzG4Y7

Tại sao cần server deeplink?

Vì server deeplink chỉ có nhiệm vụ cung cấp Url điều hướng đến Store nếu ứng dụng chưa được cài đặt, nên nếu ko có server vẫn làm được deeplink, nhưng sẽ chỉ mở được ứng dụng trong trường hợp ứng dụng đã được cài đặt sẵn, còn nếu ứng dụng chưa được cài đặt thì khi click sẽ không đi về đâu.

Hướng dẫn tạo Simple Server bằng Next.js để phục vụ Deeplink cho Flutter

Phần tiếp theo mình sẽ hướng dẫn bạn từng bước tạo một server đơn giản bằng Next.js để phục vụ cho việc tạo deeplink trong ứng dụng Flutter.

  1. Tạo dự án Next.js Cài đặt Node.js và npm: Đảm bảo bạn đã cài đặt Node.js và npm trên máy. Tạo dự án: Mở terminal và chạy lệnh:
Bash
npx create-next-app deeplink-server
  1. Tại thư mục public, tạo folder đặt tên .well-known image.png

Trong folder .well-known sẽ chứa file: assetlinks.json để chứa cấu hình cài đặt cho Android, và apple-app-site-asiciation để cấu hình cài đặt cho iOS, file index.html chỉ đơn giản là 1 text HelloWorld.

File: assetlinks.json

[{ "relation": ["delegate_permission/common.handle_all_urls"], "target" : { "namespace": "android_app", "package_name": "com.tntkhang.deeplink", "sha256_cert_fingerprints": ["E8:A1:F3:FE:5D:44:27:89:2D:09:F9:D0:11:DF:E8:C6:32:06:3D:F0:EC:C6:B9:55:EA:F3:12:F3:DF:6B:B4:A2"] } }]

Thay com.tntkhang.deeplink bằng package name của bạn, và thay sha256_cert_fingerprints bằng sha256 của keystore của ban (có thể là debug hoặc release) Để lấy sha256 của debug keystore trên máy Mac, chạy lệnh:

keytool -list -v -keystore ~/.android/debug.keystore -alias android -storepass android -keypass android

File: apple-app-site-association

{ "applinks": { "details": [ { "appIDs": ["TPHCM2024.com.tntkhang.DeepLink"], "components": [ { "/": "/*", "comment": "Matched any url" } ] } ] }
}

Thay TPHCM2024 bằng Team Id của provisioning thay com.tntkhang.DeepLink bằng bundleId của app iOS

OK ! Vậy là xong bước setup deeplink, để kiểm tra xem mình config đúng chưa thì khi run lên: npm run dev ứng dụng NextJs sẽ run ở port 3000. Url sẽ là: localhost:3000

Để check file apple-app-site-association bạn open url sau: localhost:3000/.well-known/apple-app-site-association

=> Nếu browser DOWNLOAD file này về trực tiếp thì bạn đã cài đặt Đúng,

image.png

ngược lại nếu browser chỉ show CONTENT json của file này thôi thì bạn đã setup SAI

image.png

  1. Xây dựng URL để Navigate to Store trong trường hợp ứng dụng chưa được cài đặt ở mobile. Sửa lại nội dung của file app/page.tsx bằng đoạn code sau:
"use client";
import { useEffect } from 'react'; export default function Home() { useEffect(() => { const userAgent = navigator.userAgent; const isIOS = /iPad|iPhone|iPod/.test(userAgent); const isAndroid = /Android/.test(userAgent); if (isIOS) { window.location.href = 'https://apps.apple.com/us/app/facebook/id284882215'; } else if (isAndroid) { window.location.href = 'https://play.google.com/store/apps/details?id=com.facebook.katana'; } }, []); return ( <div> <h1>Hello World</h1> </div> );
}

Trong trường hợp này mình để đường link đến ứng dụng facebook làm ví dụ, các bạn có thể thay đường link của ứng dụng các bạn trên store vào. Với đoạn code trên dê dàng nhận thấy ứng dụng sẽ kiểm tra userAgent đang là android hay iOS để navigate đúng store tương ứng, còn nếu ứng dụng dc mở bằng userAgent khác thì ứng dụng chỉ đứng yên tại chỗ và hiện Hello World. Bạn cũng có thể làm đẹp trang home này bằng vài đoạn text giới thiệu về ứng dụng và đường link đến store.

  1. Chạy ứng dụng Mở terminal tại vị trí ứng dụng và chạy cmd:
Bash
npm run dev

Khi ứng dụng chạy thành công sẽ hiện ra home screen với "Hello World"

  1. Deploy NextJS app to https://vercel.com/ Bạn login vào https://vercel.com/ bằng tài khoản Github. Bạn push project NextJs vừa build phía trên lên GitHub, nhớ khi tạo Repo trên GIthub bạn nên đặt tên liên quan dự án và ngắn gọn, sạch đẹp xíu vì nó sẽ hiển thị link khi sử dụng. Khi dự Án bên GitHub thành công thì Vercel sẽ hiển thị dự dán đó (khi bạn login bằng Github) để cho bạn Import vào và chọn Deploy luôn. image.png image.png Nhớ chọn đúng tên Branch cần deploy => Deploy

Sau khi deploy xong terminal sẽ in ra url cho bạn => Đây sẽ là baseUrl của bạn để sử dụng trong DeepLink

image.png

=> BaseUrl: share-tntkhang.vercel.app

Như vậy là xem như chúng ta đã xong với phần Server, phần tiếp theo tôi sẽ hướng dẫn các bạn cài đặt ở Native Android và Native iOS.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 212

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 101

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315