Tôi đã phát triển một ứng dụng cho iOS và Android truy cập tệp HTML từ máy chủ web của tôi bằng trình duyệt trong ứng dụng (Webview).Phát hiện trình duyệt trong ứng dụng (WebView) bằng PHP/Javascript
Tôi không muốn người dùng có thể truy cập tệp này mà không cần sử dụng ứng dụng. Có khả năng phát hiện, nếu người dùng đang truy cập tệp bằng ứng dụng hoặc trực tiếp qua trình duyệt trên điện thoại thông minh/máy tính bảng/máy tính này? Tôi nghĩ rằng một giải pháp với PHP là tốt hơn nhiều, bởi vì Javascript có thể được tắt. Ít nhất Google Analytics có thể phân biệt giữa Safari và Safari (trong ứng dụng). Nó sẽ hoạt động với mọi phiên bản iOS và Android.
Cảm ơn sự giúp đỡ của bạn.
Giải pháp
Sau nhiều nỗ lực cuối cùng tôi đã tìm thấy một giải pháp làm việc cho tôi!
iOS: Bạn có thể phát hiện sự khác biệt giữa Safari và trình duyệt trong ứng dụng bằng tác nhân người dùng. Có lẽ có một giải pháp đẹp hơn, nhưng nó hoạt động.
// Safari (in-app)
if ((strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile/') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari/') == false) {
echo 'Safari (in-app)';
}
Android: Tên gói từ các ứng dụng được lưu trữ trong các biến PHP $_SERVER['HTTP_X_REQUESTED_WITH']
.
// Android (in-app)
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app") {
echo 'Android (in-app)';
}
Vì Tim van Elsloo đã lưu ý tiêu đề HTTP có thể bị giả mạo và điều này không hoàn toàn an toàn.
giải pháp iOs sẽ thất bại nếu trang được mở từ các trình duyệt khác. Sau một vài thử nghiệm, tôi đã tinh chế nó một chút. Kiểm tra tại đây: http: // stackoverflow.com/questions/2738766/iphone-webapps-là-có-một-cách-để-phát hiện-như-nó-đã-được-nạp-home-screen-vs-safar/20757993 # 20757993 –