Firefox OS용 유료 앱 개발하기

이글은 Kumar McMillan 의 Building A Paid App For Firefox OS 의 번역 및 편집본입니다.

얼핏보면 Firefox Marketplace는 Apple Store나 Google Play Store와 비슷해 보이나 중요한 차이점이 있습니다: Firefox Marketplace는 여러분을 Mozilla나 FirefoxOS 폰만 사용하도록 강요하지 않습니다. 여러분은 receipt 프로토콜을 사용하면 어떠한 오픈 웹 기기에서 실행시킬 수 있는 웹앱을  팔 수 있습니다. Mozilla가 아닌 마켓플레이스도 receipt 포맷을 구현하여 Firefox OS에서 구동되는 앱을 판매할 수 있고, 사용자는 양쪽 스토어에서 구입한 앱이 구동될 때 다른 점을 발견할 수 없을 겁니다.

다른 기기에서 receipt 프로토콜을 지원할 때 이론적으론 여러분은 한번 앱을 사서 어디서든 실행시킬 수 있습니다. 물론 여기엔 닭이 먼저냐, 달걀이 먼저냐는 논란의 여지가 있습니다. 그래서 Mozilla는 분산 receipt 개념을 잘 진행하고 이 프로토콜을 적용하는 데 도움이 되기를 희망합니다. Mozilla는 다른 벤더들에게 구입한 앱이 휴대 가능하고 가능한 웹상태로 receipt를 얻게 하기 위한 도움을 요청했습니다.

개발방법

구입한 앱은 receipt를 검증할 필요가 있습니다. 여러분이 Firefox OS를 위한 앱을 판매할 개발자라면 이 글은 여러분에게 receipt 검증을 수행할 수 있는 시작단계를 제시할 것입니다. 호환성 있는 웹런타임이나 시장을 구축하고자 하는 사람들은 이 글이 도움이 될 것입니다.

navigator.mozApps 자바스크립트 API는 여러분의 애플리케이션에서 device receipts를 확인할 수 있게 해줍니다. receipt를 검증하는 가장 쉬운 방법은 receiptverifier.js  를 추가하고 receipt안에 있는 검증 서비스 URL을 사용하는 것입니다. receiptverifer 문서는 세부적인 부분을 설명하고 있지만 간단히는  여러분의 앱이 실행될 때 이 자바스크립트를 호출하기만 하면 됩니다.

mozmarket.receipts.Prompter({
  storeURL: "https://marketplace.firefox.com/app/your-app",
  supportHTML: 'email you@yourapp.com',
  verify: true
});

이게 전부입니다! 여러분의 앱과 함께 receipt가 있는지, 정확한지 확인결과에 대한 창을 보여주는 제일 빠른 방법입니다. verifier에 대한 문서는 로우레벨 검증을 어떻게 하는지 적혀져 있습니다.

더욱 완전한 예제를 찾기 위해선 우리가 테스트하기 위해 사용했던 Private Yacht 의 코드에서 확인하실 수 있습니다. 이 앱은 receiptverifier.js 라이브러리를 사용해서 Node.js 를 통해 서버에서 검증하는 것처럼 클라이언트 사이드에서 구현하는 방법에 대해 보여주고 있습니다. 우리는 또한 서버에서 receipts를 점검하기 위해 사용한 Python 라이브러리 (그리고 Django를 사용한) 를 가지고 있습니다.

어떻게 동작하는 걸까? 각 receipt는 JSON Web Tokens의 집합입니다. 구성요소 중 하나는 여러분이 receipt검사를 진행할 수 있는 검사 서비스에 대한 링크입니다. 또한 여러분은 오프라인에서 검사할 수 있습니다. 하지만 이것은 주기적인 key 동기화를 요청하고 환불과 재발급 같은 몇몇  부분은 오프라인 검증에서는 아직 제공되지 않습니다.

기본적으로 receipt는 앱의 manifest파일에 적혀있는 installs_allowed_from에 store 중 하나를 시작되는 걸 허용합니다. 개발자는 각 마켓플레이스와 명확한 지불관계를 형성할 수 있고 앱판매에 대한 클레임을 줄 수있는 사람을 제한할 수 있습니다. 여러분의 앱에 대한 receipt를 제공하는 화이트리스트로 활용할 수 있습니다. 클라이언트에서 작동하는 자바스크립의 느슨한 특성때문에 여러분은 여러분 자신의 앱서버에서 receipt를 검증함으로써 이러한 화이트리스트를 엄격하게 관리할 수 있습니다.

Firefox Marketplace의 유료앱들은 아직 전부 나오지 않았습니다. 그러나 곧 나타날 것입니다. receipt 점검기능을 여러분의 앱에 통합했다면 여러분은 결제 진행을 지원할 준비가 된 것입니다.

사기 방지

웹에서 어떠한 단체도 앱을 팔 수 있게 하는 것이 Mozilla의 오픈 웹 앱의 중요한 비전입니다. 그러나, DRM없이 앱의 자산들을 온전히 지켜면서 분산된  receipt를 만드는 것은 어려움이 많습니다. 현 단계로 유료 앱에 접근하기 위해 DNS 프록시 등을 사용할 수도 있지만  CSP, CORSHSTS를 통해 감소시킬 수 있습니다. 오늘날 구입한 iOS / Android 앱들의 상태도 크게 다르지 않습니다. 현재 시장에 더욱 도움이 될만한 이슈가 공개되었고 Mozilla는 더 많은 개발자와 스토어의 참여로 더 나은 시스템을 만들어 갈 예정입니다. 계약된, 패키징된 앱으로의 전환은 또한 자산을 지키기 위한 또 다른 레이어를 제공하지만 이것은 권한 문제를 해결하기 위한 부분에 중점을 두어 디자인되어 있습니다.

언제든지 이슈가 발생한다면 버그를 올려 주세요! 앱플랫폼 버그라면 Core(component: DOM: Apps)나 Marketplace(component: Payments/Refunds)를 선택하세요.

작성자: LAWN

설수웅(SwooWoong, Seol) / Software & Data Engineer / I love technology to improve people's lives, and harmonious architecture with nature​.(LAWN) / 인간의 삶을 향상시키는 기술, 자연과 조화로운 아키텍쳐를 사랑합니다.

LAWN가 작성한 문서들…


댓글이 없습니다.

댓글 쓰기