2013-01-30 39 views
17

Đây là ứng dụng ngoại tuyến HTML5 trên thiết bị Android.Ứng dụng HTML5 ngoại tuyến trên thiết bị Android

Chúng tôi đang chạy vào một vấn đề nơi đánh dấu một ẩn có khả năng ứng dụng HTML5 (với một bộ nhớ cache hoàn chỉnh file manifest) không tải trên trình duyệt Android dưới các điều kiện sau:

  1. Bookmark ứng dụng trên trình duyệt
  2. tắt tất cả các kết nối không dây
  3. Đóng trình duyệt hoàn toàn
  4. Cố gắng để khởi động các bookmark từ màn hình chính

Chúng tôi kết thúc bằng thông báo "Không thể kết nối với Internet". Ứng dụng hoạt động hoàn toàn tốt trên các thiết bị iOS khi được lưu vào màn hình chính và trên chế độ trên máy bay.

Có cách nào cụ thể mà ứng dụng sẽ được lưu hay đây có phải là một cách ẩn danh dành riêng cho Android không?

+3

bạn đang sử dụng trình duyệt nào? trình duyệt android mặc định? – Markasoftware

+0

Bạn có thể thêm liên kết vào trang web của mình không? Phiên bản Android nào bạn đang thử nghiệm này với? Tôi có một ứng dụng web ngoại tuyến và nó hoạt động như mong đợi. – Stephen

+0

Yup, chúng ta đang thấy điều này trong trình duyệt mặc định của Android. – Luthfur

Trả lời

1

Tên tệp của tệp kê khai bộ nhớ cache của bạn là gì? Tôi đã nghe nói rằng phần mở rộng có thể ảnh hưởng đến hành vi của Android. Hãy chắc chắn rằng tập tin của bạn kết thúc với

Bên cạnh đó, chắc chắn rằng máy chủ của bạn được phục vụ một cách chính xác các loại MIME cho các tập tin manifest, đó là text/cache-manifest

+0

Có thể xác nhận rằng cả hai điều này đều đúng và vẫn không thể thực hiện được chức năng này trên các thiết bị Android – bijanv

5

Tôi muốn kiểm tra và thấy rằng:

  1. MIME loại thực sự là text/cache-manifest.
  2. Tệp kê khai bộ nhớ cache của bạn bắt đầu bằng CACHE MANIFEST, các url của bạn sau đó có liên quan đến tệp kê khai hoặc URL tuyệt đối.
  3. Bạn không có bất kỳ liên kết nào bị hỏng trong tệp kê khai của mình hoặc thẻ bắt buộc NETWORK:.
+0

Cảm ơn Ben, hóa ra chúng tôi đang sử dụng một thẻ NETWORK cưỡng bức. Tôi sẽ thử nó mà không có thẻ và xem nó như thế nào. – Luthfur

+0

Vì vậy, ...... Bất kỳ may mắn? –

1

Ngoài câu trả lời của Ben Max Rubinstein và Compid, nếu url ứng dụng của bạn giống như sau: example.com/myapp, bạn cần thêm dấu gạch chéo sau, như sau: example.com/myapp/.

Khi bạn trực tuyến, máy chủ sẽ tự động chuyển hướng bạn, nhưng nếu bạn ngoại tuyến rõ ràng là điều đó không thể xảy ra.

2

Vì vậy, tôi đã phải đối mặt tương tự issues with chrome và android trên nhiều phiên bản. Rõ ràng là không có vấn đề với việc thực hiện bởi vì tôi đã thử nó trên FF và nó làm việc tốt, và điều tương tự cũng đúng về safari. Điều duy nhất tôi cho rằng điều này là do, dữ liệu đang nhận được bộ nhớ cache cho trang web trên RAM khi chrome đang chạy. Nếu bạn đóng trình duyệt và android kết thúc quá trình, phiên bản chrome mới sẽ được khởi chạy và dữ liệu ứng dụng hiện tại của bạn đã biến mất. Tôi không thể xác nhận điều này, nhưng có vẻ như rất có thể đó là vấn đề.

Ngoài ra kiểm tra máy chủ của bạn được cấu hình để gửi các loại mime một cách chính xác: How to set up your server to send the correct MIME types

1

gì tôi gặp phải là các file trong cấu hình mime.types Apache đã được thiết lập một cách chính xác để text/cache-manifest và sau đó một vài dòng dưới đây được ghi đè như application/x-ms-application (đối với tương thích với điều 'ClickOnce' của MS).Để giải quyết điều này, tôi đã lấy tên tệp kết thúc khác nhau, cụ thể là .cachemanifest, được định cấu hình chính xác loại mime, được khởi động lại Apache, đổi tên tệp kê khai thành cache.cachemanifest, thay đổi thuộc tính kê khai <html> của tôi, và cuối cùng tôi có thể cache ứng dụng web của tôi trên Android (không có bất kỳ sự cố nào trong trình duyệt trên máy tính để bàn mà dường như không quan tâm đến loại tệp kê khai bộ nhớ cache). Hi vọng điêu nay co ich.