2010-01-13 44 views
23

Tôi muốn cho phép người dùng đặt thông tin GPS trên Trình mô phỏng iPhone thông qua GUI.Mô phỏng cập nhật vị trí trên iPhone Simulator

Nhưng tôi không chắc chắn làm thế nào để giải quyết điều này - có vẻ như công cụ này được gọi là iSimulate thực hiện điều này bằng cách nào đó bằng cách installing an own SDK. Nhưng tôi không thể tìm ra cách họ "ghi đè"/"hack" giả lập bởi điều đó.

Cảm ơn!

Trả lời

11

Theo như tôi biết, iSimulate không sử dụng bất kỳ hacks. Đó là mã chạy trong ứng dụng của bạn trên Trình mô phỏng kết nối với thiết bị qua mạng. Khi nhận được tin nhắn từ thiết bị (chạm, GPS, tăng tốc), nó sẽ mô phỏng các sự kiện đó bằng cách gọi mã của ứng dụng của bạn như thể hệ thống đã kích hoạt chúng.

Ví dụ: để nhận cập nhật vị trí GPS, bạn phải tạo một phiên bản của CLLocationManager và sau đó định cấu hình một trong các lớp của bạn làm đại biểu của nó. Vâng, trên iPhone Simulator bạn thay vào đó có thể bắt đầu mã gửi tin nhắn giả cho đại biểu của bạn để thay thế. Nếu bạn chỉ cần gọi một phương thức của đại biểu như sau:

[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation]; 

Mã của bạn sẽ không phải biết rằng cập nhật vị trí là giả mạo. Nếu bạn muốn có được ưa thích, bạn có thể tạo một lớp mới thực hiện tất cả các phương thức công khai của CLLocationManager nhưng thay vào đó sẽ gửi các thông điệp giả mạo. (Vì Mục tiêu-C được nhập động, nó sẽ không cần phải là lớp con, miễn là nó phản hồi tất cả các thư bạn gửi.)

Lưu ý rằng bạn có thể sử dụng các macro trình biên dịch này để giữ mã mô phỏng chỉ:

#if TARGET_IPHONE_SIMULATOR 
    locationManager = (id)[[MyFakeLocationManager alloc] init]; 
#else 
    locationManager = [[CLLocationManager alloc] init]; 
#endif 
0

Hy stephanos,

Không thể thay đổi thông tin của GPS. Nó được bảo vệ và tôi không tin rằng iSimulate có thể thay đổi nó. Theo tôi biết, iSimulate là công cụ để gửi lệnh từ thiết bị đến trình giả lập iPhone, như gia tốc kế, chạm, định hướng, v.v., kể cả vị trí GPS hiện tại.

SDK iSimulate hoạt động với ứng dụng. Bạn phải cài đặt các ứng dụng trong thiết bị và thêm sdk vào dự án của bạn, vì vậy bạn không cần phải buld và chạy ứng dụng của bạn vào thiết bị tất cả các thời gian mà bạn sẽ làm bình thường.

Chúc mừng,
VFN

7

Bạn có thể muốn kiểm tra FTLocationSimulator tôi tại http://github.com/futuretap/FTLocationSimulator

Nó đọc một tệp KML được tạo ra bởi Google Earth để cung cấp thông tin cập nhật vị trí liên tục. Nó cũng cập nhật chấm userLocation màu xanh trong một MKMapView với các cập nhật vị trí được mô phỏng.

+0

Tôi đã cung cấp câu trả lời thứ hai mô tả các tính năng mô phỏng vị trí hiện tại tích hợp trong Xcode ≥4.2: http://stackoverflow.com/a/9359093/235297 –

12

iOS Simulator đã đầy đủ vị trí mô phỏng xây dựng trong. Từ menu "Debug", bạn có thể khám phá các lựa chọn vị trí khác nhau của bạn.


Câu trả lời gốc được đăng khi đang trong NDA.

Khám phá mục nhập dưới cùng bên phải trên this page. Tôi thuộc NDA nên tôi không thể nói bất cứ điều gì ngoại trừ việc nó đã tiết kiệm cho tôi tiền gas đáng kể. :)

1: http://developer.apple.com/technologies/ios5/

+0

Đây là giải pháp tốt hơn – honcheng

+0

Cả hai liên kết đều được 4042 –

+0

Tôi đã trả lời câu hỏi này trong khi iOS 5 thuộc NDA. Những trang đó chỉ liệt kê các tính năng chính sắp ra mắt. – wjl

4

Trong Xcode 4.2 chúng ta có thể mô phỏng. Có một biểu tượng vị trí trên vùng gỡ lỗi (trong khi bạn chạy ứng dụng). Có một số vị trí được xác định trước. Ngoài ra chúng tôi có thể add các tệp GPX mới

46

Đã thêm câu trả lời thứ hai vì hiện có các tính năng được tích hợp trong Xcode (≥4.2). Có hai cách để mô phỏng cập nhật vị trí:

  • Trong trình mô phỏng iOS, trong "Debug/Location", bạn có thể chỉ định vĩ độ/kinh độ không đổi hoặc chọn một số cấu hình được xác định trước như "City Run" hoặc "Freeway Lái xe".
  • Trong Xcode, có biểu tượng vị trí mới trong trình gỡ lỗi, ngay bên cạnh nút Bước ra. Nó cho phép bạn chọn một số thành phố được mã hóa trên toàn thế giới và thêm một tệp GPX tùy chỉnh vào dự án của bạn. Những điều tốt đẹp về mô phỏng vị trí trong Xcode là nó cũng hoạt động trên thiết bị (chỉ cần đừng quên tắt nó đi một lần nữa nếu không múi giờ tự động của bạn sẽ sai!). Các tập tin GPX tùy chỉnh là tốt đẹp, quá, mặc dù đôi khi nó bị treo Xcode nếu tập tin GPX không được công nhận. Hãy chắc chắn rằng bạn sử dụng <wpt> thẻ chỉ:
<?xml version="1.0"?> 
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="47.52789018096815" lon="7.385249894876031"></wpt> 
    <wpt lat="47.52720984945248" lon="7.382647784661411"></wpt> 
    ... 
</gpx> 
+5

Giải pháp này là câu trả lời đúng. – deepwinter

0

Chỉ cần để mở rộng @Ortwin Gentz ​​câu trả lời:

Nếu bạn cần cấu hình thêm của mỗi gps chỉ trong tập tin GPX của bạn. Hãy xem trang này:

http://www.topografix.com/gpx_manual.asp

Nó sẽ cho bạn biết chính xác làm thế nào bạn có thể cung cấp thêm thông tin chi tiết như tốc độ và chiều cao của một điểm cụ thể.

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