2010-11-22 32 views
16

Hiện tại ứng dụng của tôi chỉ yêu cầu một lần cho phép sử dụng vị trí hiện tại. Nếu người dùng không cho phép, anh ấy sẽ không hỏi lại trừ khi anh ấy đặt lại cảnh báo vị trí trong cài đặt chung. Tôi muốn cung cấp cho người dùng một cơ hội từ bên trong ứng dụng để cấp quyền này sau này. Nói cách khác, hộp thoại sẽ xuất hiện trở lại nếu anh ta nhấn một nút nào đó. Điều này có thể không?CLLocation yêu cầu lại cho phép

Cảm ơn lời khuyên của bạn.

+0

Chắc là không. Đó là điểm phải đặt lại cảnh báo vị trí. – ryyst

Trả lời

9

trả lời mới: Bây giờ trong iOS 8 bạn programatically THỂ mở ứng dụng cài đặt thiết bị:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
[[UIApplication sharedApplication] openURL:url]; 

Nếu bạn đang hỗ trợ các phiên bản iOS trước đó và muốn chắc chắn điều này có thể được xử lý, làm điều này:

if (&UIApplicationOpenSettingsURLString != NULL) { 
    NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; 
    [[UIApplication sharedApplication] openURL:url]; 
} 
else { 
    //Earlier iOS version 
} 

Câu trả lời cũ: Không có cách nào tôi biết bắt buộc cửa sổ bật lên gốc xuất hiện (và cho phép người dùng chuyển đến trang cài đặt).

Bạn có thể sử dụng phương pháp sau để xác định nếu người dùng đã cho phép dịch vụ định vị cho các ứng dụng của bạn: CLLocationManager:

+(CLAuthorizationStatus)authorizationStatus 

Bạn cũng có thể tìm hiểu xem dịch vụ định vị được kích hoạt trên toàn cầu ở cấp thiết bị hay không , quá: CLLocationManager:

+(BOOL)locationServicesEnabled 
+0

Đây chỉ là một phần chính xác. locationServicesEnabled sẽ chỉ cho bạn biết về cài đặt thiết bị chứ không chỉ cho phép vị trí của ứng dụng của bạn. – Acey

14

[CLLocationManager locationServicesEnabled] chỉ cho bạn biết nếu các dịch vụ địa điểm được cho phép trên thiết bị.

theo tài liệu this.

[CLLocationManager authorizationStatus]

sẽ trở lại một trong những

typedef enum { 
    kCLAuthorizationStatusNotDetermined = 0, 
    kCLAuthorizationStatusRestricted, 
    kCLAuthorizationStatusDenied, 
    kCLAuthorizationStatusAuthorized 
} CLAuthorizationStatus; 

nếu kết quả là kCLAuthorizationStatusDenied của bạn có thể nói với người sử dụng để cho phép việc sử dụng các dịch vụ định vị bằng cách gửi ông đến settings.app

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