Blog Hiểu tường tận về deep linking

Hiểu tường tận về deep linking

Deep linking là công nghệ được sử dụng trong ứng dụng di động. Khi người dùng click vào một đường link (URL) trên trang web hoặc trong một ứng dụng khác, thì deep linking sẽ mở ứng dụng và đưa người dùng đến thẳng trang họ cần. Để đem đến trải nghiệm tốt nhất cho người dùng và tăng tỷ lệ chuyển đổi, bạn tuyệt đối không nên bỏ qua deep linking. Bài viết dưới đây cung cấp hướng dẫn tạo deep link và các thông tin quan trọng khác.

Lý do bạn cần đến deep linking

Giả sử rằng bạn vừa phát hành một ứng dụng âm nhạc. Để mừng một bài hát mới, bạn chi thật nhiều tiền để chạy quảng cáo trên một trang web nổi tiếng. Trong quảng cáo đó, bạn đăng lên một đoạn trích nhỏ từ bài hát, và bạn muốn người dùng nghe đoạn trích đó từ ứng dụng của bạn chứ không phải ngay trên trang web đó, tất cả những gì họ thấy trên trang chỉ là bìa album.

Một ví dụ khác, giả sử bạn muốn thu hút lại người dùng ít tương tác và ít hoạt động trên ứng dụng, nên bạn quyết định chạy một chiến dịch khuyến mãi. Khi người dùng click vào quảng cáo, họ sẽ được đưa đến thẳng trang khuyến mãi trong ứng dụng, không phải tìm kiếm loanh quanh trong ứng dụng hay gõ tay mã khuyến mãi. Cả hai ví dụ trên đều có sự góp mặt của deep linking: tất cả chứng minh một điều, deep linking giúp bạn hiện thực hóa các loại chiến dịch kể trên.

Deep linking giúp cải thiện trải nghiệm của người dùng, đồng thời làm tăng tỷ lệ chuyển đổi (conversion rate) và tỷ lệ duy trì (retention rate). Để biết thêm thông tin, bạn có thể tham khảo bài viết tác động của deep linking lên chiến dịch.

Lý do deep linking ra đời

Như chúng tôi đã từng đề cập, deep linking giúp người dùng chuyển hướng giữa trang web và ứng dụng một cách dễ dàng hơn. Nhà quảng cáo (advertiser) cũng thành công hơn trong việc chuyển đổi người dùng (thuyết phục người dùng mua hàng, đăng ký thuê bao, v.v.).

Để hiểu rõ hơn, hãy cùng lấy một ví dụ. Bạn muốn chạy quảng cáo quà mừng Giáng Sinh để kéo người dùng đến với ứng dụng thương mại điện tử của bạn. Ở trang quảng cáo, bạn đưa “quà mừng Giáng Sinh” thành một mục riêng, và đăng tải hình ảnh quà mừng sẵn có trong kho. Nhưng bạn muốn người dùng xem các sản phẩm này trong ứng dụng, thay vì trên trang web. Lúc này, bạn sẽ cần đến deep linking. Nếu người dùng đã cài ứng dụng, thì khi họ click vào đường link, ứng dụng sẽ mở ra và (trong một số trường hợp) hiện ngay trang sản phẩm.

Giữ chân người dùng cũng là một trong các mục đích chính của deep linking. Deep linking giúp người dùng sử dụng ứng dụng thuận tiện hơn. Công cụ này còn có đóng góp quan trọng trong chiến dịch tái tương tác (retargeting campaign), giúp thu hút lại người dùng đã từng tương tác với ứng dụng. Cuối cùng, deep linking mang đến một phương pháp linh hoạt để chuyển hướng người dùng giữa trang web và ứng dụng, đem đến trải nghiệm tuyệt vời, từ đó tăng doanh số bán hàng, tỷ lệ chuyển đổi và tỷ lệ duy trì.

Hai loại deep link

Deep link có hai loại: default deep link và deferred deep link.

Default deep link

Default deep link chỉ chuyển hướng người dùng đến ứng dụng nếu ứng dụng đã được cài về máy. Nếu người dùng chưa cài ứng dụng, thì đường link không thể liên kết với endpoint của ứng dụng, và thông báo lỗi sẽ hiện lên.

Default deep link thích hợp với chiến dịch tái tương tác, vì lúc này người làm marketing chỉ quan tâm đến người dùng đã có ứng dụng trong máy, và muốn họ quay lại tương tác với ứng dụng.

Deferred deep link

Deferred deep link hoạt động phức tạp hơn default deep link. Deferred deep link có thể chuyển hướng người dùng đến App Store hoặc Play Store để tải ứng dụng về máy (hoặc đến một địa chỉ khác, như trang web của ứng dụng), và sau khi người dùng mở ứng dụng lên, thì trang mà họ muốn xem sẽ hiện lên.

Ví dụ, người dùng thích đôi giày đang được quảng cáo, quyết định click vào quảng cáo, nhưng họ lại chưa có ứng dụng thương mại điện tử bán đôi giày đó trong máy, thì trước tiên họ sẽ được chuyển hướng đến store để tải ứng dụng về. Sau đó, khi người dùng mở ứng dụng lên, họ sẽ được đưa đến trang bán đôi giày đó.

Bạn chỉ có thể triển khai deferred deep link khi sử dụng giải pháp deep linking, giống như giải pháp Adjust đang cung cấp. Deferred deep link được tạo qua tích hợp SDK, và bạn có thể tham khảo thêm thông tin tại đây đối với Android và tại đây đối với iOS.

Contextual deep linking?

Rất có thể bạn đã từng nghe đâu đó cụm từ contextual deep linking. Đường link dạng này mang đến một lợi thế bổ sung, đó là trữ được nhiều thông tin hơn, từ đó giúp người làm marketing thỏa sức sáng tạo hơn.

Để tạo contextual deep link, bạn có thể thêm tham số vào default deep link và deferred deep link. Đường link dạng này không tự xuất hiện.

Cách thức tạo deep link

Hãy bắt đầu từ bước cơ bản nhất: tạo một deep link. Quy trình tạo deep link thường phát sinh nhiều bất cập, và đòi hỏi bộ phận phát triển và bộ phận marketing phải liên tục trao đổi với nhau, nhiều khi vì những việc không cần thiết, để đảm bảo đường link được triển khai hiệu quả trong ứng dụng và đưa người dùng đến nội dung họ muốn.

Ngoài ra, ngồi tạo deep link theo cách thủ công cũng mất nhiều thời gian. Bạn cũng dễ mắc sai lầm trong quá trình làm. Như mọi URL khác, chỉ cần gõ sai một chữ, thì deep link đã không thể hoạt động, và ngay cả kỹ sư giỏi nhất thế giới thì đôi khi cũng phạm vài lỗi sai ngớ ngẩn. Phương án tốt nhất là tìm kiếm giải pháp tự động tạo deep link, qua đó bạn có thể dành tối đa thời gian và nguồn lực cho công tác tối ưu hóa chiến dịch và chiến lược quảng cáo.

Tóm lại, bạn sẽ cần đến một công cụ vừa dễ sử dụng vừa tự động tạo deep link để đảm bảo deep link hoạt động tốt và ít gặp lỗi sai. Hãy thử tìm hiểu Adjust Deeplink Generator, đây là công cụ hỗ trợ tạo hoàn chỉnh deep link URL, cho dù đó là App Link (Android) hay Universal Link (iOS), giúp bạn không còn gặp nhiều khó khăn khi phải tự mình triển khai deep link.

Cả hai cách tạo deep linking — sử dụng scheme (AndroidiOS) và sử dụng iOS 9+ Universal Link — đều đã được hướng dẫn chi tiết. Cách làm cơ bản là giống nhau: gán một URL (nếu sử dụng scheme, youapp://; nếu sử dụng universal link , https://yourdomain.com/) vào ứng dụng. Khi người dùng click vào URL này, hệ thống sẽ mở ứng dụng nếu ứng dụng đã được cài trong máy.

Nhưng thế giới vốn không hoàn hảo. Bạn có lẽ sẽ thắc mắc, nếu người dùng chưa cài ứng dụng thì sao. Câu trả lời là, họ sẽ thấy một thông báo lỗi hoặc không có gì xảy ra cả. Mặc dù bạn không có cách nào trực tiếp biết được liệu ứng dụng có trên thiết bị hay không, nhưng có một số cách bạn có thể áp dụng để “dò hỏi” ứng dụng và biết được nó đã được cài; hay để đưa người dùng đến App Store, đến trang web, hay đến bất kỳ một địa chỉ nào khác nếu ứng dụng chưa được cài.

Như chúng tôi có nói ở trên, deep link dựa trên scheme (scheme-based deep linking) (AndroidiOS) và iOS 9+ Universal Link đều đã được hướng dẫn một cách chi tiết. Vậy hãy cùng tìm hiểu cơ chế hoạt động của các deep link này.

Triển khai deep link trên Android

Để hiểu rõ hơn, hãy cùng nghiên cứu ví dụ sau. Deep link URL của bạn sẽ là yourapp://path/, và Bundle ID sẽ là com.yourapp.example.

Giải pháp JavaScript

Có một giải pháp thường được dùng để giải quyết vấn đề này, đó là sử dụng iframe để tải deep link URL, sau đó tạo delayed JavaScript để chuyển hướng người dùng đến store:

Lúc này, trình duyệt sẽ thử tải yourapp://path/ trước.

  • Nếu ứng dụng đã có trong máy, thì ứng dụng sẽ được mở ra và lệnh JavaScript tiếp theo sẽ không chạy.
  • Nếu ứng dụng chưa có trong máy, thì không có gì xảy ra khi trình duyệt tải yourapp://path/. Sau khoảng 2 giây, JavaScript sẽ chuyển hướng trang sang Play Store, để người dùng có thể tải ứng dụng về.

Nhưng đoạn code trên có một chút vấn đề, đó là ngay cả khi ứng dụng đã được mở, và người dùng đã quay lại trình duyệt, nhưng JavaScript vẫn chạy và lại chuyển hướng người dùng đến Play Store. Vì vậy, bạn cần thực hiện một số hoạt động tối ưu hóa, kiểm tra thời điểm người dùng quay lại trình duyệt để xem họ có cần được chuyển hướng lại về store hay không:

Giải pháp Intent

Kể từ phiên bản Chrome for Android 25 trở về sau, đoạn code trên sẽ ngừng hoạt động, bạn có thể tìm hiểu thêm trong tài liệu của Chrome. May là, Google đã cung cấp Intent URL, một giải pháp mang lại hiệu quả tốt hơn. Khi người dùng click vào URL intent://path/#Intent;scheme=yourapp;package=com.yourapp.example;end, sau đó

  • nếu ứng dụng đã có trong máy, thì Chrome sẽ mở ứng dụng.
  • nếu ứng dụng không có trong máy, thì Chrome sẽ mở Play Store.

Giải pháp deep link nên sử dụng

Chúng tôi đánh giá cao giải pháp Intent vì dễ triển khai và đem đến trải nghiệm tốt hơn cho người dùng. Nhưng để sử dụng giải pháp này, bạn cần hỗ trợ từ trình duyệt. Không may là, hệ thống Android quá phân mảnh nên khá nhiều hệ điều hành và trình duyệt cũ vẫn còn đang hoạt động. Hơn nữa, Android WebView, mặc dù được rất nhiều ứng dụng sử dụng, lại không mặc định hỗ trợ Intent URL. Bảng bên dưới cho biết giải pháp bạn nên sử dụng đối với từng trình duyệt Android (lưu ý, bảng chỉ nêu những trình duyệt phổ biến):

Trình duyệt JavaScript Intent
Chrome 24 trở xuống
Chrome 25 trở lên
Firefox
Android Browser
Facebook in-app Browser
Twitter in-app Browser
Các trình duyệt khác

Triển khai deep link trên iOS

Hãy giả sử deep link URL là yourapp://path/ và app ID trên App Store là 12345678.

Giải pháp JavaScript

Giống bên Android, bạn cũng có thể triển khai deep link trên iOS nhờ một mẹo JavaScript:

html <script>

window.location.replace("yourapp://path/"); setTimeout(function () {

window.location.replace("https://itunes.apple.com/app/id12345678"); }, 2000);

</script>

  • nếu ứng dụng đã có trong máy, thì đoạn relocation code đầu tiên sẽ mở ứng dụng và đoạn script tiếp theo sẽ không chạy.
  • nếu ứng dụng chưa có trong máy, thì đoạn relocation code đầu tiên sẽ không có tác dụng gì, và hàm timeout sẽ chuyển hướng người dùng đến App Store.

Nhưng theo như chúng tôi nghiên cứu, script này hoạt động tốt trên iOS 8 trở xuống với trình duyệt Safari, và không phải lúc nào cũng hoạt động trên các phiên bản cao hơn. Bảng dưới đây cung cấp thông tin chi tiết:

Trình duyệt JavaScript
iOS 8 trở xuống Safari
iOS Chrome
iOS 8 Facebook in-app Browser √*
iOS 8 Twitter in-app Browser
iOS 9 trở lên

* hoạt động một phần, tùy thuộc phiên bản của ứng dụng Facebook

Giải pháp universal link

Khi tung ra phiên bản iOS 9, Apple đã phát hành universal link. Giải pháp này cũng tương tự Intent bên Android nhưng có nhiều bước cài đặt hơn. Hơn nữa, kể từ iOS 9.2, giải pháp JavaScript đã ngừng hoạt động vì Apple chuyển sang sử dụng cửa sổ non-modal.

Để kích hoạt universal link, bạn cần có một tên miền gắn liền với ứng dụng và đã được xác thực qua chứng chỉ số SSL, và cần một JSON file đặc biệt trong https://yourdomain.com/apple-app-site-association :

File này sẽ cho thiết bị biết đường dẫn nào được sử dụng làm deep link, và cho ứng dụng nào.

Sau đó, trong Xcode, bạn cần nhập applinks:yourdomain.com vào com.apple.developer.associated-domains entitlement:

Một tên miền có thể liên kết với nhiều ứng dụng và ngược lại.

Tiếp theo, bạn cần sử dụng phương thức UIApplicationDelegate cho Handoff (cụ thể application:continueUserActivity:restorationHandler:), như vậy ứng dụng có thể nhận được một đường link và xử lý đường link đó một cách thích hợp.

Giả sử bạn liên kết tên miền https://yourdomain.com/dress/ với ứng dụng bằng cách đặt "paths":[ "/dress/"] trong JSON file. Khi người dùng click vào đường link https://yourdomain.com/dress/1 trong trình duyệt Safari,

  • nếu ứng dụng đã có trong máy, thì ứng dụng sẽ được mở và https://yourdomain.com/dress/1 sẽ được gửi đến UIApplicationDelegate. Bạn có thể xử lý đường link tại đây và quyết định View nào sẽ được mở.
  • nếu ứng dụng chưa có trong máy, thì https://yourdomain.com/dress/1 sẽ được mở trên Safari và bạn có thể hiển thị sản phẩm trên trang web hoặc chuyển hướng người dùng đến App Store.

Universal links nghe có vẻ là một giải pháp trọn vẹn dành cho iOS. Nhưng giải pháp nào cũng có nhược điểm của nó.

  • Universal link chỉ hoạt động trên Safari và Chrome.
  • Khi một trang web khác chuyển hướng người dùng bằng universal link, thì đường link chỉ hoạt động nếu người dùng đang sử dụng trình duyệt Safari và Chrome. Ví dụ, nếu có một đường link trong ứng dụng email là https://anotherDomain.com/, và link này chuyển hướng đến universal link https://yourDomain.com/dress/1, thì nó sẽ không deep link đến ứng dụng của bạn. Nhưng nếu người dùng click vào đường link https://anotherDomain.com từ Safari, thì đường link vẫn hoạt động bình thường.
  • Universal link không chạy nếu bạn dán trực tiếp đường link vào thanh địa chỉ.
  • Universal link không chạy nếu lệnh chuyển hướng do JavaScript kích hoạt.
  • Universal link không chạy nếu bạn tự động mở đường link trong ứng dụng (ví dụ, với openUrl)

Chào mừng bạn đến với thế giới của deep link!

Deep linking trên ứng dụng di động là một cơ chế phức tạp – không có một giải pháp nào áp dụng được hết trong tất cả trường hợp. Dù vậy, Adjust đã liệt kê các trường hợp sử dụng phổ biến nhất và xây dựng được một chiến lược hiệu quả nhất để đảm bảo deep linking luôn hoạt động ổn định.

Chúng tôi đã viết rất nhiều bài về deep link, bạn có thể tìm đọc để nắm thêm thông tin. Trước hết, đừng bỏ qua hướng dẫn deep link của chúng tôi. Hướng dẫn phân tích cơ chế hoạt động của deep link, đồng thời giải thích điểm đặc biệt của Adjust deep link. Chúng tôi cũng có một vài bài blog về đề tài này, ví dụ bài phân tích điểm khác biệt của Universal linking, hay bài đưa ra cái nhìn tổng quan về lợi ích của deep linking. Bạn cũng có thể xem qua tài liệu của chúng tôi, hay bài viết cách triển khai universal link đơn giản nhất với Adjust.

Chúng tôi cũng sẵn lòng trả lời mọi câu hỏi trên trang hỗ trợ.

Bạn muốn nhận thông tin mới nhất theo tháng? Đăng ký để nhận tin qua mail.