- Ví dụ về việc đưa logic liên quan đến vị trí vào ứng dụng
- Khi muốn thiết lập ngôn ngữ hoặc tiền tệ của ứng dụng theo khu vực
- Khi muốn cung cấp giảm giá cho người dùng ở một số quốc gia nhất định
- Khi có công cụ tìm cửa hàng cần hiển thị địa điểm gần người dùng nhất
- Khi ứng dụng thời tiết phụ thuộc vào vị trí trước khi cung cấp mọi loại dữ liệu
- Khi muốn áp dụng geofence cho ứng dụng vì lý do pháp lý (ví dụ: banner cookie)
- Có một vài chủ đề chung
- Hiển thị/trải nghiệm người dùng: dùng thông tin vị trí để cải thiện hoặc đơn giản hóa trải nghiệm người dùng
- Tính năng/logic: logic nghiệp vụ của ứng dụng thay đổi theo vị trí
- Chính sách/tuân thủ: có các yêu cầu pháp lý buộc phải bao gồm hoặc loại trừ tính năng
- Không phải lúc nào cũng được phân tách rõ ràng. Trong một số trường hợp có thể chồng lấn, nhưng điều quan trọng là phải ghi nhớ các phân biệt này vì mức độ nghiêm trọng khi nhập sai là khác nhau
Cách lấy vị trí người dùng
- Hỏi trực tiếp người dùng về vị trí
- Ưu điểm: dễ triển khai, có thể tin cậy nếu người dùng cung cấp thông tin chính xác, có thể hỗ trợ nhiều loại vị trí
- Nhược điểm: người dùng có thể gõ sai hoặc bỏ sót thông tin, người dùng có thể cung cấp thông tin sai
- Dùng heuristic của thiết bị
- Thiết bị hiện đại có thể truy cập thông tin vị trí thông qua GPS, dữ liệu Wi-Fi, trạm phát sóng di động và địa chỉ IP
- Lập trình viên web có thể truy cập vị trí người dùng thông qua Geolocation API của trình duyệt
- Nhược điểm: phải yêu cầu người dùng cho phép chia sẻ vị trí, và người dùng có thể từ chối
- Dùng địa chỉ IP
- Địa chỉ IP được dùng để nhận diện duy nhất thiết bị trên mạng và để xác định vị trí
- Mỗi cụm số trong địa chỉ IP đại diện cho một subnet từ phạm vi rộng đến hẹp
- Chỉ riêng địa chỉ IP không đủ để biết vị trí người dùng, nên cần đối chiếu với cơ sở dữ liệu vị trí của các subnet đã biết
- Dùng edge computing
- Cách chạy request của người dùng trên máy chủ gần nhất
- Có thể cung cấp thông tin vị trí mà không cần xin phép người dùng hay tra cứu địa chỉ IP
- Nhược điểm: đó là vị trí của edge node chứ không phải vị trí thực của người dùng
Vì sao không thể tin vào vị trí người dùng
- Không thể tin người dùng
- Không thể đảm bảo người dùng luôn nhập vị trí thực một cách trung thực
- Họ cũng có thể vô tình nhập sai thông tin
- Không thể tin thiết bị
- Người dùng có thể từ chối cho dùng Geolocation API
- Người dùng có thể thay đổi thông tin Geolocation API trong phần cài đặt trình duyệt
- Không thể tin địa chỉ IP
- Người dùng có thể định tuyến request thông qua VPN
- Bạn chỉ nhìn thấy địa chỉ IP của VPN chứ không biết IP thực của người dùng
- Không thể tin edge computing
- Vì đó là thông tin vị trí của edge node nên có thể khác với vị trí thực của người dùng
- Khi dùng VPN thì không thể truy cập địa chỉ IP gốc
Vậy chúng ta nên làm gì?
- Có nhiều cách để lấy thông tin vị trí, nhưng không có cách nào hoàn toàn đáng tin
- Có nên bỏ cuộc không? No! Chúng ta vẫn có thể lấy thông tin tốt hơn và chuẩn bị cho các tình huống đó
Ví dụ: dịch nội dung
- Giả sử có một website được viết bằng tiếng Anh nhưng cũng hỗ trợ các ngôn ngữ khác
- Muốn tải ngôn ngữ địa phương của người dùng để cải thiện trải nghiệm
- Vậy phải xử lý thế nào với người dùng ở Bỉ, nơi dùng tiếng Hà Lan (Flemish), tiếng Pháp và tiếng Đức?
- Người dùng truy cập website
- Xác định đây là request đến từ Bỉ thông qua edge computing
- Tìm tùy chọn ngôn ngữ trong cookie HTTP
- Nếu có cookie thì dùng ngôn ngữ ưu tiên đó
- Nếu không có cookie thì dùng phiên bản tiếng Anh hoặc tiếng Hà Lan
- Cung cấp cho người dùng danh sách các ngôn ngữ được hỗ trợ trên website
- Khi người dùng chọn ngôn ngữ ưu tiên thì lưu vào cookie
- Trong kịch bản này, thông tin vị trí được lấy bằng cách kết hợp edge computing và dữ liệu người dùng tự khai báo để cải thiện trải nghiệm người dùng
- Có vẻ không cần dùng Geolocation API
- Có rủi ro hiển thị sai ngôn ngữ, nhưng chi phí thấp
- Website vẫn hoạt động ngay cả khi thông tin vị trí sai hoặc thiếu
- Cập nhật: cũng có thể dùng header Accept-Language, vốn biểu thị ngôn ngữ và locale ưu tiên của client
Ví dụ: ứng dụng thời tiết
- Có một ứng dụng hiển thị thông tin thời tiết dựa trên vị trí
- Trong trường hợp này, ứng dụng cần thông tin vị trí để hoạt động. Nếu không có thông tin đó thì làm sao hiển thị thời tiết?
- Trong kịch bản này, có thể an toàn khi giả định vị trí của người dùng ở lần tải đầu tiên
- Có thể lấy thông tin đó từ edge computing hoặc địa chỉ IP để hiển thị thời tiết khu vực của người dùng (theo suy đoán của chúng ta)
- Ngoài ra, vì trọng tâm chính của website là vị trí, nên có thể dùng Geolocation API để yêu cầu dữ liệu chính xác hơn
- Cũng nên cung cấp tùy chọn để người dùng tự khai báo vị trí một cách linh hoạt trong trường hợp họ muốn thông tin của nơi khác
- Để làm vậy, có thể cung cấp ô tìm kiếm có tự động hoàn thành cho thông tin vị trí càng chi tiết càng tốt
- Cách xử lý cho các lần truy cập sau có thể khác nhau: luôn mặc định thời tiết "địa phương" hoặc ghi nhớ vị trí từ lần truy cập trước
- Người dùng truy cập website
- Ở request đầu tiên, khởi động ứng dụng bằng cách ước tính vị trí từ edge computing hoặc địa chỉ IP
- Ở lần tải client đầu tiên, chạy Geolocation API để cập nhật thông tin
- Có thể lưu thông tin vị trí trong cookie cho các lần tải sau
- Cung cấp ô nhập linh hoạt có tự động hoàn thành để tìm vị trí khác
- Điểm quan trọng ở đây là ứng dụng thực ra không quan tâm người dùng đang ở đâu
- Chỉ cần có một vị trí là được
- Vị trí do người dùng tự khai báo (tìm kiếm) được ưu tiên hơn vị trí lấy từ cookie, edge computing hoặc địa chỉ IP
- Vì thời tiết thay đổi hàng ngày, cũng đáng để cân nhắc chiến lược cache và việc ứng dụng nên chủ yếu render phía server hay phía client
Ví dụ: tìm cửa hàng
- Giả sử bạn vận hành các cửa hàng vật lý ở nhiều địa điểm
- Bạn có thể hiển thị catalog sản phẩm và tồn kho online, nhưng sẽ tốt hơn nếu cung cấp thông tin cập nhật về tồn kho tại cửa hàng
- Để làm được điều đó, cần biết nên hiển thị tồn kho của cửa hàng nào, và để có trải nghiệm tốt nhất thì đó nên là cửa hàng gần người dùng nhất
- Một lần nữa, việc dự đoán vị trí người dùng bằng edge computing hoặc địa chỉ IP là hợp lý
- Sau đó cung cấp ô nhập linh hoạt để người dùng nhập thông tin vị trí, nhưng tự động hoàn thành nên được giới hạn trong danh sách cửa hàng được sắp xếp theo độ gần
- Chạy Geolocation API cũng là một ý hay
- Khác biệt giữa ví dụ này và ví dụ trước là mục đích chính của website không phụ thuộc vào vị trí
- Vì vậy nên chờ đến khi người dùng tương tác với tính năng phụ thuộc vị trí
- Tức là chỉ nên yêu cầu vị trí khi người dùng focus vào ô tìm cửa hàng
Ví dụ: định giá khác nhau theo khu vực
- Đây là một chủ đề hơi khó, vậy phải làm thế nào nếu muốn tính mức giá khác nhau tùy theo vị trí của người dùng?
- Ví dụ, một số hãng hàng không và khách sạn được biết là hiển thị giá cao hơn cho người dùng đặt chỗ từ một số khu vực so với khu vực khác
- Tạm gác vấn đề đạo đức sang một bên, đây là câu hỏi về lợi nhuận nên tác động rất lớn
- Vì vậy, có lẽ bạn sẽ không muốn cho phép người dùng dễ dàng thay đổi giá thông qua thông tin vị trí do họ tự khai báo
- Trong trường hợp này, có lẽ chỉ dùng edge computing hoặc địa chỉ IP
- Người dùng có thể lách điều này bằng VPN, nhưng đó có lẽ là cách tốt nhất bạn có thể làm
- Nếu thực sự lo ngại về kẻ gian lận, bạn có thể thử dùng tính năng phát hiện proxy nâng cao của Akamai để chặn request từ người dùng VPN
- Tuy nhiên, làm vậy có thể khiến bạn không chỉ mất mức giá giảm mà còn mất luôn giao dịch. Quyết định là ở bạn
Ví dụ: banner cookie
- Ví dụ cuối cùng này tập trung nhiều hơn vào tuân thủ pháp lý, nên xin bắt đầu bằng một lời miễn trừ nhỏ: Tôi không phải luật sư!!!
- Đây chỉ là ví dụ giả định và không nên được xem là tư vấn pháp lý
- Năm 2016, Liên minh châu Âu đã thông qua Quy định chung về bảo vệ dữ liệu (GDPR)
- Đây là luật bảo vệ quyền riêng tư của người dùng Internet trong EU, và áp dụng với cả các công ty cung cấp hàng hóa hoặc dịch vụ cho cá nhân trong EU dù công ty đó ở ngoài EU
- Có rất nhiều yêu cầu đối với chủ sở hữu website, nhưng điều tôi muốn nhấn mạnh là tác hại của banner cookie mà giờ đây chúng ta thấy ở khắp nơi trên Internet
- Tôi sẽ không bàn về vấn đề quyền riêng tư, việc banner cookie đúng hay sai, hiệu quả hay không hiệu quả của nó, hoặc có cách tiếp cận nào tốt hơn không
- Thay vào đó, tôi muốn nói rằng chỉ nên hiển thị banner cookie khi pháp luật thực sự yêu cầu, và tránh nó trong các trường hợp khác
- Một lần nữa, việc biết vị trí của người dùng là cực kỳ quan trọng
- Điều này rất giống với trường hợp trước và cách triển khai cũng tương tự. Khác biệt chính là mức độ nghiêm trọng nếu làm sai, và do đó là mức độ nỗ lực cần bỏ ra để làm đúng
- Banner cookie có thể là ví dụ phổ biến nhất về việc luật pháp và vị trí người dùng có thể ảnh hưởng đến website như thế nào, nhưng nếu muốn tìm ví dụ mạnh hơn thì có lẽ đó là Great Firewall của Trung Quốc
Kết luận
- Không có đáp án đúng duy nhất cho việc xác định vị trí người dùng
- Tùy theo kịch bản, cần tiếp cận bằng cách kết hợp dữ liệu người dùng tự khai báo, heuristic của thiết bị, edge computing và địa chỉ IP
- Những điều quan trọng
- Bạn có cần vị trí của người dùng hay chỉ cần bất kỳ vị trí nào?
- Dữ liệu cần chính xác đến mức nào?
- Có chấp nhận được nếu vị trí người dùng bị giả mạo không?
- Ngoài ra còn cần cân nhắc tuân thủ pháp lý, quy định, chức năng, và liệu mức độ tin cậy 95% có đủ hay không
- Nếu dùng logic vị trí vì lý do pháp lý, tốt nhất nên có các biện pháp để tự bảo vệ mình
- Tuân thủ các luật bảo vệ dữ liệu cá nhân như CCPA, GDPR
Chưa có bình luận nào.