title image

Hello ae, hôm nay chúng ta sẽ cùng tìm hiểu về làm như nào để sử dụng deep links trong ứng dụng IOS nhé.

Giả sử giờ bạn của bạn gửi cho bạn 1 đường dẫn đến chiếc áo cô ấy thích trong ứng dụng thời trang. Khi bạn click vào đường link, nếu bạn đã cài ứng dụng thì ứng dụng có thể mở lên và hiển thị page cùng chiếc áo sơ mi. Nhưng nếu bạn chưa cài ứng dụng thì không có điều gì xảy ra hoặc điều hướng đến app store để bạn cài đặt ứng dụng.

Thông thường để đi tới được page đó bạn có thể đi từ màn hình chính rồi vào màn danh sách rồi vào màn tìm kiếm rồi mới đi đến được chiếc áo đó (có thể có nhiều cách nhưng mình lấy ví dụ cách thông thường). Nhưng nếu bạn truy cập trực tiếp đến page mà chiếc áo sơ mi thì bạn có nghĩ là nó hoạt động như nào không ?

Đúng thế, chính là sử dụng Deep Links.

Cái gì là Deep Links và nó có tác dụng gì ?

Deep Links được sử dụng để truy cập đến ứng dụng hoặc bắt đầu các hành động thông qua các URL khác nhau. Các ứng dụng khác cũng có thể kích hoạt ứng dụng của bạn cùng một dữ liệu cụ thể. Deep Links cung cấp những trải nghiệm tốt cho trải nghiệm người dùng.

Sử dụng Deep Links bạn có thể cho phép người dùng đến ứng dụng của bạn thông qua đường link và điều hướng đến một page hoặc hành động nhất định trong ứng dụng.

Các kiểu Deep Links

Một vài phương thức Deep Links khác nhau chúng ta có thể sử dụng trên IOS. Apple hỗ trợ các schemes chung có liên quan cùng ứng dụng hệ thống. như là mailto, tel, sms và facetime. Nhưng bên cạnh đó chúng ta cũng có thể tạo ứng dụng của bạn cùng một custom deep links.

Chúng ta có thể sử dụng các kiểu khác nhau của deep links tùy theo mục đích sử dụng của chúng ta. Đầu tiên chúng ta sẽ tập trung vào 2 loại deep links được sử dụng phổ thông nhất:

  • URL Scheme
  • Universal Link

URL Scheme

Chúng ta sử dụng các đường link thường thấy bắt đầu bằng “http://” hoặc “https://” đúng k ? Giờ chúng ta sẽ xem sự khác nhau của cấu trúc URL cùng URL Scheme.

URL Scheme dễ dàng để triển khai. Đầu tiên chúng ta cần xác định một app scheme. Như ví dụ, chúng ta có thẻ xác định ứng myApp. Chúng ta có thể thêm một URL scheme mới dưới Project Setting -> Info -> URL Type thông qua Xcode hoặc chúng ta có thể mở file Info.split và chuyển nó sang dạng code rồi sửa nó như bên dưới

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myApp</string>
        </array>
        <key>CFBundleURLName</key>
        <string></string>
    </dict>
</array>

Sau đó chúng ta có thể customize URL Scheme theo chúng ta muốn. Với cách này chúng ta có thể điều hướng nó đến page mà chúng ta muốn.

myApp://campaigns

Ở trên chúng ta đã custom URL theo ý muốn và làm như nào để biết được khi nào link được click và làm như nào để chúng ta quyết định được việc ứng dụng sẽ làm gì với nó ?

Để giải quyết bài toán trên chúng ta có thể sử dụng phương thức application(_:open:options:) ( detail link ) của apple cung cấp. Ví dụ khi chúng ta bắt được link chúng ta muốn theo phương thức bên trên thì ta có thể chia phần “campaigns” và quyết định nó điều hướng đến page chúng ta muốn.

Tuy nhiên có một điều LƯU Ý là URL Scheme chỉ làm việc nếu ứng dụng đã được cài đặt trên thiết bị. Nếu ứng dụng không cài đặt trên thiết bị nó sẽ cố mở trên link Safari. Nếu URL không tồn tại nó sẽ là một trải nghiệm không tốt cho người dùng.

Universal Link

Universal Link hơi khác một chút. Chúng ta sẽ không sử dụng custom scheme như URL Scheme. Thay vào đó, chúng ta sẽ chỉ định web pages mà ứng dụng nhận dạng. Vì thế khi đường link được click ứng dụng sẽ mở thay vì website.

LƯU Ý: nếu ứng dụng không được cài đặt trên thiết bị người dùng thì đường dẫn sẽ cố mở một khu vực tương tự như vậy trên website của bạn. Link làm veiecj của bạn cho cả hai website và ứng dụng. Bạn có thể có page liên quan trên website của bạn, tạo một page mặc định hoặc điều hướng nó đến AppStore để cài đặt ứng dụng

Bây giờ chúng ta sẽ triển khai nó:

Cài đặt Universal links có chút phức tạp hơn so với URL Scheme. Nếu chúng ta muốn đường dẫn https://www.myApp.com/campaigns để làm việc chúng ta cần tạo file apple-app-site-association trong thư mục https://www.myApp.com/.well-known/apple-app-site-association . Chúng ta nên tạo chắc chắn là không có extension trong tên file.

File đó nên chứa một file JSON như sau: Giá trị của trường AppID được hình thời bởi kết hợp của giá trị team ID và bundle ID. Nếu chúng ta để trường “paths” là “*” như bên dưới thì bất kì đường dẫn nào bắt đầu bằng https://www.myApp.com sẽ được phát hiện bởi ứng dụng.

{
    “applinks”: {
        “apps”: [],
        “details”: [
            {
                “appID”: “teamID.com.example.myApp”,
                “paths”: [“*”],
            }
        ]
    }
}

Tuy nhiên nếu chúng ta chỉ muốn links chỉ định được phát bởi ứng dụng chúng ta nên đổi trường “path” như sau: Ví dụ bên dưới nếu link https://www.myApp.com/deeplink/campaigns bị ứng dụng phát hiện và mở nó trong khi link https://www.myApp.com/campaigns sẽ không được mở bởi ứng dụng.

{
    “applinks”: {
        “apps”: [],
        “details”: [
            {
                “appID”: “teamID.com.example.myApp”,
                "paths": ["/deeplink/*"]
            }
        ]
    }
}

Đây là một trong nhiều cách để chúng ta thực hiện điều này. Mở Xcode sau đó tìm Associated Domains bên dưới Project Setting -> Capabilities. Thêm domain như sau:

applinks:myApp.com

Sau khi hoàn thành toàn bộ các bước chúng ta có thể sử dụng hàm application(_:continue:restorationHandler:) link chi tiết được cung cấp bởi Apple cùng ứng dụng để lưu lại link và quyết định hành động cần thực hiện.

Bonus: Firebase Dynamic Link

Bên cạnh URL Scheme và Universal Link thì Tôi sẽ nói qua về Firebase Dynamic Link. Tại đây tôi giả sử bạn đã thêm project của bạn đến Firebase

Bạn hãy chọn Firebase Console -> Run -> Dynamic Links. Bạn có thể cài đặt links của bạn ở đây.

firebase dynamic links

Bạn có thể customize URL của bạn. Phần đầu của đường dẫn sẽ là https://myApp.page.link bạn có thể chỉ định phần phía sau của đường dẫn theo ý bạn muốn.

Sau này bạn phải chỉ định Dynamic Link vì link này có dạng https://www.myApp.com như một Universal Link, bạn nên tạo một file https://myApp.page.link/apple-app-site-associaton và điền nội dung file JSON như phía trên tôi hướng dẫn.

Sau đó bạn nên xác định đường dẫn cho IOS và Android.

Một lưu ý: Firebase Dynamic Links sẽ tạm dừng làm việc từ 25 tháng 8 năm 2025. Khi đó bạn có thể tìm phương pháp khác thay thế.

Kết luận

Tôi nghĩ bạn hiểu làm như nào để cài đặt Deep Links cho ứng dụng của bạn. Nó cho phép điều hướng liền mạch đến nội dung được chỉ định trong ứng dụng và cải thiện được trải nghiệm người dùng.

Mình mong rằng bài viết này hữu ích đến các bạn. Cảm ơn các bạn đã đọc bài viết của mình ! Nếu có gì sai sót hay có vấn đề gì cần hỏi hoặc thảo luận vui lòng các bạn comment xuống dưới bài viết giúp mình nhé.