5

메시징 앱 (WhatsApp와 같은)에서 작업하고 있으며 클라이언트의 주요 기능 (클라이언트 1에서 클라이언트 2로 메시지 보내기) 구현에 대한 딜레마가 있습니다.메시징 앱에서 APN 사용

문제는 클라이언트가 NSURLConnection을 사용하여 서버에 메시지를 보내고 서버가 열린 소켓을 유지 및 관리하지 못하고 클라이언트 중 하나에 대한 메시지를 보낼 수없는 중앙 집중식 서버 디자인을 사용한다는 것입니다. 클라이언트는 타이머를 가지고 2 초마다 서버에 쿼리하여 새 메시지가 기다리는 지 확인합니다.

이 방법의 문제점은 매 2 초마다 서버를 쿼리하면 배터리가 매우 빨리 소모되므로 클라이언트를 대신하여 서버를 쿼리하여 APNS를 사용하면 클라이언트 1이 서버에 메시지를 보내면 서버가 client2에 푸시 알림을 보내면 client2가 서버에서 데이터를 가져옵니다.

대용량 푸시 알림 사용을 요구하는 거대한 메시징 앱에서이 접근 방식을 사용할 수 있습니까?

답변

5

예. 나는이 접근법이 괜찮다고 말하고 잘 수행 할 것입니다.

응용 프로그램이 실행 중일 때 소켓 연결을 만들 수도 있습니다. 그러나 사용자가 앱을 종료 할 때 APNS 방식 (원하는 방식)도 작동합니다.

APNS는 엄청난 부하를 처리 할 수 ​​있습니다. 내가 눈치 챘을 때까지 지연은 거의 없었다.

iOS의 PUSH-System은 Apple에 대한 HTTP 연결이며 응답 채널을 몇 시간 동안 열어 두는 데 사용됩니다 (몇 시간 동안 웹 페이지를로드하는 것처럼). 약 10 %의 배터리를 사용합니다. 다른 keep-alive HTTP/소켓 연결을 만들지 말고 Apple 채널 (APNS)을 다시 사용하여 최종 사용자 배터리를 절약하십시오.

앱에서 푸시 알림을 받고 JSON 데이터를 구문 분석 한 다음 자신의 서버로 가져 오기/동기화 할 수 있습니다.

앱이 포 그라운드에서 실행되지 않을 때 수행해야 할 작업을 염두에 두어야합니다. 그러면받은 메시지를 WhatsApp에서와 같이 APNS 메시지로 표시 할 수 있습니다.

+0

"하지만 사용자가 앱을 종료 할 때 APNS 방식 (선호하는 방식)이 작동합니다"- 사용자가 오프라인 상태 일 때도 APNS를 사용할 계획이었습니다. 내 주요 관심사는 다음과 같습니다. 1. APNS에서 핵심 메시징 메커니즘으로 사용할 수 있도록 레이블을 다시 지정 했습니까? 2. 사과가 내 서버에서 수천 또는 수십만 개의 푸시 알림을받을 수 있습니까? – Eyal

+1

1. 사과 "법"(스팸, 광고 물 없음)을 위반하지 않으면 yes입니다. WhatApp와 공동. 또한 APNS를 사용합니다. 그리고 "non-app-foreground"모드에서 메시지를 받기를 원할 때 다른 방법은 없습니다. 2. 예. APNS의 부하가 높기 때문에 앱을 거부하지 않습니다 (푸시 메시지의 콘텐츠가 사과 관점 [스팸, 광고 등]에서 유효하지 않음) –