기술 가이드라인

  • 기술 가이드라인을 준수하는 것 외에도 기술 검토를 준비하기 위한 팁을 보려면 제출 준비 관련 문서를 참조하세요.

전 세계적으로 스마트폰이 점점 더 널리 보급되고 있지만 신흥 시장 인구의 대다수는 여전히 피처폰을 사용합니다. 모든 사람이 Free Basics에 액세스할 수 있도록 Facebook에서는 가벼운 모바일 웹사이트를 지원하는 데 초점을 맞추고 있습니다.

상세 정보

Free Basics 플랫폼 내에서 웹사이트가 적절히 표시되고 휴대폰 및 데이터 요금제 유형과 관계없이 모든 사람이 액세스할 수 있도록 하려면 모바일 웹사이트가 Free Basics 프록시에서 만든 특정 기술적 조건을 충족해야 합니다. 특히 모바일 웹사이트가 다음이 없는 상태에서 작동해야 합니다.

  • JavaScript
  • iframe
  • 동영상 및 고화질 이미지
  • 플래시 및 Java 애플릿

웹사이트를 구현한 후에 위의 항목이 하나라도 발견되는 경우 Facebook에서는 해당 콘텐츠가 삭제된 것을 확인할 때까지 웹사이트를 차단합니다.

JavaScript

모든 기기에서 작동할 수 있는 경험을 제공하기 위해서는 JavaScript가 비활성화되었을 때도 서비스가 여전히 작동하고 유용해야 합니다. 즉, 콘텐츠가 핵심 사용자 경험, 그중에서도 특히 이동이나 기타 핵심 기능을 위해 JavaScript를 사용해서는 안 됩니다.

iframe

iframe에 제한이 적용될 수 있으므로 콘텐츠에서 iframe을 사용해서는 안 됩니다. iframe은 대체로 모바일 경험을 저하시키는 경우가 많기 때문에 iframe을 아예 사용하지 않는 것이 좋습니다.

동영상 및 대용량 이미지

Free Basics를 사용하는 사용자는 데이터 사용량이 낮으므로 동영상, 고화질 이미지 등과 같이 데이터 소비량이 많은 리소스는 피하세요. 가능한 한 최적의 경험을 제공하기 위해 Facebook에서는 일부 동영상과 이미지를 수정해야 할 수 있고 경우에 따라서는 표시하지 않을 수 있습니다.

플래시 및 Java 애플릿

Free Basics는 플래시 리소스 또는 Java 애플릿을 지원하지 않습니다. 자신의 서비스에서 이러한 기술을 사용하는 경우, 적절한 폴백을 구현하여 해당 기술을 적절히 숨기고 사이트 기능을 방해하지 않도록 하시기 바랍니다.

HTTPS 지원

Facebook에서는 Free Basics에 전송되는 정보를 가능하면 모두 암호화합니다. 사용자가 Free Basics Android 앱을 사용하는 경우 서비스에서 HTTP만 사용하도록 지정하지 않는 한 트래픽이 전체적으로 암호화됩니다. 모바일 브라우저에 표시되는 Free Basics 웹사이트의 경우, Facebook은 '이중 인증서' 모델을 사용하여 사용자 기기와 Facebook 서버 사이의 트래픽을 양방향으로 암호화합니다. 개발자 서버에서 HTTPS를 지원하는 경우, Facebook은 당사 서버와 개발자 서버 사이의 트래픽도 암호화합니다. 귀하의 서비스에서 아직 HTTPS를 지원하지 않더라도 Facebook에서는 가능하면 Facebook 서버와 사용자 기기 사이에서 주고받는 정보를 암호화합니다. 단, 개발자가 이중 인증서 HTTPS를 사용하지 않도록 Facebook에 요청하는 경우는 예외입니다. 사용자가 Free Basics 모바일 웹사이트를 사용할 때 서비스가 적절히 기능하고 사용자에게 예상치 못한 요금이 부과되지 않도록 Facebook 보안 서버에서 정보가 일시적으로 복호화됩니다.

Facebook은 암호화되어 읽을 수 없는 형식으로 저장된 쿠키뿐만 아니라 서비스의 도메인 이름과 사용되는 데이터의 용량(종단간 암호화를 사용하여 표시되는 정보에 해당)만 저장하여 복호화되어 있는 중에도 해당 정보를 안전하게 보호합니다.

Internet.org 프록시

Free Basics 내에서 모든 트래픽은 Internet.org 프록시를 통해 라우팅됩니다. 그 이유는 사업자가 개발자의 서비스를 적절히 식별하고 요금을 부과하지 않도록 표준 트래픽 플로를 만들기 위해서입니다. Internet.org에서는 개발자의 서비스를 호스팅하거나 캐시하지 않습니다. 개발자는 개발자의 서버에서 서비스를 운영하고 전적으로 유지 관리할 수 있으며, Free Basics 플랫폼을 통해 전달되는 요청을 감지하여 콘텐츠에 대해 지역 차단(geo-blocking)과 같은 관리를 적용하거나 Free Basics 플랫폼 트래픽을 측정할 수 있습니다.

IP 주소

  • SSL 암호화로 인해 Free Basics Android 앱은 x-iorg-fbs-uipx-iorg-fbs HTTP 헤더 필드를 지원하지 않습니다.

요청은 Internet.org 프록시를 통과하므로 HTTP 요청 IP 주소는 원래 요청자가 아니라 항상 Facebook의 서버로부터 전송됩니다. X-IORG-FBS-UIP HTTP 헤더 필드(Facebook 프록시에서 생성)에서 원래 요청자 IP를 얻을 수 있습니다.

Facebook 프록시는 XFF(X-Forwarded-For) 규칙도 준수하므로 동일한 IP 주소를 해당 필드에서도 확인할 수 있습니다(첫 번째 공개 IP 주소로 확인).

요청 감지

Internet.org 프록시를 통과하는 모든 요청에는 X-IORG-FBS 필드(항상 true로 설정)가 포함됩니다. 헤더 내에 이 필드가 있는지만 확인하는 것으로 충분합니다.

이와 별도로 Internet.org 문자열이 Via 헤더 필드에 삽입되며, 이는 Facebook 프록시를 통과한 요청을 식별할 수 있는 이차적인 방법입니다.

Android 앱에서 보내는 모든 요청에는 고유한 사용자-에이전트 HTTP 헤더 값(앱 버전에 따라 다름)이 포함됩니다. 해당 사용자-에이전트의 예시는 다음과 같습니다.

Mozilla/5.0 (Linux; Android 7.1.2; Pixel Build/N2G47E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 Mobile Safari/537.36[FBAN/InternetOrgApp; FBAV/7.0;]

요청을 감지하기 위해서 문자열에 'InternetOrgApp'가 있는지 확인할 수 있습니다.

쿠키

쿠키는 지원됩니다.

사용자 에이전트(UA 문자열)

원래 요청자가 보낸 문자열은 Internet.org 프록시에서 변경하지 않습니다.

분석 및 측정

사이트에서 Google 애널리틱스, Effective Measure, Chartbeat 등의 추적 서비스를 사용할 수 있습니다. 앞서 말씀드렸듯이 Facebook 웹 환경은 현재 JavaScript를 지원하지 않는다는 점을 유의하시기 바랍니다. 왜냐하면 (대부분 JavaScript를 사용할 수 없을 때 폴백을 제공하긴 하지만) 많은 분석 서비스가 완전한 기능을 제공하기 위해 JavaScript를 사용하기 때문입니다. 현재 사용 중인 서비스의 문서를 참조하세요.

Google 애널리틱스

Free Basics 플랫폼 내에서 JavaScript 없이 Google 애널리틱스를 보다 쉽게 사용할 수 있도록 다음과 같이 서비스 설정에 관한 가이드라인을 준비했습니다.

국가 감지

사용자의 국가를 정확하게 감지하려면 Google 애널리틱스 요청에 대한 UIP 재정의 매개변수를 올바르게 채워야 합니다. 가장 쉬운 방법은 X-IORG-FBS-UIP HTTP 헤더 필드를 사용하는 것입니다(Internet.org 프록시 참조). Google 애널리틱스에 요청을 보내려면 UIP 매개변수를 서버 측에 설정해야 합니다.

JavaScript 없이 추적

JavaScript 없이 트래픽 분석을 수행하려면 서비스의 서버 측을 활용해야 합니다.

Google 애널리틱스 요청은 백엔드에서 완전히 관리할 수 있고 서버에서 쿠키를 관리할 수 있습니다(또는 다른 방식으로 사용자를 구분할 수 있습니다). 개발자는 어떤 요청 매개변수를 작성하여 분석에 사용할지 결정할 수 있습니다. 이 작업은 Google 애널리틱스 측정 프로토콜을 사용하여 수행됩니다.

이미 iframe 솔루션이 있는 경우 서버 측에서 Google 애널리틱스 주소로 POST 요청을 보내야 합니다. 대부분의 매개변수iframe 솔루션에서 사용되는 매개변수와 일치합니다.

테스트

심사 대상 웹사이트를 제출하기 전에 위의 모든 요구 사항을 테스트해야 합니다. 다음 리소스를 이용하면 준비 상태에 대한 실시간 피드백을 얻는 데 도움이 될 수 있습니다.

Chrome 기기 에뮬레이터

Chrome 브라우저는 모바일 경험을 에뮬레이션할 수 있는데, 이는 테스트의 대부분을 매우 용이하게 진행할 수 있게 해줍니다. Device Emulation(기기 에뮬레이션)을 켜고 다음을 사용하여 전체 사이트를 테스트하는 것이 좋습니다.

다음 링크에서 지침 확인: https://developer.chrome.com/devtools/docs/device-mode

Opera 에뮬레이터

Opera는 Opera Mini 브라우저에서 사이트가 렌더링되고 동작하는 방식을 보다 구체적으로 테스트할 수 있게 해 주는 자체 에뮬레이터를 제공합니다.

다음 링크에서 지침 확인: http://dev.opera.com/articles/installing-opera-mini-on-your-computer/