2010-12-10 24 views
15

Đây là tình huống của tôi. Tôi đang phát triển một ứng dụng iPhone sử dụng Vị trí chính để xác định vị trí của thiết bị. Có một biểu tượng: Biểu tượng Dịch vụ Vị trí, xuất hiện trên thanh trạng thái của thiết bị. Tôi biết đủ để nói rằng mục đích của biểu tượng là cho người dùng biết rằng Dịch vụ vị trí hiện đang được sử dụng bởi một thứ gì đó. Đối với người dùng cảm nhận, điều này có nghĩa là giảm tuổi thọ pin. Vì lý do đó, tôi muốn chắc chắn rằng biểu tượng chỉ được hiển thị khi Dịch vụ vị trí thực sự được ứng dụng của tôi sử dụng.Điều gì quyết định sự hiện diện của biểu tượng Dịch vụ vị trí iPhone trên thanh trạng thái?

Nhập nhầm lẫn. Chúng tôi, là nhà phát triển, không có quyền truy cập vào thanh trạng thái thông qua SDK chính thức. Điều này có nghĩa là hệ điều hành sẽ tự động hiển thị biểu tượng đó dựa trên hành vi của ứng dụng. Hãy thử như tôi có thể, tôi không thể tìm thấy một định nghĩa rõ ràng về những gì chính xác khiến cho biểu tượng đó xuất hiện.

Vì nó đứng, biểu tượng xuất hiện trước khi ủy quyền ứng dụng của tôi được kiểm soát và vẫn hiển thị miễn là ứng dụng được cài đặt, đang chạy hay không. Đây rõ ràng là trường hợp xấu nhất có thể, và nó làm tôi nghi ngờ việc sử dụng của tôi là CLLocationManager. Tôi sẽ giải thích về cách sử dụng của mình, nhưng trong trường hợp cực đoan, tôi đã cố gắng loại bỏ khung CoreLocation (và khung công tác MapKit, mà tôi nghi ngờ cũng sử dụng CoreLocation) và tất cả các mã liên quan đến vị trí. Ứng dụng vẫn khiến biểu tượng xuất hiện và ở lại cho đến khi tôi xóa ứng dụng. Sau đó tôi đã tạo một ứng dụng hoàn toàn mới và không thực hiện thay đổi nào ngoại trừ việc thay đổi số nhận dạng ứng dụng để khớp với số nhận dạng ứng dụng của tôi. Biểu tượng vẫn xuất hiện. Tôi đã thay đổi số nhận dạng để sử dụng số nhận dạng của một trong các ứng dụng của tôi không sử dụng vị trí và biểu tượng không xuất hiện. Tôi đã đảm bảo đặt lại thiết bị trong khi thử nghiệm này.

Sự cố này thực sự đang giết tôi. Tôi không thể tưởng tượng ID ứng dụng phải làm gì với biểu tượng Dịch vụ vị trí, nhưng tôi không thấy nguyên nhân nào khác cho sự kiên trì của nó. Nó có vẻ như một Red Herring che giấu vấn đề thực sự, nhưng tôi đang thua lỗ về vấn đề thực sự.

+0

Bạn có bắt đầu cập nhật vị trí ngay sau khi ứng dụng của bạn khởi chạy hoặc đôi khi sau đó (như sau khi nhấn nút)? –

+0

Tôi bắt đầu chúng trong ứng dụngDidBecomeActive: phương thức ủy nhiệm. Vì vậy, ngay sau khi ứng dụng khởi chạy. –

+0

Xem câu trả lời đã chỉnh sửa của tôi. Thật không may, bạn không may mắn về biểu tượng không hiển thị, mặc dù điều đó không nhất thiết có nghĩa là pin đang bị cạn kiệt ở tốc độ cao hơn. –

Trả lời

22

Đây là bản cập nhật và giải pháp mà tôi đã đưa ra sau khi một số không quan trọng. Vì vấn đề của tôi rõ ràng là một vấn đề với hệ điều hành tạo ra một số kết nối giữa ID ứng dụng của tôi và biểu tượng Dịch vụ vị trí, tôi đã cố gắng đặt lại cảnh báo vị trí của thiết bị mà ban đầu tôi không biết mình có thể làm. Đối với những người tò mò, điều này có thể được thực hiện thông qua ứng dụng Settings, sau đó General> Reset> Reset Location Warnings. Sau khi đặt lại cài đặt này và sau khi cài đặt lại ứng dụng, nó lại yêu cầu sử dụng Dịch vụ vị trí.Bây giờ, biểu tượng xuất hiện chính xác trên startUpdatingLocation và biến mất chính xác trên stopUpdatingLocation, chính xác như tôi dự định ban đầu. Tôi không biết ban đầu điều gì đã gây ra tình trạng này, và tôi có chút nghi ngờ rằng bản thân điều kiện là một lỗi hệ điều hành, như được chỉ ra bởi Matthew Frederick, nhưng, ít nhất là trong trường hợp của tôi, tình trạng này có thể chữa được.

+0

Ah, quên đề cập đến câu trả lời của tôi: đối với một số cài đặt lại cảnh báo sẽ giải quyết vấn đề, nhưng không phải cho mọi người. Không có ý tưởng tại sao, nhưng tôi biết cho một iPhone 3GS của tôi chạy hệ điều hành 4.0 nó mất một thiết bị hoàn thành lau để giải quyết nó, một cái gì đó tôi không thể đề nghị cho khách hàng của tôi. Rất vui vì nó giải quyết nó cho bạn, mặc dù! –

+0

Cảm ơn bạn đã đăng tất cả điều này. Tôi chỉ nhận thấy hành vi tương tự trong ứng dụng của mình. – Oscar

+0

Làm việc cho ứng dụng của tôi. – rakeshNS

1

Bạn chưa bật tùy chọn vị trí trong khóa UIBackgroundModes của tệp .plist của ứng dụng, phải không?

+0

Không, không có mục nhập như vậy. –

5

Có một lỗi đã biết gây ra sự cố này. Tôi đã báo cáo cho Apple một vài tháng trước và được thông báo rằng đó là một sự lừa đảo của một vấn đề đã biết. Thật không may nó dường như không được cố định.

đầu tiên tôi phát hiện ra nó khi tôi nhìn thấy biểu tượng xuất hiện (và ứng dụng của tôi cho thấy là có được phép sử dụng thông tin vị trí trong ứng dụng Settings) chỉ đơn giản bằng cài đặt ứng dụng của tôi trên một thiết bị không còn cài đặt ứng dụng , thậm chí không chạy nó.

Vì lý do gì đó, thiết bị giữ tham chiếu đến ứng dụng đã từng nhận được quyền đối với dịch vụ vị trí.

Tệ hơn nữa, nếu ứng dụng thực sự nhận được sự cho phép trong quá khứ, sau đó được gỡ bỏ cài đặt, sau đó là một phiên bản cập nhật của ứng dụng được cài đặt, không chỉ biểu tượng xuất hiện nhưng các ứng dụng nâng cấp không còn thực sự nhận được thông tin vị trí vì ứng dụng không bao giờ yêu cầu hệ điều hành cho phép vị trí. Nó bị từ chối vĩnh viễn một cách hiệu quả.

Rất bực bội cho tôi và một số ít người dùng của tôi.

+0

Thật vậy, tôi thấy hành vi tương tự. Có vẻ như chỉ cần cài đặt bất kỳ ứng dụng nào có cùng số nhận dạng ứng dụng là đủ để khiến biểu tượng xuất hiện. Cảm ơn bạn về thông tin. –

+0

Xem câu trả lời của tôi cho câu hỏi của riêng tôi. Bây giờ tôi tin rằng số lượng người dùng thất vọng nhỏ của bạn có thể giải quyết vấn đề của họ với các bước tương tự mà tôi đã theo dõi để giải quyết vấn đề của tôi. –

+0

Bất kỳ cơ hội nào của một liên kết hoặc id lỗi cho vấn đề đã biết? – Roger

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