2012-09-24 26 views
43

Trong iOS 6, thuộc tính purpose của CLLocationManager, để mô tả lý do sử dụng dịch vụ định vị (@property(copy, nonatomic) NSString *purpose) đã không được chấp nhận.Thay thế cho thuộc tính "mục đích" của CLLocationManager

Apple đã đề xuất thay thế nào nếu có?

+0

Có câu trả lời với điểm of30; bạn đã xem xét đánh dấu nó là chấp nhận? – bdesham

Trả lời

62

Việc thay thế cho purpose tài sản trong iOS 6 là một chìa khóa Info.plist mới có tên NSLocationUsageDescription (aka "Bảo mật - Mô tả sử dụng vị trí").

Khóa là documented in the Information Property List Key Reference nhưng tiếc là nó không được đề cập với ghi chú không dùng nữa của thuộc tính purpose.

Tuy nhiên, CLLocationManager.h không có bình luận này:

* Deprecated. Đặt chuỗi mục đích trong Info.plist bằng cách sử dụng khóa NSLocationUsageDescription.

Trong mã của bạn, bạn có thể đặt cả khóa và thuộc tính purpose (nhưng bạn có thể kiểm tra xem trình quản lý vị trí có phản hồi bộ chọn đó trước không/khi phương pháp đó thực sự bị xóa trong tương lai).

Nếu chạy trong iOS 6, trình quản lý vị trí sẽ sử dụng phím.
Khi chạy dưới iOS 6, phím sẽ bị bỏ qua và thuộc tính purpose sẽ được sử dụng.

+6

Bạn có thể địa phương hoá chính xác chuỗi này như thế nào? Hoặc sau đó bạn cần một infoplist.strings địa phương chỉ dành cho mục đích này? (không có ý định chơi chữ) –

+0

@BobdeGraaf infoplist.strings bản địa hóa âm thanh giống như cách để đi từ đây: http://stackoverflow.com/a/14144989/159758 – DonnaLea

3

Tôi vừa gặp sự cố tương tự trong ứng dụng của mình.

Tôi thấy rằng bây giờ bạn có thể đặt Hoạt động của CLLocationManager! Bạn có thể chọn các CLActivityTypes khác nhau, vì vậy bạn không cần phải viết mục đích của riêng mình nữa.

Dưới đây là ví dụ cho một Navigation dựa App

[self.gps setActivityType:CLActivityTypeAutomotiveNavigation]; 

CLActivityTypes thể khác là:

- CLActivityTypeFitness 
- CLActivityTypeOther 
- CLActivityTypeOtherNavigation 
+0

Có thay đổi nội dung được hiển thị cho người dùng không? Và tôi muốn được cụ thể hơn (như nó đã có thể trước khi với "mục đích"), thay vì chỉ sử dụng TypeOther. Đang chờ thay thế, tôi sẽ tiếp tục sử dụng phương pháp không dùng nữa. – Guillaume

+0

Cũng thông báo được hiển thị cho người dùng là loại thông báo mặc định: "'AppName' muốn sử dụng vị trí hiện tại của bạn." Tôi không hiểu tại sao táo lại thay đổi điều này, tôi chắc chắn rằng người dùng muốn biết chi tiết. .. –

+0

Đừng quên rằng không được chấp nhận chính thức có nghĩa là sớm bị bỏ rơi, nhưng định nghĩa của sớm có thể khác nhau. – Guillaume

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