2017-11-05 5 views
1

사람들과 어울리는 앱을 디자인해야합니다.iOS11 - 무한히 배경에 앱을 실행하십시오.

  1. 사용자 A는 "여기 있습니다."라고 표시합니다. 예를 들어 특정 범위로. 150m.
  2. 사용자 B는 사용자 A를 포함하는 범위로 위치를 표시합니다.
  3. 표시된 위치가 범위 내에있는 경우 일치가 발생합니다.
  4. 사용자가 범위 내에 있지 않은 경우. 그런 다음 사용자는 신규 사용자와 일치하지 않습니다.

이러한 요구 사항에 직면하여 많은 어려움이 있습니다.

사용자 A가 자신의 위치를 ​​표시하고 사용자가 지역을 떠나면 CoreLocation지역 모니터링과 같은 기능을 포함합니다. 그래서 나는 언제든지 자신의 지역에서 사용자의 출구를 추적 할 수 있습니다. 그리고 실제로 앱을 깨우는 좋은 기능은 일시 중지되었거나 종료 된 상태입니다.

모든 사용자가 인터넷에 연결되어 있으면 아무 문제가 없습니다. 사용자 인터넷 연결이 끊어지고 사용자가 해당 지역을 나가면 이미 CoreLocation 지역 모니터링에서 제공 한 출구 지역 알림을 노드 서버로 보낼 수 없습니다.

그러나 사용자가 좌표를 지역으로 표시하면 사용자가 인터넷에 연결되어 있지 않은 시간에 이미 종료되므로 exitRegion 정보가 전송되지 않습니다. 따라서 사용자는 범위가 아닐지라도 일치를 얻습니다.

이 상황에서 어떤 경기가 있기 전에 "안녕하세요?"또는 regionState (지역 모니터링 제공)과 같은 사용자에게 ping을 실행해야합니다. 아이디어로 문제는 여기서 시작

,

, 난 내가 침묵 알림을 사용할 수 있다고 가정하고 응용 프로그램이 깨어 후 내가 제한된 배경 작업의 30 초 후 클라이언트에서 reponse를하지 않는 경우에, 나는 할 수 그것이 "사용자가 이미 해당 지역에 있다면"나는 "일치하지 않습니다." 그러나 새로운 사람이 MongoDB에 올 때마다 나는 모든 클라이언트에게 조용한 알림을 보낼 수 없습니다.

Apple은 이렇게 말합니다.

자동 알림은 백그라운드에서 앱을 깨우는 방법을 의미하지 않으며 우선 순위가 높은 업데이트를 의미하지 않습니다. APNs 은 낮은 우선 순위로 자동 알림을 처리하므로 총 수가 과도 해지면 배달을 모두 차단할 수 있습니다. 실제 한도는 동적이며 조건에 따라 바뀔 수 있지만 시간당 몇 건의 알림을 보내지 마십시오.

따라서 침묵하는 알림이 도달 할 것이라고 보장 할 수는 없으며 계속해서 알림을 보낼 수 없습니다. 자동 알림이 만료되면 어떻게됩니까?

백그라운드마다 소켓 io를 사용하여 클라이언트 당 열린 연결을 유지할 수 있습니다. 따라서 Apple은 배경 작업을 제한된 시간으로 다시 제한합니다.IOS는 백그라운드 상태에서 내 응용 프로그램을 죽이고 전화가 잠긴 상태 일 때 열려있는 연결이 끊어지며 인터넷 연결이 활성화되어 있어도 오프라인으로 클라이언트를 볼 수 있습니다.

voip과 같은 특정 배경 모드의 승인을 사용하여 사용자가 인터넷에 연결되어 있지만 응용 프로그램이 종료되었다고 판단한 경우 앱을 깨우고 응답을 서버에 보냅니다. 하지만 애플은 내 애플을 거부 할 것이다. 왜냐하면 나는 voip 앱이 아니기 때문이다.

모든 클라이언트에게 ping을 보내어 여전히 범위 내에 있는지 확인하는 솔루션이 필요합니다. 만약 내가 잃어버린 응답이 클라이언트의 인터넷 손실로 인해 미래의 일치를 방지합니다.

사용자가 인터넷에 연결되어있는 앱을 열 때 성공하면이 정보가 오프라인 일 때 사용자 정보를 업데이트 할 수 있습니다. 2 시간 전에 다른 사용자와의 경기가 있었지만 귀하의 exitRegion 때문에 일부를 놓친 것처럼.

그렇다면 인터넷에 연결되어 있지 않은 지역의 모든 클라이언트에게 물어볼 필요가있는 것은 무엇입니까?

감사합니다.

+1

"그렇다면 인터넷에 연결되어 있지 않은 지역의 모든 고객에게 묻기 위해 필요한 것은 무엇입니까?" – matt

+0

권. 네가 옳아. 그러나이 상황을 해결하기위한 제안이 있습니까? 또는 단순히 인터넷 연결이 없을 때 앱을 사용할 수 없도록 설정하십시오. 따라서이 상태에서 장소를 표시하는 사용자는 오프라인 일 때 일치하지 않습니다. –

+0

내 친구 찾기를보세요. 내 친구의 위치를 ​​찾을 수없는 경우 (전화기의 주전이가 끊긴 것 같음), 위치를 알 수 없으며 마지막 위치가 표시 될 수 있습니다. – matt

답변

0

신속한 백그라운드 모드를 살펴보십시오. 특히 사용자의 위치가 업데이트되면 앱을 깨우는 위치 업데이트입니다. 더 많은 정보를 찾을 수 있습니다 here

+0

새로운 일치를 방지하기 위해 사용자가 오프라인 상태 일 때 사용자의 이탈을 모니터링하는 것은 어렵습니다. 내 응용 프로그램의 논리에 몇 가지 잘못된 것들이 있다고 생각합니다. 아니면 기술적으로 불가능한 것을 요구하고 있습니다. –

0

iBeacons가 솔루션의 일부가 될 수있는 것처럼 들립니다. 앱을 사용하는 모든 사용자가 특정 iBeacon을 브로드 캐스트하고 앱의 브로드 캐스트를 수신 대기하도록 비콘 영역을 설정합니다. 기기가이를 감지하면 앱에 알리고 비컨이 감지 될 때 앱이 실행 중이 아닌 경우 앱을 실행합니다.