2016-04-12 16 views
0

Hallo allerseits in meiner App finde ich die iBeacons hier die didExitRegion Methode, die ich aufgerufen habe, wenn ich die Region verlasse, aber die didEnterRegion Methode wird nicht aufgerufen, wenn ich die Region betrete. ich reparierte die Aktualisierung im Hintergrund, Remote-Benachrichtigungen, Standortanfrage immer in info.plistdidEnterRegion wird nicht aufgerufen, aber didExitRegion wird in Ziel C aufgerufen

hier mein Code

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    locManager=[[CLLocationManager alloc] init]; 
    locManager.delegate=self; 

    [self initRegion]; 
    if([locManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
    { 
     [locManager requestAlwaysAuthorization]; 
    } 
// clBeconRegion.notifyOnEntry=YES; 
    clBeconRegion.notifyEntryStateOnDisplay=YES; 
} 

-(void)initRegion 
{ 
    NSUUID *uuid=[[NSUUID alloc]initWithUUIDString:UUID]; 
    clBeconRegion=[[CLBeaconRegion alloc]initWithProximityUUID:uuid identifier:@"BeaconExample"]; 

// clBeconRegion=[[CLBeaconRegion alloc]initWithProximityUUID:uuid major:8983 minor:738 
//             identifier:@"aB"]; 
    // clBeconRegion=[[CLBeaconRegion alloc]initWithProximityUUID:uuid major:8983 minor:728 
    //             identifier:@"bB"]; 
    clBeconRegion.notifyOnEntry=YES; 
// clBeconRegion.notifyOnExit=YES; 
    clBeconRegion.notifyEntryStateOnDisplay=YES; 

    [locManager startMonitoringForRegion:clBeconRegion]; 
} 
-(void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region{ 
    NSLog(@"didStartMonitoringFor Region"); 

// [locManager startRangingBeaconsInRegion:clBeconRegion]; 
    [locManager requestStateForRegion:clBeconRegion]; 

} 
-(void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{ 

    switch (state) { 
     case CLRegionStateInside: 
      [locManager startRangingBeaconsInRegion:clBeconRegion]; 
         NSLog(@"Region Inside"); 
      break; 
     case CLRegionStateOutside: 
//   [locManager stopRangingBeaconsInRegion:clBeconRegion]; 
      NSLog(@"Region OutSide %ld",(long)state); 
     case CLRegionStateUnknown: 

     default: 
      // stop ranging beacons, etc 
      NSLog(@"Region unknown %ld",(long)state); 
    } 
} 
-(void)locationManage:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region{ 
    NSLog(@"Entered Region"); 
    [locManager startRangingBeaconsInRegion:clBeconRegion]; 

    CLBeaconRegion *reg=(CLBeaconRegion *)region; 
    [disObj login:[NSString stringWithFormat:@"%@", reg.major] :[NSString stringWithFormat:@"%@", reg.minor]]; 
    NSString *enterRegion=[NSString stringWithFormat:@"You ENTERED a Region %@",reg.minor]; 
    [self sendLocalNotificationWithMessage1:enterRegion]; 
} 
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region{ 

     CLBeaconRegion *reg=(CLBeaconRegion *)region; 
     NSString *exit=[NSString stringWithFormat:@"You Exit a Region %@",reg.minor]; 
    [self sendLocalNotificationWithMessage1:exit]; 
    NSLog(@"Exit Region"); 
    [locManager stopRangingBeaconsInRegion:clBeconRegion]; 
} 
-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{} 
+0

Um zu klären, Sie sagen, Sie bekomme * mu ltiple * ruft zu 'didExitRegion' auf (wenn Sie ein Beacon ein- und ausschalten), aber niemals zu' didEnterRegion'? – davidgyoung

+0

Ja, wenn ich eine Region verlasse bekomme ich mehrere Aufrufe von didExitRegion aber didEnterRegion nicht aufgerufen –

Antwort

0

prüfen didEnterRegion Signatur ist: Sie locationManage schrieb nicht Location