2012-06-21 37 views
5

Tôi đang cân nhắc việc sử dụng kết nối liên tục với "dịch vụ đám mây" từ ứng dụng Android. Điều này sẽ chạy tất cả các thời gian trong một dịch vụ nền (hoặc một cái gì đó như thế).Thực tiễn tốt nhất cho các kết nối di động liên tục trên Android?

Tôi đang nghĩ đến việc sử dụng ổ cắm web hoặc XMPP để giữ kết nối, về cơ bản tìm kiếm kết nối trọng lượng nhẹ sẽ không tiêu hao pin. Tôi muốn có thể đẩy thông báo trong thời gian thực đến kết nối này, do đó không cần phải bỏ phiếu định kỳ. Tôi biết về C2DM và các giải pháp thương mại khác, nhưng tôi đang tìm cách cuộn của riêng mình. Đây là lý do tại sao một ổ cắm web (hoặc kết nối trọng lượng nhẹ khác) là những gì tôi đang điều tra. Vì vậy, nếu tôi đi tuyến đường này, một số phương pháp hay nhất mà tôi nên biết là gì?

Tôi đang nghĩ đến những thứ như:

  1. làm thế nào để ngăn chặn pin ra khỏi thoát,
  2. Làm thế nào để xử lý những thay đổi địa chỉ IP, vv?
+1

Đáng giá để đọc tài liệu Android: http://developer.android.com/training/efficient-downloads/index.html – pawelzieba

+4

Bạn cần chia nhỏ thành các câu hỏi riêng biệt cho Android và iOS - cả hai đều hoàn toàn khác nhau (trên iOS bạn không thể chỉ đơn giản là có dịch vụ nền). – Gruntcakes

+0

@MartinH Câu hỏi được cập nhật chỉ dành cho Android. –

Trả lời

10

Đây có thể không phải là câu trả lời bạn đang tìm kiếm nhưng tôi nghĩ bạn có thể muốn suy nghĩ lại kiến ​​trúc của mình.

Những điều bạn có thể mong đợi từ một nền tảng di động

  • địa chỉ IP của bạn để thay đổi một cách ngẫu nhiên
  • kết nối internet vật lý của bạn bị mất một cách ngẫu nhiên
  • Các hệ điều hành để quyết định bạn không làm bất cứ điều gì hữu ích và giết hại quá trình
  • Loại kết nối của bạn thay đổi ngẫu nhiên (từ WIFI sang 4G thành 3G thành cạnh) và do đó IP của bạn thay đổi

Về cơ bản, ứng dụng của bạn cần có khả năng xử lý mất kết nối, vì nó gần như được đảm bảo xảy ra.

Điều đó đang được nói, hoàn toàn có thể thực hiện được tùy thuộc vào định nghĩa của bạn về thời gian thực. Nếu bạn sẵn sàng kiểm tra liên tục rằng vẫn còn một kết nối khả thi, bạn có thể giữ bất kỳ sự chậm trễ nào trong phạm vi phút. Nhưng điều này sẽ tiêu hao pin và không có nhiều bạn có thể làm gì về nó.

+4

Xem xét lại kiến ​​trúc không phải là một câu trả lời tồi :-) Đây là toàn bộ vấn đề đăng câu hỏi, chỉ cần cố gắng để đánh giá ý tưởng với người khác. Nếu đó chỉ là một ý tưởng tồi, đó là phản hồi tuyệt vời. Cảm ơn. Tuy nhiên, tôi vẫn quan tâm đến các phương pháp hay nhất nếu một người đã làm điều đó. C2DM làm điều đó, vì vậy câu hỏi đặt ra là: làm thế nào để họ làm điều đó và thực hành tốt nhất của họ là gì? Các ý kiến ​​trên là những điều hữu ích để tìm cho ra. –

1

Một số thứ không tốt với nhau. Đó là "thông báo đẩy trong thời gian thực""ngăn pin cạn kiệt". Bạn chắc chắn phải thỏa hiệp ở đây.

Tôi chỉ có thể đề xuất dùng thử một số ứng dụng Android sử dụng XMPP để cảm nhận cách họ xử lý các kết nối liên tục, thay đổi địa chỉ IP và mức tiêu thụ pin. Nếu chúng là mã nguồn mở, bạn cũng có thể xem mã và học hỏi từ nó. Yaxim, Dự án MAXS và Beem đến tên một vài. Có thể bạn cũng có thể xem XEP-0286: XMPP on Mobile Devices

Điều đó có nghĩa là bạn có chắc chắn muốn phát minh lại bánh xe khi Google cung cấp cho bạn C2DM không? Được tối ưu hóa cho trường hợp sử dụng này. Tôi nghĩ rằng nó có một số chậm trễ, vì vậy nó không có nơi "thời gian thực". Nhưng một lần nữa, hoặc là bạn sẽ kết thúc với một giải pháp cố gắng hết sức để thiết lập một kết nối bền bỉ và tháo pin, hoặc bạn sẽ phải sống với một số loại trễ (~ 0-30 phút).

+0

Liên kết tuyệt vời về XMPP trên Thiết bị di động. Một số mẫu thiết kế tốt được nêu trong tài liệu đó. Những thứ như nén và nếu bạn phải gửi rồi gửi tất cả mọi thứ bạn có kể từ khi mức năng lượng sẽ được tăng lên tại điểm đó, v.v. –

+3

Lý do duy nhất tôi đang xem các lựa chọn thay thế cho C2DM của Google là vì C2DM yêu cầu người dùng có tài khoản Google trên thiết bị. Tôi đang thiết kế một tính năng đẩy sẽ được sản xuất và bán cho các ngân hàng. Phải giải thích với họ rằng người dùng của họ sẽ cần tài khoản google sẽ là một cuộc trò chuyện hơi khó xử. –

+1

Tôi biết đây là một câu hỏi cũ nhưng các quy tắc cho điều này đã thay đổi một chút cho chuyển đổi GCM. Các thiết bị mới hơn không còn cần Tài khoản Google nữa. "Nó sử dụng kết nối hiện có cho các dịch vụ của Google. Đối với các thiết bị trước 3.0, điều này yêu cầu người dùng thiết lập tài khoản Google của họ trên thiết bị di động của họ. Tài khoản Google không phải là yêu cầu trên các thiết bị chạy Android 4.0.4 trở lên". - http://developer.android.com/google/gcm/gcm.html –

Các vấn đề liên quan