Giả lập gps với xcode
Bài đăng này đã không được cập nhật trong 3 năm
Nếu bạn đã từng làm các app về tìm đường và chỉ đường, chắc hẳn không thể nào vừa code vừa thuê 1 chiếc uber để debug. Do đó xcode đã cải tiến khá nhiều cho phép sử dụng giả lập GPS một cách ổn định và dễ dàng hơn.
- GPX file: Xcode sử dụng 1 loại file chuẩn để giả lập về location đó là gpx, về bản chất nó là 1 file xml, trong đó có nội dung về tên địa điểm, toạ độ và thời gian. Xcode sử dung thẻ <wpt> nên khi dùng tool sinh ra gpx file bạn nó chọn tool tương thích. Dưới đây là một ví dụ về file gpx
<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode">
<wpt lat="21.0096041" lon="105.7888507">
<name>vị trí sô 1</name>
<time>2016-10-28T13:00:55Z</time>
</wpt>
<wpt lat="21.0138243" lon="105.7854004">
<name>vị trí số 2</name>
<time>2016-10-28T13:30:09Z</time>
</wpt>
</gpx>
Bạn để ý file gpx trên thấy hoàn toàn không có tham số về vận tốc hoặc quãng đường. Thế làm thế nào để điều chỉnh được các tham số này...
Chẳng có cách nào khác bằng cách tự phải tính thôi: vận tốc tính bằng quãng đường và thời gian di chuyển giữa 2 điểm mà, do đó vận tốc nhanh hay chậm sẽ phụ thuộc vào khoảng cách giữa 2 thời điểm bạn ở 2 vị trí đó (thẻ time)
Ví dụ như ở file gpx trên thì khoảng cách giữa vị trí số 1 và vị trí số 2 sẽ là 600m (tính dựa trên 2 toạ độ lat & lon), thời gian là 30s -> vận tốc sẽ là 600m/30s = 20m/s Ngoài ra bạn có thể thêm vào nhiều vị trí.
Chú ý là giả lập di chuyển theo đường thẳng nhé, nên hãy chọn sao cho hợp lý.
- Sử dụng GPX file Tạo 1 project mới. Vào New File và chọn GPX File, đặt tên file là HaNoi
Sau đó copy nội dụng file gpx ở trên
Cần phải config project để luôn là enable location (default là enable) Product -> Scheme -> Edit Scheme -> Options -> Allow Location Simulator -> enable
Bạn click vào Default Location sẽ thấy có file HaNoi sinh ra. Bên cạnh đó có nhiều file default do xcode tạo sẵn.
Bây giờ hãy run project, ở khu vực Debug Area bạn sẽ thấy có hình mũi tên, click vào đó để start giả lập di chuyển
Chú ý là cả điện thoại và simulator đều có thể debug đc
Để quan sát rõ hơn về di chuyển, bạn có thể dùng CoreLocation để log ra current location update.
Thank you!
All rights reserved