2011-12-27 29 views
12

Tôi có dự án Công cụ Dòng lệnh Xcode 'được viết bằng C++. Gần đây tôi đã thêm khung CoreLocation và mã được liên kết để tìm vị trí của người dùng.Dự án công cụ dòng lệnh Xcode có cho phép quyền CoreLocation không?

Thông thường, khi tôi triển khai khung CoreLocation, OS X sẽ yêu cầu tôi cấp quyền cho ứng dụng. Điều này không xảy ra với Công cụ Dòng lệnh của tôi. Có phải vì không có cửa sổ/trình đơn liên quan?

Ngoài ra, nếu tôi cố gắng bật giấy phép theo cách thủ công trong ngăn Tuỳ chọn hệ thống trong Bảo mật> Bảo mật, tính năng này sẽ tự động bị tắt mỗi khi tôi chạy ứng dụng - mặc dù tôi đã cho phép truy cập một cách rõ ràng.

Mọi thông tin sẽ được đánh giá cao.

+0

Tôi có một dự án Xcode mẫu nếu bất kỳ ai muốn gặp vấn đề này trước tiên. –

+1

Có vẻ như nó sẽ là có thể; bạn đã thử http://code.google.com/p/corelocationcli/? – Philippe

+0

Cảm ơn Phil đó chính xác là những gì tôi cần. Tôi không thể hiểu tại sao dự án đó yêu cầu sự cho phép vị trí nhưng tôi không? Có liên quan gì đến NSRunLoop không? –

Trả lời

0

khi CoreLocation yêu cầu dữ liệu vị trí, máy Mac sẽ nhắc hộp thông báo yêu cầu người dùng cấp quyền, nếu bạn chọn Không hỏi lại và nhấp vào OK, thì sẽ không bao giờ nhắc lại thư trừ khi bạn "Đặt lại cảnh báo" trong ngăn Tuỳ chọn bảo mật, nhưng nếu bạn di chuyển ứng dụng dòng lệnh sang thư mục khác, máy Mac sẽ yêu cầu quyền lại. Tôi tin rằng sự cho phép này được lưu trữ với đường dẫn đầy đủ của ứng dụng.

2

Một số thứ trong Mac OS cần kết nối với máy chủ cửa sổ. Một ví dụ về điều đó là NSImage và có thể dịch vụ vị trí cũng yêu cầu kết nối như vậy.

Tuy nhiên, tôi không biết cách thực hiện kết nối như vậy mà không cần gọi NSApplicationMain.

Điều bạn có thể làm là viết một ứng dụng phụ trợ không hiển thị trong thanh công cụ (như ứng dụng thanh trạng thái) nhưng gọi NSApplicationMain. Ứng dụng này sau đó sẽ làm tất cả các dịch vụ vị trí và giao tiếp với quá trình gọi (CLI) của bạn thông qua các thiết bị đầu cuối hoặc ổ cắm hoặc một cái gì đó tương tự.

+0

Xin chào, tôi đã tưởng tượng nó sẽ giống như thế này - ứng dụng thanh trạng thái là một ý tưởng hay. –

+0

Hãy nhớ rằng bạn không nhất thiết cần một biểu tượng trên thanh trạng thái của mình. Có một cái nhìn tại LSBackgroundOnly (http://www.cocoadev.com/index.pl?LSBackgroundOnly) – v1Axvw

1

Bạn cũng có đang nhập Foundation.h vào dự án của mình không? Bạn nên kiểm tra để xem tất cả các phụ thuộc mà CoreLocation có và đảm bảo rằng chúng đang đưa nó vào dự án của bạn. CoreLocation cũng được viết trong Objective-C vì vậy một số các cuộc gọi có thể không bị bắt bởi C++ trình biên dịch của bạn.

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