2013-08-15 36 views
24

Tôi đang cố gắng thiết lập ứng dụng có thể kiểm tra vị trí của mọi người dưới nền, xem họ có ở vị trí cụ thể hay không và gửi ping đến máy chủ nếu có. Chúng tôi không muốn tiêu hao năng lượng của người dùng, vì vậy chúng tôi đang cố gắng tìm ra giải pháp tốt nhất.CLLocationManager geo-fencing/startMonitoringForRegion: vs. startMonitoringForSignificantLocationChanges: so với 10 phút startUpdating calls

Tôi đã đọc rất nhiều và tôi không tìm thấy nhiều thông tin về các phương pháp này. Tôi sẽ đi qua các ưu và nhược điểm như tôi hiểu họ ngay bây giờ

startMonitoringForSignificantChanges

Mô tả: Dựa tắt của wi-fi và tháp di động làm thay đổi hệ thống tỉnh dậy ứng dụng.

Docs:

Apps có thể mong đợi một thông báo ngay khi thiết bị di chuyển 500 mét hoặc nhiều từ thông báo trước đó. Không nên mong đợi các thông báo thường xuyên hơn một lần sau mỗi năm phút. Nếu thiết bị có thể truy xuất dữ liệu từ mạng, trình quản lý vị trí có nhiều khả năng cung cấp thông báo kịp thời hơn.

Ưu điểm:

  • Hầu hết pin hiệu quả

Nhược điểm:

  • Phụ thuộc vào wi-fi tháp/tế bào thay đổi
  • Chỉ có thể giả định rằng đây sẽ là được gọi là mỗi 200m đến 2km (nếu không nhiều hơn ở một số khu vực nhất định)
  • More on accuracy
  • Vì vậy, không phù hợp và không chính xác

10-minute start-updating hoặc "n phút cập nhật":

Mô tả: Đây về cơ bản yêu cầu ứng dụng cho nhiều thời gian hơn, khi thêm thời gian là khoảng hết hạn, nó gọi [self.locationManager startUpdating], lấy vị trí và mở rộng chuỗi nền trong 10 phút nữa.

Ưu điểm:

  • Phù
  • Có thể chính xác như bạn muốn nó được như một cách nhất quán như bạn muốn nó

Nhược điểm:

  • Phải làm một cuộc gọi cứ 10 phút hoặc ít hơn để giữ cho ứng dụng chạy trên nền (tức là n không thể lớn hơn 10 cho các cuộc gọi)

Câu hỏi: Hiệu ứng này có tác dụng gì trên pin? Có đánh thức GPS và tắt nó làm tổn thương pin nhiều hơn? Tôi không thể tưởng tượng chạy một kiểm tra vị trí ngắn trong nền sẽ tiêu hao pin nhiều ... nhưng sau đó một lần nữa, tôi không biết những gì đi vào powering lên GPS và nhận được một tín hiệu có thể sử dụng.

startMonitoringForRegion (geo-rào):

một cách đơn giản, ứng dụng của bạn được đánh thức khi bạn tham gia vào một khu vực được xác định trước. Đây là kỳ quặc của họ, nó là gần đây hơn và có ít tài liệu về nó. Tôi không thể tìm thấy mô tả hay về cách "hệ thống giám sát" đường biên giới. Đối với tất cả tôi biết nó là một số thuật toán thực sự thông minh, hoặc họ liên tục ping GPS mà sẽ làm cho nó ít hiệu quả hơn so với các phương pháp khác để làm điều này.

Ưu điểm:

  • đơn giản thực hiện
  • Được quản lý bởi hệ thống, do đó bạn không cần phải phát minh của riêng bạn ad-hoc geo-hàng rào Chỉ gây nên trên ranh giới qua ... không có dữ liệu không cần thiết chỉ cần ném ra để đổi lấy một pin nhấn
  • do đó, nên là tốt nhất cho các loại điều này, chính xác, bởi hệ thống quản lý

Nhược điểm:

  • People question its effectiveness
  • xung đột lớn về việc có hay không nó là tốt cho tuổi thọ pin hoặc nếu nó cống tuổi thọ pin khủng khiếp.
  • Hệ thống giám sát điều này như thế nào !?
  • Về cơ bản, hành vi không xác định.

Tôi đoán câu hỏi của tôi sẽ tóm tắt về cách startMonitoringForRegion: so sánh với các phương pháp kiểm tra vị trí người dùng khác trong nền khi nói đến tuổi thọ pin, tính nhất quán và độ chính xác. Có ai kiểm tra kỹ lưỡng điều này không? Hoặc sử dụng nó trong ứng dụng của họ và nhận được ít nhất một số phản hồi? Có khả năng, vì mục đích của tôi, sự cân bằng giữa đấu nối địa lý và phương pháp cập nhật 10 phút. (Cũng được đưa ra những gì Apple đã công khai nói về iOS7 sẽ có một số nhiệm vụ nền ... liệu điều này có thay đổi tính toán cho sự cân bằng giữa hai phương thức này không?) Có ai có ý tưởng về cách hai so sánh này?

Cảm ơn bạn rất nhiều! Nhìn về phía trước để xem liệu chúng ta có thể tìm hiểu cách so sánh các phương pháp này hay không.

+0

+1 để biết tổng quan gọn gàng –

Trả lời

16

Tôi đã làm việc theo dõi xe bằng GPS trong 2 năm. Học được rất nhiều cách khó khăn ... Trong kinh nghiệm của tôi startMonitoringForRegion hoặc Geo-hàng rào phụ thuộc vào sự kiện thay đổi tế bào, didEnter hoặc didExit sự kiện không cháy lên cho đến khi có một sự kiện thay đổi tế bào/wifi. Vì vậy, nó không làm cho bất kỳ sự khác biệt w.r.t tiêu thụ pin. Tuy nhiên, tính toán phụ trội phụ thuộc vào số lượng vùng hiện đang được theo dõi. Ngay cả ứng dụng Nhắc nhở của Apple cũng không mang lại kết quả tốt cho lời nhắc dựa trên vị trí vì nó sử dụng hàng rào địa lý.

Cách tiếp cận khác bắt đầu GPS trong n phút sau mỗi m-phút là tùy chọn tốt, nó không ảnh hưởng đến tuổi thọ pin, nếu được thực hiện một cách khôn ngoan. Chính xác hiệu quả của pin là kích hoạt GPS liên tục ở chế độ chính xác cao. Ví dụ: Nếu bạn bật GPS với kCLLocationAccuracyBest và distance-filter = 0, bạn có thể quan sát nghĩa là thoát pin và thiết bị của bạn cũng sẽ sớm trở nên nóng hơn.

Nếu tôi là bạn, tôi sẽ kích hoạt GPS sau mỗi 10 phút trong 5 giây với kCLLocationAccuracyBest (hoặc có thể kCLLocationAccuracyNearestTenMeters để sử dụng ít pin hơn, nếu độ chính xác không quan trọng lắm) và khoảng cách lọc = 5 (mét) . Mức tiêu thụ pin trong trường hợp này sẽ không đáng kể. Bạn có thể chơi xung quanh với các thiết lập tương tự có thể giải quyết trường hợp cụ thể của bạn và cuối cùng tìm ra những gì là tốt nhất bạn.

BTW: iPhone sử dụng AGPS, A-GPS sử dụng thêm tài nguyên mạng để định vị và sử dụng vệ tinh trong điều kiện tín hiệu kém. Vì vậy, khi bạn startUpdatingLocation nó cũng sẽ sử dụng thông tin tháp di động lân cận. xem http://en.wikipedia.org/wiki/Assisted_GPS

+1

Cảm ơn bạn rất nhiều vì đã có câu trả lời rất kỹ lưỡng và hữu ích! – AdamG

+0

Làm thế nào tôi có thể im lặng hàng rào địa lý trong ứng dụng của tôi am ver mới cho IOS – sabir

+0

Vui lòng kiểm tra câu hỏi này http://stackoverflow.com/questions/9946952/ios-5-region-monitoring-can-new-regions-be-created- dựa trên người dùng-hiện tại-điều phối/10429867 # 10429867 và http://stackoverflow.com/questions/21850536/number-of-region-monitored-by-regionmonitoring-based-on-users-current-locatio – Zee