0

나는 어딘가에 사과의 표지판을 읽었고, 지리 펜스와 비슷한 방식으로 작동하며, 전화 당 20 개로 제한되어있다.표지판은 지리 울타리처럼 작동하며 동일한 제한은 20입니까?

이 경우입니까?

사용 사례 : 앱이 실행 중이 아니며 휴대 전화가 깨어나지 않았을 때 사용자에게 푸시 알림을 보내려합니다. 우리는 전화 당 20 개 울타리의 한계치를 치지 않고 중요한 위치 변경 기능 및 유사한 솔루션 (현재)을 처리해야하는 것을 피하기 위해 지리 울타리 대신 비콘을 사용하려고 생각하고 있습니다.

답변

1

비콘은 지오 펜스와 유사하게 작동합니다. 비콘 - 영역 (블루투스 범위에서)을 입력하거나 종료 할 때 알림을 받고, 모든 비컨의 범위를 지정하여 해당 ID를 가져올 수 있습니다.

또한 CLBeaconRegions에는 20 개의 영역 제한이 있습니다. 참조 : https://developer.apple.com/reference/corelocation/cllocationmanager/1423656-startmonitoringforregion 모니터링 지역과 범위를 조합하면 한 지역에서 물건을 처리 할 수 ​​있습니다. (유스 케이스에 크게 의존)

지역 기반 알림을 보내려는 경우 비콘을 사용할 수 있습니다.

+0

사용 사례가 있다면 도시 전체에서 수천 개의 표지를 갖고 싶습니다. 모니터링 지역/범위에서이 작업을 수행 할 수 있습니까? – user1721135

+0

테스트해야 할 것이 있습니다. 문제는 백그라운드에서 문제없이 지역을 모니터링 할 수 있다는 것입니다. 레인 징 배경은 배경 시간을 요구할 때만 작동합니다. 수천 개의 표지 사이에 항상 입장/퇴장 콜백이 있으면 콜백을 받고 범위를 시작할 수 있습니다. 비콘 영역이 겹치면이 문제를 해결할 다른 영역이 있어야합니다. FYI : 외부에 수천 개의 표지가있는 경우 돈을 지출해야합니다. – Rags93

+0

20 울타리 한도를 다루지 않아도되기 위해 비컨에 투자하는 것이 가치가 있다면, 기본적으로 파악하려고합니다. 그것은 그것 같이 확실히 소리가 나지 않는가? – user1721135

1

예 최대 20 개의 영역 (비콘 및 지오 펜스 결합)이 있습니다. 1000 개의 비컨을 모니터 할 수있는 방법이 있지만 유스 케이스에 따라 다릅니다.

다른 와일드 카드를 사용하고 1000 개의 비컨을 모니터링 할 수 있지만 일부 제한 사항이 있습니다. 비콘 UDID, 주 값 및 부 값과 같은 신호 구성으로 재생해야합니다.

비컨 중 하나만 출입하는 데 관심이있는 경우 (특정 비컨에 관심이없는 경우). 실제로 모든 비컨의 동일한 UDID를 설정하고 하나의 비콘 영역 만 모니터링하여 문제를 해결할 수 있습니다.

let region = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "YOUR_BEACONS_UDID_32_DIGITS")!, identifier: "beacon_region1") 
locationManager.startMonitoring(for: region) 

UDID 및 주요 값으로 비콘을 그룹화 할 수도 있습니다.

let r1 = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "YOUR_BEACONS_UDID_32_DIGITS")!, major: 1000, identifier: "region_1000") 

따라서 백그라운드에서 20 개 그룹의 비컨을 모니터링 할 수 있으며 각 그룹은 원하는만큼의 비컨을 가질 수 있습니다.

1

CoreLocation API는 20 개의 영역 (지오 펜스 영역과 결합 된)으로의 비콘 영역 모니터링을 제한하지만 사용자에게 알림을 보내기 위해 약 86 억 개의 서로 다른 비컨 위치를 찾을 수 있습니다.

네, 맞습니다. 86 억 - 85,899,345,920에 해당합니다. 충분히 생각하니?

간단한 기술은 비콘 모니터링 API를 비콘 측정 API와 결합하는 것입니다. 모니터링을 사용하면 비컨이 감지 될 때 백그라운드에서 앱을 깨울 수 있습니다. 그런 다음 범위 지정 API를 사용하여 탐지 된 정확한 비콘 식별자를 읽고 사용자에게 푸시 알림을 보낼 수 있습니다. 이것은 여전히 ​​사용자의 주머니에 앉아있는 전화로 작동합니다.

각 신호 기호 식별자는 메이저 (0-63355)와 마이너 (0-63335)를 포함하므로 다른 ProximityUUID를 사용하여 최대 20 개의 신호 영역을 모니터링하고 20 x 65536 x 65536 = 85,899,345,920 다른 조합을 얻을 수 있습니다 .

let region = CLBeaconRegion.init(proximityUUID: UUID.init(uuidString: "2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6")!, identifier: "beacon_region1") 
locationManager.startMonitoring(for: region) 
locationManager.startRangingBeacons(in: region) 
// TODO: repeat the above for up to 19 more regions 

...

public func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) { 
    for beacon in beacons { 
    var uuid = beacon.proximityUUID 
    var major = beacon.major 
    var minor = beacon.minor 
    // TODO: Send a unique local notification to the user for this 
    //  uuid/major/minor combination identifying a particular place 
    } 
} 

이 방법에는 몇 가지 제한이 있습니다. 귀하의 비콘이 서로 겹치는 무선 범위 (~ 50 미터) 내에 배치되면 한 비컨이 잠시 동안 옆집에있는 사람이 비컨이 두 지역에 있지 않으면 배경 웨이크 업이 발생하지 않습니다. 이 제한을 극복하기 위해 게임을 할 수있는 게임이 있지만 많은 경우에는 걱정할 필요가 없습니다.