2014-03-27 2 views
3

로컬 알림을 사용하여 특정 지역에서 들어가거나 나가면 사용자에게 알리는 iBeacon 응용 프로그램을 개발 중입니다. 하지만 백그라운드에서 응용 프로그램을 사용할 때 알림이 한 번만 표시됩니다. 어떤 도움을 주시면 감사하겠습니다.UILocalNotification iOS7에서 한 번만 발생합니다.

- (void)locationManager:(CLLocationManager*)manager didEnterRegion:(CLRegion *)region { 

    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.fireDate = nil; 
    notification.alertBody = @"Welcome"; 
    notification.alertAction = @"View"; 
    notification.soundName = UILocalNotificationDefaultSoundName; 
    notification.applicationIconBadgeNumber = 0; 

    [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
} 


-(void)locationManager:(CLLocationManager*)manager didExitRegion:(CLRegion *)region { 

    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.fireDate = nil; 
    notification.alertBody = @"Thank you for coming"; 
    notification.alertAction = @"View"; 
    notification.soundName = UILocalNotificationDefaultSoundName; 
    notification.applicationIconBadgeNumber = 0; 

    [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 
} 
+0

"한 번만"을 의미하는 것은 지역을 입력하거나 지역을 떠날 때처럼? – rckoenes

+0

내가이 지역에 들어서 자마자 더 이상 통보를받지 못했다. 응용 프로그램이 포 그라운드에있는 경우 알림을 얻으려면 –

답변

1

당신이 작동하지 않는 결론을하기 전에 didEnterRegion/didExitRegion에 전화를 얻기 위해 최대 15 분까지 대기해야합니다 :

여기 내 코드입니다. 일부 장치에서는 감지 시간이 오래 걸릴 수 있습니다. here을 참조하십시오.

나는 콜백에 NSLog 행을 추가하여 그들이 전혀 호출되지 않고 있는지 확인할 수 있습니다. 그렇지 않은 것으로 의심됩니다. true 인 경우 문제는 탐지가 아니라 탐지와 관련된 것입니다.

+0

답장을 보내 주셔서 감사합니다. 응용 프로그램이 포 그라운드 경고로 이벤트에 대해 올바르게 트리거되는 경우 –

+0

범위 설정이 활성화되어 있습니까? 그렇다면 앱이 포 그라운드에있을 때 지연을 없애고 앱이 백그라운드에있을 때 지연이 발생합니다. – davidgyoung

2

didEnterRegion 및 didExitRegion 메소드에는 시간 간격 값이 있습니다. 이 메서드는 몇 시간 후에 발생합니다. 그리고 지역을 완전히 빠져 나가야합니다. 또한 didDetermineState 메소드를 사용할 수 있습니다.

iOS 시뮬레이터에서 또는 장치에서 해당 지역 모니터링 코드를 테스트, 지역 이벤트가 지역 경계 후 ​​즉시 일어나지 않을 수 실현 아이폰 OS 앱의 지역 모니터링 지원을 테스트

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html

건넜다. 잘못된 알림을 방지하기 위해 iOS 은 특정 임계 값 조건이 충족 될 때까지 지역 알림을 제공하지 않습니다. 특히 사용자의 위치는 영역 경계를 넘어야하며 경계에서 최소 거리 인 까지 이동하고 알림이보고되기 전에 최소 거리가 최소 20 초 이상 유지되어야합니다.

특정 임계 값 거리는 하드웨어와 현재 사용 가능한 위치 기술에 따라 결정됩니다. 예를 들어, Wi-Fi를 사용하지 않는 경우 과 같이 지역 모니터링은 정확하게 보다 적습니다. 그러나 테스트 목적으로 최소 거리가 약 200 미터라고 가정 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 응용 프로그램이 포 그라운드 경고에서 이벤트에 대해 올바르게 트리거되는 경우 –

관련 문제