Deep Link - Liên Kết Sâu Trong Android
Deep Links - Liên kết sâu là gì ? Có thể nhiều bạn vẫn chưa hiễu rõ về deep links, nó là gì và được sử dụng như thế nào? Bài viết này, tôi sẽ hướng dẫn về một số căn bản của Deep Links và cách vận dụng nó để người dùng có thể tương tác với app nhiều hơn. Deep Links trong Android là một đường ...
Deep Links - Liên kết sâu là gì ?
Có thể nhiều bạn vẫn chưa hiễu rõ về deep links, nó là gì và được sử dụng như thế nào? Bài viết này, tôi sẽ hướng dẫn về một số căn bản của Deep Links và cách vận dụng nó để người dùng có thể tương tác với app nhiều hơn. Deep Links trong Android là một đường dẫn (URI) nào đó được chia sẻ trên nền tảng mobile và nó sẽ dẫn người dùng đến một màn hình nào đó trong ứng dụng bạn đặt vào. Ví dụ như bạn có một đường dẫn gửi về từ facebook là một đường link của người dùng nào đó. khi bạn click vào thì nó sẽ dẫn đến một trình duyệt web của bạn trong khi bạn vẫn đang sử dụng app. việc này gây khó chịu và không tương thích với người dùng. Vậy tại sao lại không dùng Deep Links? Nó giúp người dùng có thể vào ngay trong app họ đang cài đặt của bạn và có thể di chuyển đến ngay màn hình tương thích với URI đó. Như vậy sẽ khiến cho việc sử dụng của người dùng nhanh chóng hơn và tỷ lệ tương tác với app được nhiều hơn. Và sau đây tôi xin hướng dẫn một số bước căn bản để vận dụng Deep Links vào trong app của bạn. Demo Ở đây tôi tạo sẵn một project và đặt tên là Demo_Deep_Links Và tôi có một URI vd như: www.abc.com/id=1 Và mặc định khi bạn nhập hoặc click vào URI thì nó sẽ mở một trình duyệt và truy cập vào địa chỉ trên theo giao diện web. Và bạn muốn khi chọn URI đó thì đưa ra tuỳ chọn cho người dùng (mở app hoặc dùng trình duyệt). Để thêm một liên kết sâu vào app của bạn thì bạn phải thêm nó vào file AndroidManifests.xml như sau: 2 thẻ <action> và <data> là 2 thẻ yêu cầu luôn có , trong đó thẻ <action> là những gì sẽ xảy ra trong ứng dụng khi nhấp vào liên kết. Còn thẻ <data> chỉ định các URI nào được chấp nhận để mở ứng dụng khi nhấp vàp và bạn có thể cho nhiều thẻ <data> cho nhiều URI khác nhau. Ngoài ra android:launchMode="singleTask" có công dụng sẽ chỉ cho 1 ứng dụng chạy và xoá ứng dụng cũ khi ứng dụng mới mở. Nói hơi khó hiểu, nhưng khi bạn đang sử dụng ứng dung, bạn ẩn ứng dụng xuống chạy nền và bạn nhập vào URI để mở ứng dụng thì sẽ có hiện tượng 2 ứng dụng chạy 1 lần. android:launchMode="singleTask" bỏ trong thẻ <activity> sẽ giải quyết vấn đề này cho bạn. Như hình trên thì tôi khai báo 2 thẻ trên trong màn hình MainActivity.java . Vậy thì khi nhấp vào liên kết sâu, bạn chọn mở ứng dụng thì ứng dụng được mở lên và chạy vào màn hình MainActivit.java. Tôi sẽ thử cho các bạn xem. Trước tiên tôi build ứng dụng lên để cài đặt ứng dụng vào thiết bị. Và tôi có một URI như thế này Và khi click vào URI thì giao diện sẽ hiện lên tuỳ chọn cho người dùng muốn mở bằng ứng dụng đã cài đặt hoặc mở bằng trình duyệt và tôi chọn mở bằng ứng dụng Và ứng dụng đã được mở lên và màn hình hiển thị là màn hình MainActivity vì tôi đã gán vào màn hình MainAcitivty trong AndroidManifests.xml.
Đọc dữ liệu từ URI
Chắc các bạn vẫn thắc mắc sao lại có param "id=1" phía sau URI nó để làm gì? Tôi cho URI của tôi có kèm theo param "id=1" là có ý định cả. Tôi sẽ hướng dẫn bạn lấy dữ liệu từ URI truyền xuống. Trước tiên tôi tạo thêm một Activity đặt tên là OpenIDActivity .Tôi cho param "id=1" thì tôi sẽ get "ID" từ URI vào bằng Intent, và nếy "ID =1" thì sẽ tự dộng chuyển vào màn hình OpenIDActivity còn nếu khác thì nó vẫn sẽ ở màn hình MainActivity. Code trên MainActivity Code trên OpenIDActivity để lấy id từ màn hình MainActivity truyền qua Sau đó tôi nhấp vào URI "www.abc.com/id =1" thì cho ra kết quả Và khi nhấp vào URI "www.abc.com/id=2" thì cho ra kết quả Chúc các bạn thành công !