12/08/2018, 17:31

Deep Link Trong Android

Trong bài viết này tôi và các bạn chúng ta sẽ cùng nhiều tìm hiểu Deep Link trong Android Bạn đã thử đặt cho mình một câu hỏi như này chưa !! Tôi có thể mở ứng dụng của tôi bằng cách click vào một URL không ?? Có. Với deep linking chúng ta hoàn toàn có thể làm được điều đó. Bạn không cần ...

Trong  bài viết này tôi và các bạn chúng ta sẽ cùng nhiều tìm hiểu Deep Link trong Android Bạn đã thử đặt cho mình một câu hỏi như này chưa !!

Tôi có thể mở ứng dụng của tôi bằng cách click vào một URL không ??

Có. Với deep linking chúng ta hoàn toàn có thể làm được điều đó. Bạn không cần phải chạm vào icon của app từ màn hình home trên điện thoại của bạn. Ứng dụng sẽ tự động được khởi động khi click vào một URL. Ngoài ra nó còn cho phép bạn gửi dữ liệu (data) từ URL tới ứng dụng của bạn (hay còn gọi là những param truy vấn). Như trong tài liệu chính thức trên trang android developer : *When a clicked link or programmatic request invokes a web URI intent, the Android system tries each of the following actions, in sequential order, until the request succeeds:

  • Open the user’s preferred app that can handle the URI, if one is designated
  • Open the only available app that can handle the URI
  • Allow the user to select an app from a dialog*

Chúng ta cần add intent filters vào trong ứng dụng của chúng ta để xử lý những liên kết với những thuộc thính và thành phần sau: <action>, <data> and <category> . Những cái này sẽ cho phép hệ thống của chúng ta biết ứng dụng của chúng ta sẽ xử lý những loại URL cụ thể nào. Đọc đến đây bạn sẽ có một chút bỡ ngỡ. Nhưng đừng lo, bạn sẽ hiểu ngay sau khi xem ví dụ bên dưới. Ở đây chúng ta cần xác định scheme, host and pathPrefix trong tag <data>

<intent-filter>
 <action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
 <category android:name=”android.intent.category.BROWSABLE” />
<data android:scheme=”http”
 android:host=”www.example.com"
 android:pathPrefix=”/gizmos” />
</intent-filter>

Ví dụ ở trên chỉ xử lý http://www.example.com/gizmos Đến đây bạn sẽ thấy thật dễ dàng đúng không. Vậy có cách nào để xử lý nhiều URL cho cùng một ứng dụng không ??

Câu trả lời là có. Bạn có thể add nhiều tag <intent -filter> để xử lý nhiều URL . Ngoài ra bạn có thể cũng add nhiều tag <data> vào trong <intent-filter> (ví dụ bên dưới) . Nhưng để tăng khả năng dễ đọc, dễ hiểu và giải thích rõ ràng ý định của bạn thì tốt hơn hết là bạn tách ra trong các tag <intent-filter>.

<intent-filter>
 <action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
 <category android:name=”android.intent.category.BROWSABLE” />
<data android:scheme=”http”
 android:host=”www.example.com"
 android:pathPrefix=”/gizmos” />
<data android:scheme=”http”
 android:host=”www.example.com"
 android:pathPrefix=”/foobar” />
</intent-filter>

Bây giờ nó sẽ xử lý 2 URL http://www.example.com/gizmos and http://www.example.com/foobar

Như ở trên tôi đã đề cập tới việc làm sao chúng tao có thể gửi data từ URL tới app. Làm thế nào chúng ta có thể làm việc đó . Bên dưới là một URL với dummy data được gửi cùng với URL đó.

** http://www.example.com/gizmos?data=12345**

Bây giờ chúng ta cần xử lý trong phương thức onCreate() của Activity . Chỉ cần thêm những dòng code bên dưới sau setContentView()

Intent intent = getIntent();
Uri data = intent.getData();

Ngoài ra bạn có thể có một custom schemes giống như abc thay thế cho https hoặc http . Nhìn ví dụ bên dưới cho URL này abc://www.example.com/gizmos

<intent-filter>
 <action android:name=”android.intent.action.VIEW” />
<category android:name=”android.intent.category.DEFAULT” />
 <category android:name=”android.intent.category.BROWSABLE” />
<data android:scheme=”abc”
 android:host=”www.example.com"
 android:pathPrefix=”/gizmos” />
</intent-filter>

Android Studio giúp dễ dàng kiểm thử các deep link. Nhấp vào Run > Edit Configurations để chỉnh sửa cấu hình của dự án.

Mở tab General ở trên cùng và nhập URI vào trong trường Deep Link ở trong phần Launch Options. Khi bạn khởi chạy ứng dụng của bạn bằng Android Studio, nó sẽ cố gắng mở URI được chỉ định.

Tổng kết

Bây giờ thì bạn đã biết cách làm thế nào để tạo và sử dụng các deep link, bạn có thể mở những cánh cửa mới cho người dùng tương tác với ứng dụng của bạn. Người dùng có thể sử dụng tìm kiếm Google trên thiết bị của họ để tìm kiếm các trang bên trong ứng dụng của bạn và bạn có thể tạo các thông báo mở một trang cụ thể ở trong ứng dụng của bạn khi được nhấp vào.

0