2013-10-10 18 views
6

iOS uygulamamdaki bölgeleri izlemek için aşağıdaki kodu kullanıyorum. IOS6'da uygulamayı oluşturduğumda mükemmel çalışır. IOS7'de oluşturduğumda, didEnterRegion tetiklenmez.iOS 7 didEnterRegion hiç çağrılmadı

// oluşturmak ve iOS

CLLocationCoordinate2D venueCenter = CLLocationCoordinate2DMake([favoriteVenue.venueLat  doubleValue], [favoriteVenue.venueLng doubleValue]); 
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:venueCenter radius:REGION_RADIUS identifier:favoriteVenue.venueId]; 

AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; 
[appDelegate.locationManager startMonitoringForRegion:[self regionForVenue:favoriteVenue]]; 

// AppDelegate.m yılında sahip bir bölge kayıt

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region 
{ 
    NSLog(@"Entered region: %@", region.identifier); 
} 

"Uygulama yeri güncellemeleri için kayıt" olarak ben de Gerekli arka plan modları belirledik plist dosyalarımda.

Bu özellik için eksik olan herhangi bir fikir iOS7'de çalışabiliyor mu?

Teşekkürler!

cevap

0

Hem iOS 6 hem de 7 için çalışması gereken bir şey, kendi bölgenizde bölgeyi izlemeyi başlatan CLLocationManagerDelegate protokolüne uygun bir genel yöntem oluşturmaktır. Örneğin:

//LocationManagerClass.h 

@interface LocationManagerClass : NSObject 

     {... other stuff in the interface file} 

- (void)beginMonitoringRegion:(CLRegion *)region; 

@end 

ve sonra

//LocationManagerClass.m 

@interface LocationManagerClass() <CLLocationManagerDelegate> 
@end 

@implementation LocationManagerClass 

    {... other important stuff like locationManager:didEnterRegion:} 

- (void)beginMonitoringRegion:(CLRegion *)region 
{ 
    [[CLLocationManager sharedManager] startMonitoringForRegion:region]; 
} 

@end 

Yani sizin durumda bir yan not [appDelegate beginMonitoringRegion:region];

çağırır, ben uygulama temsilcinize içinde konum yönetimi kodunu koyarak DEĞİL öneriyoruz . Teknik olarak işe yarayacak olsa da, genellikle böyle şeyler için iyi bir tasarım deseni değildir. Bunun yerine, yukarıdaki örnekte olduğu gibi, muhtemelen bir singleton olacak olan kendi konum yöneticisi sınıfına koymayı deneyeceğim. Bu blog yayını, uygulama temsilcisine tonlarca öğenin neden koyamadığına dair bazı iyi destek verir: http://www.hollance.com/2012/02/dont-abuse-the-app-delegate/

İlgili konular