2012-09-20 34 views
7

Tôi đã cập nhật iOS SDK thành phiên bản 6. Sau đó tôi đã biên dịch ứng dụng của mình (hoạt động tốt trong iOS 4 & iOS 5) nhưng hiện tại dịch vụ vị trí không hoạt động. My delegate không nhận được bất kỳ cập nhật nào và mũi tên vị trí trên không xuất hiện ... Tôi đang bắt đầu dịch vụ theo cách thông thường:iOS 6 và Dịch vụ vị trí không hoạt động

[locationManager startUpdatingLocation]; 

Dự án của tôi không phải là ARC.

Điều gì đang xảy ra? Điều này khiến tôi phát điên ...

Xin cảm ơn trước.

Trả lời

4

Đây là một sự thay đổi trong iOS6:

Bạn cần phải thực hiện locationManager:didUpdateLocations: thay vì locationManager: didUpdateToLocation: fromLocation để được thông báo khi vị trí được cập nhật.

Bạn cũng nên đọc tài liệu về startUpdatingLocation.

+0

Cảm ơn lời khuyên của bạn.Bây giờ tôi đang sử dụng locationManager: didUpdateLocations: nhưng nó không bao giờ được gọi. Mũi tên vị trí không xuất hiện ... Trong iOS6, tôi không thể thấy ứng dụng tôi đang phát triển trong cài đặt -> bảo mật -> vị trí. Ngoài ra, bây giờ đôi khi tôi nhận được đăng nhập này: purgeIdleCellConnections: tìm thấy một để thanh lọc conn = 0x1d5d2250. Đôi khi không. Bất kỳ đầu mối? Cảm ơn trước! – Samui

+0

Điều này có thể trả lời câu hỏi của bạn: http://stackoverflow.com/questions/12519733/location-services-not-working-in-ios-6 –

+0

Tôi đã có cả hai mã nhận dạng nhưng vấn đề vẫn còn: ( – Samui

-4

Tôi có quá đơn giản ở đây không? Trong Bảo mật, Vị trí trông giống như trong các vấn đề trước đó. Tất cả những điều phiền toái là gì?

+2

"Làm việc cho tôi" không phải là điều hữu ích nhất mà bạn có thể có – AndrewC

6

Đảm bảo bạn có CFBundleDisplayName trong tệp .plist của dự án. Thêm phím đó đã sửa nó cho tôi.

+0

Điều này làm việc cho tôi Cảm ơn bạn – Ryan

+0

Đã làm việc cho tôi. – ApplinguaRob

+0

Cảm ơn rất nhiều! Tại sao một địa ngục có bất cứ điều gì để làm với người khác là ngoài tôi. Các tài liệu nói thậm chí không bao gồm thuộc tính đó trừ khi bạn đang bản địa hóa. –

6

Chỉ cần đặt thuộc tính pausesLocationUpdatesAutomatically của Trình quản lý vị trí thành NO. Đây là một tính năng mới của iOS 6, vô hiệu hóa tính năng cập nhật vị trí khi ứng dụng chạy ở chế độ nền. Giá trị mặc định của thuộc tính này là YES.

1

Trong trường hợp của tôi, tôi đã có người quản lý vị trí dưới một lớp khác nhau và tôi đã gọi lớp này từ bộ điều khiển chính. Điều này không hoạt động và didUpdateLocations không được gọi.

// 
// LocationServices.h 
// 

#import <Foundation/Foundation.h> 
#import <CoreLocation/CoreLocation.h> 

@interface LocationServices : NSObject <CLLocationManagerDelegate> { 
    CLLocationManager *locationManager; 

} 

@property (nonatomic, retain) CLLocationManager *locationManager; 

- (void)startLocationServices; 

@end 



// LocationServices.m 
#import "LocationServices.h" 

@implementation LocationServices 
@synthesize locationManager, currentLocation; 

- (void)startLocationServices { 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.pausesLocationUpdatesAutomatically = NO; 
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; 

    if ([CLLocationManager locationServicesEnabled]) { 
     [locationManager startUpdatingLocation]; 

    } else { 
     NSLog(@"Location services is not enabled"); 
    } 
} 

//////////////////////////////////////////////// 
- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations { 
    CLLocation* location = [locations lastObject]; 
    NSLog(@"Updated: latitude %+.6f, longitude %+.6f\n", 
      location.coordinate.latitude, 
      location.coordinate.longitude); 
} 
@end 

// Main controller 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

..... 

LocationServices *locationSerices = [[LocationServices alloc]init]; 
[locationSerices startLocationServices]; 
...... 
} 

Mã trên không hoạt động. Tại sao? Tôi không biết .... bạn có thể dễ dàng mất hứng thú khi bạn dành quá nhiều thời gian để cố gắng làm một thứ được cho là đơn giản. iOS là môi trường lập trình rất phức tạp và không thân thiện. Có nhiều cách để làm một việc, chỉ có một tác phẩm, bạn không thể trộn lẫn và kết hợp mà không đưa ra một vấn đề. Bạn phải làm tất cả mọi thứ bởi cuốn sách hoặc bạn hoặc bạn không nhận được gì. Thậm chí không một gợi ý rằng bạn đã làm gì đó sai ... bực bội ...

Thay vào đó khi tôi thực hiện locationManager: (CLLocationManager *) didUpdateLocations quản lý: trong bộ điều khiển tất cả mọi thứ chính làm việc tốt

0

đặt cài CFBundleDisplayName giải quyết vấn đề cho tôi. Cập nhật vị trí cùng một điều chưa bao giờ được gọi, chỉ cần đặt tham số info.plist và nó bắt đầu hoạt động.

0

Tôi đã thử mọi thứ trong tệp plist, dọn dẹp, xây dựng lại, mục tiêu mới, cấu hình, v.v. v.v. Không có gì hoạt động. Nhưng cuối cùng tôi đã sửa nó. Tôi đã phải tạo một dự án Xcode 4.5 mới từ đầu, cấu hình lại nó, thêm tệp theo tệp và khung theo cách thủ công. Dường như dự án XCode cũ của tôi có nội dung nào đó không tương thích với XCode cuối cùng. Tôi viết điều này ở đây vì có lẽ nó có thể tiết kiệm 10 giờ làm việc tiếp theo của ai đó.

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