2013-12-11 2 views
3

저는 몇 주 동안 ibeacons와 작업 중이며, iphone이 beaconregion을 친 때 (근처에있는 경우) 현지 알림을 게시하려고했습니다.didRangeBeacons 메서드는 표시가 꺼져있을 때 호출되지 않습니다.

앱이 백그라운드에서 잠겨 있고 디스플레이가 켜져있을 때 제대로 작동했지만 내 디스플레이가 검은 색으로 바뀌면 didRangeBeacons 메소드가 중지되었습니다.

은 우리가 디스플레이 반면에 알림을받을 수있는

region.notifyEntryStateOnDisplay = true; 

를 사용하여 알고있다.

앱이 잠겨 있고 화면이 꺼져있는 동안 알림을 게시 할 수있는 방법이 있습니까?

도와주세요.

답변

2

아니요, 이것은 의도적으로 설계된 것으로 iOS의 배터리 절약 목표를 반영합니다. 앱이 포 그라운드되어있는 동안에 만 didRangeBeacons:에 셀 수 있습니다.

David Young에는 명확한 설명이 포함되어 있습니다.

4

비컨 항목 알림과 범위 지정을 모두 요청했고 화면이 잠겨있는 동안 새 지역을 입력하면 didEnterRegion 메시지 (또는 가능한 경우 didDetermineState 메시지)와 약 5 초 간의 범위 지정 메시지가 표시됩니다. 사용자가 5 초 동안 장치를 깨우지 않으면 레인 징 메시지가 중지됩니다.

따라서 백그라운드에서 비콘의 근접성을 기준으로 필터링 할 수 없습니다. 범위 값이 가까워 질 때까지 기다리려고하면 사용자가 해당 닫기를 가져 오기 전에 장치가 범위 지정 메시지를 보내지 않으므로 알 수 없습니다. 그런 다음 사용자가 지역을 다시 벗어나거나 휴대 전화를 깨우고 앱을 포 그라운드로 되돌릴 때까지 해당 비콘 지역에 대한 알림을 더 이상받지 못합니다.

didEnterRegion (또는 didDetermineState) 메시지를받을 때 내가 작업중인 앱에 로컬 알림이 게시됩니다. 이로 인해 화면에 불이 들어 오지만 알림 시간이 길어지는 것은 아닙니다.

+0

당신이 적절한시기의 그 오초에 있었다처럼 그냥 다음 후, 비콘 영역에 입력처럼, 난 그냥 경고를 만들 것입니다 소리 5 초간의 빛이 켜져있을 때 내가 통지를 얻을 수 있습니다, 나는 이것을 시도 할 것이다. 감사 Duncan – Madhu

+0

좋은 지적 감사합니다 – Fulkron

10

백그라운드에서 비컨을 범위 지정하는 것이 전적으로 가능합니다.

현재 위치 관리자와 함께 설정하거나 병렬 설정으로 제한을 해결할 수 있습니다 (차이는 없습니다). 또한 프로젝트에서 백그라운드 위치 업데이트 기능을 활성화해야합니다.

locationManager2 = [[CLLocationManager alloc] init]; 
locationManager2.delegate = self; 
locationManager2.desiredAccuracy = kCLLocationAccuracyKilometer; 
[locationManager2 startUpdatingLocation]; 

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ 
    //Do nothing here, but enjoy ranging callbacks in background :-) 
} 

이제 Apple에서 사용자에게 앱에서 배경 위치 업데이트 모드가 필요한 이유를 묻는다면 좋은 설명이 필요합니다. 그들은 그것으로 매우 까다 롭습니다.

+0

그것은 작동합니다, 조언 주셔서 감사합니다! – dru

+0

Yeahhhh 마침내 그것의 일이, 배열에 10beacons을 가지고, 범위에 대한 루프에 대한 모든 비컨에 대한 호출, 그리고 마침내 내 애플 리케이션은 잠자기 모드 (즉, 빛이없는) 잠긴 상태에도 불구하고 신호에 이르기까지, 무엇 내가 한 일은 근접 uuid의 각 루프에 대해 CLBeaconregion 객체를 만든 다음 [_locationManager startMonitoringForRegion : beaconRegionsObj]에 전달하는 것으로 시도한 것입니다. [_locationManager startRangingBeaconsInRegion : beaconRegionsObj]; – Madhu

1

나는 Madhu와 같은 문제가 있습니다. 업데이트 된 위치 대신, 나는 didUpdateLocations을 사용하여 저에게 효과적입니다. 이제 앱이 백그라운드에서 작동 중이거나 잠금 상태로 종료 된 상태에서 신호를 보낼 수 있습니다.

켜기 iOS 84

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
    //Do nothing here 
} 
관련 문제