KR20230148336A - 모바일 디바이스 상의 사용자 입력을 인터셉트하기 위한 방법 및 시스템 - Google Patents

모바일 디바이스 상의 사용자 입력을 인터셉트하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20230148336A
KR20230148336A KR1020237031269A KR20237031269A KR20230148336A KR 20230148336 A KR20230148336 A KR 20230148336A KR 1020237031269 A KR1020237031269 A KR 1020237031269A KR 20237031269 A KR20237031269 A KR 20237031269A KR 20230148336 A KR20230148336 A KR 20230148336A
Authority
KR
South Korea
Prior art keywords
keyboard
user
data
application
mobile device
Prior art date
Application number
KR1020237031269A
Other languages
English (en)
Inventor
마이클 개드
애런 심슨
매튜 라터
셈스 에드딘 부카템
로빈 친
Original Assignee
킨드레드 소울 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/236,646 external-priority patent/US11237725B1/en
Application filed by 킨드레드 소울 리미티드 filed Critical 킨드레드 소울 리미티드
Publication of KR20230148336A publication Critical patent/KR20230148336A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2423Interactive query statement specification based on a database schema
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3322Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3329Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9532Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0489Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
    • G06F3/04895Guidance during keyboard input operation, e.g. prompting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/04Billing or invoicing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Artificial Intelligence (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

키보드 인터셉터에 관한 시스템 및 방법이 개시된다. 키보드 인터셉터는 모바일 디바이스 상의 키보드 애플리케이션에 대한 사용자에 의한 제1 입력을 수신한다. 검색 쿼리는 제1 입력에 기초하여 생성되고, 데이터는 검색 쿼리에 기초하여 로케이팅된다. 데이터는 레코드 식별자를 포함하는 레코드와 연관된다. 키보드 인터셉터는 키보드 애플리케이션의 GUI 엘리먼트를 레코드 식별자와 연관시킨다. GUI 엘리먼트의 선택에 대응하는 제2 입력이 수신된다. 로케이팅된 데이터와 연관된 URL 및 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 고유 추적 링크가 생성된다. 고유 추적 링크는 웹사이트에 액세스하기 위해 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달된다. 웹 브라우저 애플리케이션은 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장한다.

Description

모바일 디바이스 상의 사용자 입력을 인터셉트하기 위한 방법 및 시스템
관련 출원에 대한 상호 참조
본 출원은 2021년 3월 3일에 출원된 미국 가출원 제63/156,153호, 2021년 4월 21일에 출원된 미국 정규출원 제17/236,646호 및 2021년 8월 31일에 출원된 미국 가출원 제63/239,227호의 이익을 주장한다. 상기 언급된 특허 출원들은 그 전체가 참고로 통합된다.
발명의 분야
본 개시는 모바일 컴퓨팅 디바이스들에 관한 것이다. 특히, 본 개시는 사용자 입력을 인터셉트(intercept)하기 위한 방법 및 시스템에 관한 것으로, 보다 상세하게는 모바일 컴퓨팅 디바이스를 위한 키보드 인터셉터(keyboard interceptor)에 관한 것이다.
웹 브라우저는 월드 와이드 웹에 대한 액세스를 제공하는 소프트웨어 애플리케이션이다. 데스크탑 컴퓨터들과 같은 많은 컴퓨팅 디바이스에서, 웹 브라우저에 대해 웹 브라우저 확장(web browser extension)이 이용 가능하다. 웹 브라우저 확장은 웹 브라우저에 능력(capability), 유틸리티 또는 기능을 추가하는 소프트웨어 애플리케이션이다. 대부분, 웹 브라우저 확장은 웹 브라우저의 기능을 확장하거나 향상시키거나, 웹사이트들과 상호작용하거나, 브라우징에 기초하여 사전 정보를 제공하거나, 사용자 경험을 향상시키기 위한 유용한 툴(tool)들을 제공한다.
웹 브라우저는 모바일 디바이스에서도 사용할 수 있으며 데스크탑 대응 디바이스(counterpart)와 유사한 기능을 제공한다. 모바일 디바이스에서는 iOS®(14 및 하위)의 Safari® 및 Android™의 Chrome ™과 같은 일부 웹 브라우저에서 웹 브라우저 확장 지원이 없다. 따라서, 웹 브라우저 확장들에 의해 제공되는 향상된 기능은 모바일 디바이스 사용자들에게 이용가능하지 않을 수 있다. 일부 모바일 웹 브라우저에서는 웹 브라우저 확장을 사용할 수 없는 몇 가지 이유가 있다. 예를 들어, 랩탑 또는 데스크탑 상에 존재하는 확장들은 모바일 디바이스들 상에서 이용가능한 스크린 크기들 상에서 사용하기에 충분히 직관적이지 않을 수 있다. 또한 모바일 운영 체제 내에서 보안 제약이 있고 웹 브라우저 애플리케이션 용량에도 한계가 있다. 또한, 모바일 운영 체제는 안정성을 우선순위화할 수 있고, 따라서 데스크탑 기반 운영 체제에 비해 더 적은 특징부를 가질 수 있다.
한편, iOS® 15 상의 Safari®와 같은 일부 모바일 웹 브라우저는 웹 브라우저 확장을 지원한다. 위에서 언급한 바와 같이, 종종 더 작은 모바일 디바이스들의 하드웨어 및 소프트웨어 상에서 직관적이고 사용하기 쉬운 방식으로 이들을 구현하는 데 문제가 있을 수 있다. 따라서, 양쪽 모바일 웹 브라우저 확장들이 이용가능하고 이용가능하지 않을 때 사용자 경험을 개선하는 것이 바람직하다.
데스크탑 웹 브라우저 확장의 구현은 사용자가 웹 브라우저 애플리케이션에 액세스하고 있을 때 사용자에게 광고와 같은 콘텐츠를 디스플레이하는 것일 수 있다. 사용자의 모바일 디바이스를 타겟팅하는 것은 대부분의 사용자가 모바일 디바이스를 항상 휴대한다는 점에서 효과적인 광고 형태이다. 그러나, 모바일 디바이스들 상의 웹 브라우저 확장들에 대한 상기 언급된 어려움들 때문에, 브랜드들은 종종 사용자가 현재 모바일 웹 브라우저 애플리케이션을 통해 브라우징하고 있는 웹사이트에서의 팝업 광고를 통해 사용자에게 콘텐츠를 디스플레이하는 것으로 제한된다. 이러한 광고들은 종종 거슬림을 느낄 수 있고 그들의 관련성은 사용자의 이전 브라우저 이력에 의존할 수 있다. 또한, 브랜드는 스크린 공간 및 대역폭 제약으로 인해 이러한 광고에 포함할 수 있는 콘텐츠에 제한된다. 대안으로, 사용자가 그들의 모바일 디바이스 상에서 브랜드와 연관된 앱을 갖는 경우, 앱은 푸시 알림(push notification)들을 사용자에게 포워딩할 수 있다. 푸시 알림의 콘텐츠는 전형적으로 단일 텍스트 라인으로 제한되며, 신경을 쓰지 않는 사용자는 알림을 읽지 않고 단순히 해제(dismiss)할 수 있다. 따라서, 개선된 광고 타겟팅 방법이 또한 바람직하다.
본 개시의 제1 양태에 따르면, 컴퓨터 구현 방법이 제공되고, 상기 컴퓨터 구현 방법은:
모바일 디바이스 상의 키보드 애플리케이션으로 사용자에 의한 제1 입력을 수신하는 단계;
상기 제1 입력에 기초하여 검색 쿼리를 생성하는 단계;
상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계(locating) - 상기 데이터는 레코드(record)와 연관되고, 상기 레코드는 레코드 식별자를 포함함 -;
상기 키보드 애플리케이션의 사용자 인터페이스 내에서, 상기 모바일 디바이스의 그래픽 사용자 인터페이스, GUI 엘리먼트(element)를 상기 레코드 식별자와 연관시키는 단계;
상기 사용자에 의한 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계;
상기 제2 입력을 수신한 것에 응답하여, URL 및 상기 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 고유 추적 링크(unique tracking link)를 생성하는 단계 - 상기 URL은 로케이팅된 데이터(located data)와 연관된 웹사이트를 위한 것임 -;
상기 고유 추적 링크를 상기 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달하여, 상기 웹사이트에 액세스하는 단계; 및
상기 웹 사이트에 액세스하는 동안 상기 웹 브라우저 애플리케이션에 의해, 상기 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장하는 단계를 포함한다.
컴퓨터 구현 방법은 모바일 디바이스 상의 키보드 인터셉터에 의해 적어도 부분적으로 수행될 수 있다. 따라서, 컴퓨터 구현 방법은 키보드 인터셉터에 의해 모바일 디바이스에 대한 데스크탑 웹 브라우저 확장의 복제된 기능을 제공한다.
컴퓨터 구현 방법은 사용자에 의한 제1 입력에 기초하여 웹사이트들에 대한 편리한 검색을 제공한다. GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장하는 것은 결과적으로 웹사이트 상의 사용자의 활동의 추적을 허용한다. 추적은 특정 활동을 사용자와 연관시키는 데 사용될 수 있다. 또한, 고유 추적 링크의 형태는 어떠한 사용자 정보도 포함하지 않기 때문에 안전하다. 따라서, 웹사이트를 브라우징할 때 사용자를 스누핑하는 제3자는 웹사이트 상의 사용자의 특정 활동을 임의의 개인과 연관시킬 수 없을 것이다.
GUI 엘리먼트의 선택과 연관된 식별자는 랜덤하게 생성될 수 있다.
사용자는 모바일 디바이스 상에서 실행되는 애플리케이션 내의 하나 이상의 필드를 통해 입력을 제공할 수 있다. 방법은 상기 제1 입력이 제공되는 필드가 유니폼 리소스 로케이터(Uniform Resource Locator)들, 텍스트, 쿠폰 코드들 및/또는 인터넷 검색들을 위해 지정된 필드인 것을 결정하는 단계를 더 포함할 수 있다. 데이터를 로케이팅하는 단계는 애플리케이션 프로그래밍 인터페이스, API, 호출(call)을 서버로 포워딩하는 단계를 포함할 수 있다. 그런 다음, 고유 추적 링크를 생성하는 단계는 고유 추적 링크를 요청하는 서버에 추가 API 호출을 포워딩하는 단계를 포함할 수 있다. 데이터를 로케이팅하는 단계는 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함할 수 있다. 서버는 생성된 고유 추적 링크를 데이터베이스에 저장할 수 있다.
제1 입력은 사용자에 의해 타이핑된 텍스트일 수 있다. 방법은 상기 검색 쿼리를 생성하기 전에 상기 사용자가 타이핑을 완료한 후 미리 결정된 양의 시간을 대기하는 단계를 더 포함할 수 있다. 미리 결정된 양의 시간을 대기하는 것은 수행될 필요가 있는 계산들의 수를 감소시킴으로써 방법의 효율을 증가시킨다.
고유 추적 링크는 GUI 엘리먼트의 선택과 연관된 식별자로 인코딩된 URL을 포함할 수 있다. 데이터는 판매자 데이터(merchant data)일 수 있고, URL은 판매자와 연관된 웹사이트에 대한 리다이렉트(redirect) URL일 수 있다. 판매자 데이터는 판매자와 연관된 로고, 및 판매자와 연관된 활성 거래(active deal)를 더 포함할 수 있다. 이 경우, GUI 엘리먼트를 레코드 식별자와 연관시키는 단계는 판매자와 연관된 로고 및 활성 거래를 표시하는 텍스트를 디스플레이하는 것을 포함할 수 있다. 쿠키는 판매자가 사용자에 의해 구매가 이루어졌다고 결정할 수 있게 할 수 있다. 방법은 사용자에 의한 구매에 응답하여 판매자에 의해 발행된 보상을 수신하는 단계를 더 포함할 수 있다.
서버가 고유 추적 링크를 생성하는 경우, 서버는 데이터베이스에 고유 추적 링크를 추가로 저장하고 상기 고유 추적 링크를 사용자 아이덴티티와 연관시킬 수 있다. 따라서, 쿠키가 고유 추적 링크가 생성될 때 할당되는 GUI 엘리먼트의 선택과 연관된 식별자를 포함하기 때문에, 그리고 고유 추적 링크가 생성될 때 고유 추적 링크가 사용자 아이덴티티와 연관하여 저장될 수 있기 때문에, 판매자는 서버의 액션(action)을 통해 사용자를 그들의 웹사이트로 보낸 것으로 식별할 수 있다. 따라서, 판매자는 구매에 기초하여 서버와 연관된 엔티티에 커미션(commission)을 제공할 수 있다.
방법은 데이터가 로케이팅되었음을 나타내는 아이콘을 키보드 애플리케이션의 사용자 인터페이스 내에 디스플레이하는 단계를 더 포함할 수 있다. 사용자에 의한 아이콘의 선택에 대응하는 추가 입력이 수신될 수 있다. 이 경우, GUI 엘리먼트를 디스플레이하는 단계가 추가 입력을 수신한 것에 응답한다.
본 개시의 제2 양태에 따르면, 모바일 디바이스에 의해 실행될 때 모바일 디바이스가 전술한 방법을 수행하게 하는 명령(instruction)들의 세트로 구성된 모바일 디바이스가 제공된다.
본 개시의 제3 양태에 따르면, 시스템이 제공된다. 시스템은 키보드 인터셉터를 갖는 키보드 애플리케이션, 데이터베이스 및 데이터베이스에 통신 가능하게 결합된 서버를 포함한다. 데이터베이스는 복수의 레코드들을 포함하고, 각각의 레코드는: 레코드 식별자; 데이터; 및 데이터와 연관된 웹사이트에 대한 URL을 포함한다. 서버는 API 호출을 수신한 것에 응답하여 데이터베이스에서 데이터를 로케이팅하도록 구성된다. 시스템은 본 개시의 제1 양태에 따른 방법을 수행하도록 구성된다.
본 개시의 제4 양태에 따르면, 사용자의 모바일 디바이스에 의해 수행되는 컴퓨터 구현 방법이 제공되며, 상기 방법은:
모바일 디바이스 상에서 실행되는 키보드 애플리케이션에 의해, 제1 입력을 수신하는 단계;
상기 키보드 애플리케이션에 의해, 상기 제1 입력에 기초하여 검색 쿼리를 생성하는 단계;
상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계, 로케이팅된 데이터는 레코드와 연관되고, 상기 레코드는 레코드 식별자를 포함하고, 상기 로케이팅된 데이터는 :
쿠폰 코드; 및
하나 이상의 설문 조사 질문(survey question)들; 중 적어도 하나를 포함하고,
상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 그래픽 사용자 인터페이스, GUI, 엘리먼트를 로케이팅된 데이터의 레코드 식별자와 연관시키는 단계;
상기 키보드 애플리케이션에 의해, 사용자에 의한 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계;
상기 제2 입력을 수신한 것에 응답하여, 상기 키보드 애플리케이션에 의해, 로케이팅된 데이터와 연관된 액션을 수행하는 단계를 포함하고, 상기 액션은 :
상기 로케이팅된 데이터와 연관된 쿠폰 코드가 상기 모바일 디바이스 상에서 실행되는 애플리케이션 내의 텍스트 필드 내로 전달되게 하는 단계; 및
상기 모바일 디바이스의 GUI에 로케이팅된 데이터와 연관된 상기 하나 이상의 설문 조사 질문들을 디스플레이하는 단계 중 하나를 포함한다.
컴퓨터 구현 방법은 모바일 디바이스 상의 키보드 애플리케이션에 의해 적어도 부분적으로 수행될 수 있다. 따라서, 컴퓨터 구현 방법들은 키보드 애플리케이션에 의해 모바일 디바이스에 대한 데스크탑 웹 브라우저 확장들의 복제된 기능을 제공한다.
컴퓨터 구현 방법은 쿠폰 코드들 및 설문 조사들과 같은 데이터에 대한 편리한 검색을 제공하고, 모바일 디바이스들 상에서 실행되는 공지된 방법들에 비해 이점들을 갖는다. 하나의 이러한 이점은 제1 입력이 사용자에 의해 제공될 필요가 없다는 것이다. 예를 들어, 키보드 애플리케이션은 모바일 디바이스의 GUI에 디스플레이된 현재 콘텐츠를 나타내는 데이터를 수신하고, 모바일 디바이스의 GUI에 디스플레이된 현재 콘텐츠를 나타내는 데이터를 분석함으로써 사용자가 현재 보고 있는 웹사이트와 연관된 도메인 네임(domain name)을 결정할 수 있다. 이 경우, 제1 입력은 결정된 도메인 네임을 포함할 수 있다. 모바일 디바이스의 GUI에 디스플레이된 현재 콘텐츠는 모바일 디바이스의 GUI의 스크린샷(screenshot)을 포함할 수 있다. 다른 예에서, GUI에 디스플레이된 현재 콘텐츠는 모바일 디바이스 상에서 동작하는 접근성 서비스(accessibility service)로부터 수신된다.
일부 경우에, 모바일 웹 브라우저 애플리케이션은 모바일 웹 브라우저 확장 기능을 지원할 수 있다. 이러한 경우에, 키보드 애플리케이션은 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장으로부터, 웹 브라우저 애플리케이션에 의해 현재 액세스되고 있는 웹사이트와 연관된 도메인 네임을 수신할 수 있다. 그런 다음, 제1 입력은 도메인 네임을 포함할 수 있다.
일부 예들에서, 키보드 애플리케이션은, 모바일 디바이스 상에서 실행되고 현재 액세스되고 있는 애플리케이션으로부터, 애플리케이션을 고유하게 식별하는 애플리케이션과 연관된 식별자를 수신할 수 있다. 이 경우, 제1 입력은 애플리케이션과 연관된 식별자를 포함할 수 있다.
추가 예들에서, 제2 입력을 수신한 것에 응답하여, 키보드 애플리케이션은, 사용자 입력 없이, URL 및 랜덤하게 생성된 식별자를 포함하는 고유 추적 링크를 생성할 수 있고, URL은 로케이팅된 데이터와 연관된 웹사이트에 대한 것이다. 키보드 애플리케이션은 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션의 어드레스 바(address bar)에 고유 추적 링크를 전달할 수 있다.
로케이팅된 데이터가 쿠폰 코드를 포함하는 경우, 키보드 애플리케이션은 쿠폰 코드를 메모리에 저장할 수 있다. 쿠폰 코드를 텍스트 필드에 전달하기 전에, 키보드 애플리케이션은 텍스트 필드가 쿠폰 코드들을 위해 지정된 텍스트 필드라는 것을 결정할 수 있다. 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드라고 결정하는 단계는, 키보드 애플리케이션에 의해, 모바일 디바이스의 GUI의 스크린샷을 분석하는 단계를 포함할 수 있다. 다른 예에서, 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드라고 결정하는 단계는, 키보드 애플리케이션에 의해, 모바일 디바이스 상에서 동작하는 자동 채움 서비스(autofill service)로부터 필드 지정 유형을 수신하는 단계를 포함할 수 있다. 또 다른 예에서, 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드라고 결정하는 단계는, 키보드 애플리케이션에 의해, 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장으로부터 필드 지정 유형을 수신하는 단계를 포함할 수 있다.
쿠폰 코드 및/또는 하나 이상의 설문 조사 질문들은 판매자(merchant)와 연관될 수 있다. 판매자는 사용자가 쿠폰 코드를 사용했거나 설문 조사를 완료했다고 결정할 수 있다. 이를 실현할 수 있는 방법의 예는 다음과 같다. 제2 입력을 수신한 것에 응답하여, 키보드 애플리케이션은, 사용자 입력 없이, GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 생성할 수 있다. 랜덤하게 생성된 식별자는 레코드 식별자 및 사용자 식별자와 연관하여 데이터베이스에 저장될 수 있다. 또한, 웹 브라우저 애플리케이션은 GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 포함하는 쿠키를 저장할 수 있다. 이 경우, 새로운 탭이 웹 브라우저 애플리케이션 내에서 열릴 수 있어서, 쿠키는 새로운 탭이 열릴 때 저장된다. 쿠키가 저장되면 새로운 탭(tab)이 닫힐 수 있다. 새로운 탭은 키보드 애플리케이션 또는 웹 브라우저 확장에 의해 열리고 닫힐 수 있다.
데이터베이스에 그리고 쿠키의 일부로서 저장된 랜덤하게 생성된 식별자는 판매자가 사용자에 의해 수행된 액션(들)을 추적할 수 있게 한다. 수행된 액션(들)의 표시 뿐만 아니라 액션(들)과 연관된 랜덤하게 생성된 식별자가 데이터베이스와 연관된 엔티티에 송신될 수 있다. 송신은 수행된 액션(들)과 연관된 커미션을 더 포함할 수 있다. 엔티티는 이 커미션의 일부를 액션(들)을 수행하기 위한 보상으로서 사용자에게 제공할 수 있다. 엔티티는 송신에서 랜덤하게 생성된 식별자를 사용자 식별자와 연관하여 데이터베이스에 저장된 랜덤하게 생성된 식별자와 매칭시킴으로써 사용자를 식별할 수 있다.
로케이팅된 데이터가 하나 이상의 설문 조사 질문들을 포함할 때, 컴퓨터 구현 방법은 사용자에 의한 하나 이상의 추가 입력들을 수신하는 단계 - 상기 추가 입력은 하나 이상의 설문 조사 질문의 완료에 대응함 -, 및 랜덤하게 생성된 식별자 및 사용자 식별자와 연관하여 하나 이상의 추가 입력들을 나타내는 데이터를 데이터베이스에 저장하는 단계를 더 포함할 수 있다.
데이터를 로케이팅하는 단계는 애플리케이션 프로그래밍 인터페이스, API, 호출을 서버로 포워딩하는 단계를 포함할 수 있다. 대안으로, 데이터를 로케이팅하는 단계는 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함할 수 있다.
논의된 바와 같이, 데이터는 판매자 데이터일 수 있고, 쿠폰 코드, 하나 이상의 설문 조사 질문들, 및 판매자와 연관된 미디어 중 하나 이상을 포함할 수 있다. 판매자 데이터는 판매자와 연관된 로고, 및 판매자와 연관된 활성 거래를 더 포함할 수 있다. 이 경우, GUI의 엘리먼트를 레코드 식별자와 연관시키는 단계는 판매자와 연관된 로고 및 활성 거래를 표시하는 텍스트를 디스플레이하는 단계를 포함할 수 있다.
방법은 데이터가 로케이팅되었음을 나타내는 아이콘을 키보드 애플리케이션의 사용자 인터페이스 내에 디스플레이하는 단계를 더 포함할 수 있다. 사용자에 의한 아이콘의 선택에 대응하는 추가 입력이 수신될 수 있다. 이 경우, GUI 엘리먼트를 디스플레이하는 것은 추가 입력을 수신한 것에 응답한다.
본 개시의 제5 양태에 따르면, 명령들이 모바일 디바이스의 프로세서에 의해 수행될 때, 모바일 디바이스 상에서 실행되는 키보드 애플리케이션이 제4 양태에 따른 방법들을 수행하게 하는 명령들을 포함하는 유형의(tangible) 비일시적 컴퓨터 판독가능 메모리가 제공된다.
본 개시의 제6 양태에 따르면, 시스템이 제공된다. 시스템은 키보드 애플리케이션, 데이터베이스 및 데이터베이스에 통신 가능하게 결합된 서버를 포함한다. 데이터베이스는 복수의 레코드들을 포함하고, 레코드들의 각각은 레코드 식별자 및 데이터를 포함하고, 데이터는 하나 이상의 쿠폰 코드들 및 하나 이상의 설문 조사 질문들을 포함한다. 서버는 API 호출을 수신한 것에 응답하여 데이터베이스에서 데이터를 로케이팅하도록 구성된다. 시스템은 본 개시의 제4 양태에 따른 방법들을 수행하도록 구성된다.
본 발명의 추가적인 특징 및 이점은 단지 예로서 주어진 본 개시의 바람직한 실시예에 대한 이하의 설명으로부터 명백해질 것이며, 이는 첨부 도면을 참조하여 이루어진다.
도 1은 일 예에 따른 시스템을 개략적으로 예시한다.
도 2는 일 예에 따른 모바일 디바이스를 개략적으로 예시한다.
도 3은 일 예에 따른 프로세스 흐름을 예시하는 흐름도를 도시한다.
도 4는 추가 예에 따른 프로세스 흐름을 예시하는 흐름도를 도시한다.
도 5a는 일 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 5b는 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 6은 일 예에 따른 방법의 흐름도이다.
도 7a는 또 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 7b는 또 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 8a는 또 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 8b는 또 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 9는 또 다른 예에 따른 모바일 디바이스 상의 디스플레이를 예시한다.
도 10은 추가 예에 따른 방법의 흐름도이다.
도 11은 또 다른 예에 따른 방법의 흐름도이다.
도 12는 추가 예에 따른 프로세스 흐름을 예시하는 흐름도를 도시한다.
데스크탑 컴퓨팅 디바이스들과 같은 특정 컴퓨팅 디바이스들 상에서 실행되는 웹 브라우저들은 하나 이상의 웹 브라우저 확장들과 인터페이싱할 수 있다. 웹 브라우저 확장은 웹 브라우저의 특정 기능을 향상시킬 수 있다. 일 예에서, 웹 브라우저 확장은 웹 사이트에서 사용자에 의해 이루어진 구매를 모니터링한다. 웹 브라우저 확장은, 구매 전 또는 구매 후에, 웹사이트의 URL을 분석하고, URL과 연관된 판매자가 웹 브라우저 확장 개발자와 계약(agreement)을 했는지 여부를 결정할 수 있다. 계약은 판매자가 구매를 하기 위해 사용자를 웹사이트에 보내는 것에 대한 커미션을 개발자에게 제공하는 것을 수반할 수 있다. 결국, 커미션의 일부는 사용자에게 수여될 수 있다. 사용자에게 수여되는 커미션의 부분은 캐시백(cash back), 할인 코드, 자선 기부, 또는 다른 금융 인센티브의 형태일 수 있다.
다른 예들에서, 웹 브라우저 확장은 사용자에 의해 현재 액세스되고 있는 웹 페이지에 하나 이상의 쿠폰 코드들을 검색하고 삽입한다. 다른 예에서, 웹 브라우저 확장은 사용자가 임의의 웹사이트를 브라우징할 때 하나 이상의 설문 조사들을 검색하고 완료할 수 있게 할 수 있다. 웹 브라우저 확장과 연관된 엔티티는 쿠폰 코드 또는 설문 조사를 제공하기 위한 커미션을 받을 수 있다. 설문 조사의 완료를 위해, 사용자는 웹 브라우저 확장과 연관된 엔티티로부터 이 커미션의 일부를 받을 수 있으며, 이는 쿠폰 코드, 자선 단체에 대한 기부, 또는 다른 금융 인센티브의 형태일 수 있다.
본 명세서에 설명된 실시예들은 모바일 디바이스들을 위한 키보드 인터셉터에 관한 것이다. 일부 실시예에서, 키보드 인터셉터는 데스크탑 또는 랩톱 웹 브라우저 확장에서 발견되는 동일한 레벨의 상호 작용, 정보 및 유틸리티를 복제하지만 모바일 웹 브라우저와는 별개인 소프트웨어일 수 있다. 이러한 실시예들은 특히 iOS® 14 또는 하위의 Safari®, 및 Android™ 상의 Chrome™과 같은 웹 브라우저들로 구성된 모바일 디바이스들에 매우 적합하며, 여기서 웹 브라우저 확장들은 이용가능하지 않다. 다른 실시예들에서, 키보드 인터셉터는 브라우저 확장으로서 구현된 소프트웨어일 수 있다. 이러한 실시예들은 특히 iOS® 상의 Safari® 15 또는 상위와 같은 웹 브라우저들로 구성된 모바일 디바이스들에 매우 적합하다. 이러한 키보드 인터셉터의 다양한 구현예가 이제 설명될 것이다.
단일 사용자 구현예
본 개시의 예시적인 구현예에서, 사용자의 모바일 디바이스 상에서 동작하는 키보드 인터셉터는 고유 추적 링크를 생성하고, 이를 사용자의 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달한다. 이러한 단일 사용자 구현에 대해 이제 도 1 내지 도 6을 참조하여 상세히 설명한다. 도 1은 모바일 디바이스(110), 서버(150) 및 데이터베이스(160)를 포함하는 일 예에 따른 시스템(100)을 예시한다. 특히, 도 1은 키보드 인터셉터(140)를 포함하는 모바일 디바이스(110)가 소스 데이터에 대해 서버(150)와 어떻게 통신할 수 있는지를 예시한다. 도 2는 본 개시의 다른 실시예에 따른 모바일 디바이스(200)를 예시한다. 도 1에 도시된 모바일 디바이스(110)는 도 2에 도시된 모바일 디바이스(200)의 예일 수 있지만, 예를 들어, 웹 브라우저 확장은 없다. 이것은 위에서 논의된 바와 같은 하드웨어 또는 소프트웨어 제한, 또는 웹 브라우저 애플리케이션의 제공자의 설계 선택으로 인한 것일 수 있다.
도 1을 참조하면, 모바일 디바이스(110)는 일반적으로 스마트폰 및 태블릿 컴퓨터와 같은 모바일 운영 체제를 지원하는 모바일 컴퓨팅 디바이스이다. 모바일 디바이스(110)는 서버(150)에 통신가능하게 결합된다. 서버(150)는 데이터베이스(160)에 추가로 통신가능하게 결합된다. 데이터베이스(160)는 브랜드에 관한 데이터를 저장하고, 임의의 주어진 브랜드에 대해, 데이터는 데이터베이스의 필드에 저장될 수 있으며, 필드는 URL, 메타데이터, 예컨대 오퍼(offer), 키워드, 카테고리, 설명(description), 쿠폰, 바우처(voucher) 및 할인 코드, 설문 조사, 및 미디어, 예컨대 이미지, 비디오 및 오디오 등, 해당 브랜드와 관련된 것 중 하나 이상을 포함한다.
모바일 디바이스(110)는 키보드 애플리케이션(120)을 포함한다. 제3자 또는 커스텀(custom) 키보드는 모바일 디바이스에서 사용할 수 있으며, 모바일 운영 체제의 일부로 포함된 네이티브(native) 키보드에 대한 대안을 제공한다. 커스텀 키보드는 소프트웨어 개발 키트(SDK)에 대한 컨테이너로서 작용하는 애플리케이션 내에 포함하기 위해 SDK로서 제공될 수 있으며, 여기서 SDK는 키보드 기능을 제공한다. 따라서, 커스텀 키보드를 사용하고자 하는 사용자는 커스텀 키보드 기능을 갖는 키보드를 포함하는 애플리케이션을 다운로드해야 한다. 커스텀 키보드는 SDK에 의해 제공되는 것으로 제한되지 않고 모바일 애플리케이션 자체 내에서 커스텀 구축될 수 있다는 것이 이해될 것이다. 이러한 기능은 모바일 운영 체제에 의해 검출가능하다. 예를 들어, 사용자는 설정을 통해 입력 방법을 네이티브 키보드에서 커스텀 키보드로 변경할 수 있다. 도 1의 키보드 애플리케이션(120)과 같은 키보드 애플리케이션은 키보드 기능을 제공하는 SDK를 포함하는 컨테이너 애플리케이션을 의미하는 것으로 이해될 것이다. 이는 전술한 바와 같은 커스텀 키보드 애플리케이션들 또는 네이티브 키보드 애플리케이션들을 포함할 수 있다. 또한, 키보드 기능을 제공하는 SDK는 키보드 SDK으로 지칭될 것이다. 키보드 애플리케이션(120)은 서버와 연관된 엔티티에 의해 제공될 수 있다. 대안으로, 키보드 애플리케이션(120)은 서버(150)와 연관된 엔티티와 상이한 제3자에 의해 제공될 수 있다. 제3자는 대가를 받고 재화 및/또는 서비스를 제공하는 엔티티일 수 있다. 예를 들어, 제3자는 가입 서비스 제공자, 유틸리티 서비스 제공자, 또는 상품을 판매하는 판매자일 수 있다. 일 예에서, 키보드 애플리케이션(120)은 모바일 네트워크 과금 애플리케이션의 일부로서 제공될 수 있다. 모바일 네트워크 과금 애플리케이션은 모바일 디바이스(110) 상에서 실행되는 운영 체제와 호환가능한 애플리케이션 저장소(repository)로부터 다운로드 가능할 수 있거나 또는 모바일 디바이스(110) 상에 사전 로딩(preload)될 수 있다. 모바일 네트워크 과금 애플리케이션은 사용자가 모바일 네트워크에 등록된 계정과 연관된 정보를 모니터링하도록 요구될 수 있다. 다른 예에서, 키보드 애플리케이션(120)은 게임 애플리케이션의 일부로서 제공될 수 있다. 게임 애플리케이션은 또한 모바일 디바이스(110) 상에서 실행되는 운영 체제와 호환가능한 애플리케이션 저장소로부터 다운로드 가능할 수 있거나 또는 모바일 디바이스(110) 상에 사전 로딩될 수 있다. 추가 예에서, 키보드 애플리케이션(120)은 모바일 디바이스(110)의 제조자 및/또는 모바일 디바이스(110) 상에서 실행되는 운영 체제의 개발자에 의해 제공될 수 있는 네이티브 키보드 애플리케이션일 수 있다.
키보드 애플리케이션(120)은 사용자가 키보드 애플리케이션(120)의 제공자와 연관된 계정을 셋업할 수 있게 할 수 있다. 계정은 사용자가 키보드 애플리케이션(120)의 사용을 통해 수여된 그들의 보상을 보고 추적할 수 있게 할 수 있다. 계정은 또한 사용자가 그들의 보상을 인출하기 위해 사용될 수 있다. 보상을 인출하는 것은 모바일 디바이스(110) 상에서도 하나 이상의 앱에 돈을 예치하고 및/또는 카드(credit)을 추가하기 위해 결제 서비스에 연결하는 것을 수반할 수 있다.
도 1에 도시된 예에서, 키보드 애플리케이션(120)은 사용자가 키보드 SDK(130)를 통해 키보드 애플리케이션에 제공된 기능을 통해 모바일 디바이스(110)와 상호작용할 수 있게 하며, 이는 전술한 특징들을 갖는 예시적인 키보드 SDK인 것으로 이해되어야 한다. 키보드 SDK(130)는 키보드 애플리케이션(120)이 가상 키보드를 모바일 디바이스(110)의 터치스크린 상에 디스플레이할 수 있게 하며, 이를 통해 사용자는 모바일 디바이스(110)에 문자들을 타이핑할 수 있다. 문자들은 임의의 언어 및/또는 심볼들과 관련될 수 있다. 다른 예에서, 키보드 SDK(130)는 사용자 인터페이스를 통해 키보드 애플리케이션(120)에 의한 디스플레이를 위해 음성을 텍스트로 변환하는 소프트웨어 컴포넌트와 동작 가능하게 연관될 수 있다.
본 명세서에 설명된 실시예에서, 모바일 디바이스(110)는 키보드 인터셉터(140)를 더 포함한다. 키보드 인터셉터(140)는 키보드 애플리케이션(120)의 일부로서, 예를 들어, 키보드 기능을 제공하는 SDK를 더 포함하는 컨테이너 애플리케이션(container application)의 일부로서 제공된다. 키보드 인터셉터(140)는 네이티브 키보드 SDK와 같은 키보드 SDK(130)와 함께 사용하기 위해 별개의 SDK에 제공될 수 있다. 키보드 인터셉터(140)는 키보드 SDK(130)에 의해 제공되는 기능을 통해 입력을 모니터링하도록 구성될 수 있다. 즉, 키보드 인터셉터(140)는 타이핑된 텍스트 또는 음성에서 텍스트로의 결과인 텍스트 형태의 입력을 추적한다. 키보드 SDK(130)는 이벤트 리스너(event listener) API(application programming interface)를 포함할 수 있다. 이벤트 리스너 API는 키보드 인터셉터(140)가 사용자에 의한 키보드에 대한 입력을 나타내는 이벤트 알림(event notification)을 수신할 수 있게 한다. 사용자가 타이핑하는 예시에서, 키보드 SDK(130)는 특정 텍스트 입력 모니터링 API를 포함할 수 있다. 그런 다음, 키보드 인터셉터(140)는 사용자에 의해 입력된 텍스트에 대응하는 이벤트 알림들을 수신하기 위해 텍스트 입력 모니터링 API를 통해 키보드 SDK(130)와 통신할 수 있다. 추가 예에서, 키보드 인터셉터(140)는 이벤트 리스너 API를 통해 발행된 모든 이벤트 알림을 수신하고, 어느 이벤트 알림들이 입력된 텍스트에 대응하는지를 결정할 수 있다.
키보드 인터셉터(140)는, 대안으로 또는 추가적으로, 모바일 디바이스(110) 상에 또한 존재하는 하나 이상의 애플리케이션과 통신하고 그로부터 입력을 수용하도록 구성될 수 있다. 도 2와 관련하여 추가로 상세히 논의되는 바와 같이, 모바일 디바이스(110)는 또한 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장 및 접근성 서비스 중 하나 이상으로 구성될 수 있다. 이 경우, 예를 들어, 키보드 인터셉터(140)는 웹 브라우저 애플리케이션에 의해 액세스되고 있는 웹 페이지의 URL을 웹 브라우저 확장으로부터 수용하도록 구성될 수 있다. 키보드 인터셉터(140)는 예를 들어, 접근성 서비스로부터 모바일 디바이스의 그래픽 사용자 인터페이스(GUI) 내의 현재 콘텐츠를 수용하도록 구성될 수 있다.
키보드 인터셉터(140)는 검색 쿼리(search query)를 생성하도록 구성된다. 예시적인 구현예에서, 키보드 인터셉터(140)는 키보드 애플리케이션(120)을 사용하여 입력된 제1 입력에 기초하여 검색 쿼리를 생성한다. 검색 쿼리는 제1 입력의 정확한 콘텐츠에 기초할 수 있다. 예를 들어, 제1 입력이 문자열(text string) "jon"인 경우, 키보드 인터셉터(140)에 의해 생성된 검색 쿼리는 문자열 "jon"에 기초할 수 있다. 다른 예에서, 키보드 인터셉터(140)는 검색 쿼리를 생성하기 전에 먼저 제1 입력을 수정할 수 있다. 예를 들어, 제1 입력이 문자열 "jon"인 경우, 키보드 인터셉터(140)는 문자열을 "john"으로 수정할 수 있으므로, 문자열 "john"에 기초하여 검색 요청을 생성할 수 있다. 다른 예에서, 입력은 모바일 디바이스(110)의 GUI의 현재 콘텐츠를 분석함으로써 형성된다. GUI의 현재 콘텐츠는 GUI의 스크린샷으로부터 또는 모바일 디바이스(110) 상에서 동작하는 접근성 서비스(accessibility service)들을 통해 획득될 수 있다. 이 경우, 키보드 인터셉터(140)는 현재 콘텐츠로부터 GUI 내에 표시된 텍스트 등의 정보를 추출하여 입력을 형성할 수 있다. 다른 예에서, 입력은 웹 브라우저 애플리케이션과 연관된 브라우저 확장을 통해 키보드 인터셉터(140)에 제공된 정보에 기초하여 형성될 수 있다. 이 경우, 입력은 웹 브라우저 애플리케이션에 의해 현재 액세스되고 있는 웹 페이지에 대한 URL과 관련된 도메인 네임일 수 있다.
그런 다음, 키보드 인터셉터(140)는 서버(150)에 API 호출을 행하여, 서버(150)가 검색 쿼리에 기초하여 데이터를 로케이팅하게 한다. 요청은 문자열 "john"을 포함하는 "GET" HTTP(Hypertext Transfer Protocol) 요청으로서 발송될 수 있다. HTTP 요청을 수신하면, 서버(150)는 입력된 문자열(이 예에서는 "john")과 매칭되는 데이터를 로케이팅하기 위해 데이터베이스(160)와 통신한다. 위에서 설명된 바와 같이, 데이터베이스(160)는 브랜드들에 관한 데이터를 저장하고, 임의의 주어진 브랜드에 대해, 데이터는 데이터베이스의 필드들에 저장될 수 있으며, 필드들은 해당 브랜드의 오퍼들, 키워드들, 카테고리들, 설명들, 쿠폰 코드들, 설문 조사들 및 미디어 등과 같은 메타데이터, URL들 중 하나 이상을 포함한다. 각각의 브랜드에 대해, 해당 브랜드에 대한 데이터는 서버(150)에 의해 생성되는 고유 레코드 식별자(ID)를 통해 링크될 수 있다.
서버(150)가 입력된 문자열과 매칭되는 데이터 엔트리에 대해 데이터베이스(160)의 검색을 수행할 때, 서버(150)는 모든 데이터베이스 엔트리에 걸쳐 데이터베이스(160)에 의해 실행될 쿼리를 제출한다. 이것은 Azure™ 검색 서비스와 같은 외부 서비스와 통신하는 것을 수반할 수 있다. 쿼리와 매칭되는 데이터베이스 엔트리가 로케이팅될 때, 서버(150)는 전술한 대응하는 고유 레코드 ID를 검색하고, 메시지 내의 고유 레코드 ID를 키보드 인터셉터(140)에 예를 들어, HTTP 메시지로서 발송한다. 이는 서버(150)가 추가 검색을 수행할 필요 없이 나중에 데이터베이스 내의 엔트리들을 식별할 수 있게 한다. 메시지는 또한 검색 쿼리와 매칭되는 데이터베이스 필드들 중 하나 이상으로부터 검색된 데이터(예를 들어, 브랜드의 네임, 브랜드의 로고)를 포함할 수 있다.
일 예에서, 사용자는 설명 키워드를 입력할 수 있다. 이는 키보드 인터셉터(140)가 텍스트 "trainer"에 대한 검색 쿼리를 생성하게 한다. 그런 다음, 서버(150)는 텍스트 "trainer"와 관련된 엔트리들에 대한 데이터베이스(160)의 검색을 수행한다. 이 예에서, 데이터베이스(160)는 키워드 "trainer"와 연관하여 데이터베이스 필드에 저장된 경우, 예를 들어, 브랜드 Nike®를 반환할 수 있다. 키보드 인터셉터(140)로 발송된 메시지는 브랜드 Nike®에 관한 데이터가 검색 용어 "trainer"에 기초하여 로케이팅되었음을 표시할 수 있다. 메시지는 또한 전술한 바와 같이, 서버(150)에 의해 생성된 고유 레코드 ID를 포함한다.
서버(150)는 서버(140)에 키보드 인터셉터를 인증할 때 키보드 애플리케이션(120)에 의해 사용하기 위한 초기 구성 프로세스의 일부로서 하나 이상의 인증 토큰들을 키보드 인터셉터(140)에 제공할 수 있다. 인증 토큰들은 서버(150)가 키보드 인터셉터(140)의 사용자가 서버(150)에 유효하게 등록된 것으로 결정할 수 있는 경우 발행될 수 있다. 이는 사용자가 서버(150)와 연관된 엔티티에 계정을 등록하도록 요구할 수 있다. 예를 들어, 키보드 애플리케이션(120)이 서버(150)와 연관된 동일한 엔티티와 연관되면, 사용자는 키보드 애플리케이션(120)에 로그인 세부사항들을 제공할 수 있다. 사용자에 의한 성공적인 로그인은 키보드 애플리케이션(120)이 서버(150)와 키보드 애플리케이션(120) 및/또는 키보드 인터셉터(140) 사이의 통신을 인증하는 데 사용될 수 있는 액세스 토큰을 수신하게 한다. 키보드 애플리케이션(120)이 서버(150)와 연관되는 동일한 엔티티와 연관되지 않을 때, 예컨대, 키보드 애플리케이션(120)이 모바일 네트워크 운영자와 연관될 때, 키보드 인터셉터(140)는 액세스 토큰을 수신하기 위해 서버(150)와 직접 통신할 수 있다. 서버(150)는 또한 하나 이상의 리프레시 토큰(refresh token)을 키보드 애플리케이션(120) 및/또는 키보드 인터셉터(140)에 발행할 수 있다. 리프레시 토큰들은 액세스 토큰을 갱신하도록 구성되고, OAuth 프로토콜을 따를 수 있다.
어느 경우든, 인증 토큰은 사용자에 대한 정보를 포함할 수 있다. 정보는 사용자와 연관된 하나 이상의 식별자들을 포함할 수 있다. 일 예에서, 사용자와 연관된 식별자는 디바이스 ID를 포함한다. 디바이스 ID는 모든 모바일 폰 디바이스에 고유한 모바일 디바이스(110)의 IMEI(International Mobile Equipment Identity) 번호로부터 도출될 수 있다. 디바이스 ID의 다른 예들이 가능하다. 예를 들어, 디바이스 ID는 모바일 디바이스(110)와 연관된 전화 번호로부터 도출될 수 있다. 사용자와 연관된 식별자가 디바이스 ID를 포함하는 경우, 키보드 애플리케이션(120)은 모바일 네트워크 운영자(예를 들어, 모바일 네트워크 과금 앱)와 연관될 수 있다.
고유 레코드 ID(및 데이터베이스(160)로부터 서버(150)에 의해 반환된 다른 데이터)를 포함하는 메시지가 키보드 인터셉터(140)에 의해 수신되면, 키보드 인터셉터(140)는 그래픽 사용자 인터페이스(GUI) 내의 엘리먼트를 고유 레코드 ID와 연관시킨다. 예를 들어, 키보드 인터셉터(140)는 키보드 애플리케이션(120)의 사용자 인터페이스 내에 GUI 내의 전용 엘리먼트를 디스플레이할 수 있다. GUI 엘리먼트는 사용자가 입력한 것(이 예에서는 "jon")과 관련된 데이터가 발견되었음을 사용자에게 알리는 역할을 한다. 전용 GUI 엘리먼트는 버튼, 텍스트, 아이콘, 및 다른 상호작용 엘리먼트들의 형태를 취할 수 있다. 이 GUI 엘리먼트의 선택은 사용자가 현재 GUI 엘리먼트를 디스플레이하고 있는 모바일 디바이스(110)의 디스플레이의 영역을 물리적으로 누르는 것을 수반할 수 있다. 대안으로 또는 추가적으로, 키보드 인터셉터(140)는 키보드 애플리케이션(120)의 사용자 인터페이스에 이미 존재하는 하나 이상의 GUI 엘리먼트를 메시지와 연관시킬 수 있다. 예를 들어, 검색 쿼리와 관련된 데이터가 로케이팅되었음을 나타내는 메시지가 서버(150)로부터 수신될 때, 키보드 인터셉터(140)는 키보드 애플리케이션(120)의 사용자 인터페이스에 디스플레이된 입력 버튼을 고유 레코드 ID와 연관시킬 수 있다.
고유 레코드 ID와 연관된 GUI 엘리먼트는 데이터와 연관된 브랜드에 대한 하나 이상의 거래가 사용자에게 이용 가능하다는 표시를 디스플레이할 수 있다. 표시는 브랜드 웹사이트에서 사용할 수 있는 임의의 쿠폰 코드가 있는지, 브랜드와 관련된 설문 조사가 가능한지, 또는 브랜드와 관련된 임의의 다른 금융 인센티브가 있는 경우, 브랜드 웹사이트에서 구매에 대해 보상된 캐시백 금액을 사용자에게 알리는 텍스트일 수 있다. 이는 사용자가 브랜드 웹사이트를 방문하도록 장려할 수 있다.
사용자가 GUI 엘리먼트를 선택하면, 키보드 인터셉터(140)는 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신한다. GUI 엘리먼트의 선택은 두 번째로, 즉, 초기 검색 쿼리(이 예에서 "jon")를 시딩(seed)하기 위해 사용자가 입력하는 것에 후속되는 입력이라는 것이 이해되어야 한다.
GUI 엘리먼트의 선택은 키보드 인터셉터(140)가 고유 레코드 ID를 포함하는 요청을 서버(150)에 발송하게 하여, 서버(150)는 검색 쿼리에 응답하여 데이터가 이전에 검색되고 키보드 인터셉터(140)에 반환된 데이터베이스 레코드(들)를 식별할 수 있다.
이에 응답하여, 서버(150)는 메시지로부터 고유 레코드 ID를 검색하고, 고유 레코드 ID와 연관된 추가 정보를 위해 데이터베이스(160)를 검색한다. 이것은 고유 레코드 ID와 연관된 웹사이트에 대한 리다이렉트(redirect) URL을 포함할 수 있다. 이것은 또한 고유 레코드 ID와 연관된 하나 이상의 쿠폰 코드들 및/또는 설문 조사 질문들을 포함할 수 있다. 그런 다음, 서버(150)는 랜덤하게 생성된 클릭 ID 및 리다이렉트 URL을 포함하는 고유 추적 링크를 생성한다. 고유 추적 링크는 옵션으로 리다이렉트 URL에 대한 추적 통계를 제공하는 UTM(Urchin Tracking module) 파라미터와 같은 파라미터들을 추가로 포함한다. 서버(150)를 식별하는 서버 식별자와 같은 다른 유형의 정보가 고유 추적 링크에 포함될 수 있다. 서버 식별자는 도메인 네임과 연관된 웹사이트 상에서 사용자에 의해 취해진 임의의 액션들이 사용자를 웹사이트로 보내는 고유 추적 링크를 생성하는 서버(150)에 귀착(attribute)되는 것을 허용한다.
그런 다음, 고유 추적 링크는 고유 레코드 ID 및 사용자에 대한 식별자와 관련하여 데이터베이스(160)에 저장되고, 예를 들어, HTTP 메시지로서 키보드 인터셉터(140)로 다시 발송된다. 고유 추적 링크 및/또는 클릭 ID는 클릭의 로케이션, 클릭의 시간 및 날짜 등과 같은 GUI 엘리먼트의 선택과 관련된 정보와 연관하여 데이터베이스(160)에 추가로 저장될 수 있다.
키보드 인터셉터(140)는 모바일 디바이스(110) 상에서 실행되는 웹 브라우저 애플리케이션에 고유 추적 링크를 전달할 수 있다. 고유 추적 링크는 웹 브라우저 애플리케이션의 어드레스 바 내에 자동으로 배치될 수 있고, 따라서 효과적으로, GUI 엘리먼트의 단일 클릭에 이어서 사용자를 웹 사이트로 향하게 한다(direct). 대안으로, 고유 추적 링크가 어드레스 바에 삽입되어, 사용자에게 링크를 따르게 하거나 다른 링크를 선택하는 옵션을 제공할 수 있다.
웹 사이트에 액세스하면 웹 브라우저 애플리케이션이 웹 사이트에 의해 생성된 쿠키를 저장한다. 쿠키는 전술한 바와 같이 고유 추적 링크에 존재하는 클릭 ID를 포함한다. 쿠키는 웹 사이트의 소유자에게 사용자가 웹 사이트를 브라우징하는 동안 사용자의 활동을 모니터링할 수 있는 기능을 제공한다.
키보드 인터셉터(140)는 고유 추적 링크를 웹 브라우저 애플리케이션의 새로운 탭으로 전달할 수 있다. 이 예에서, 키보드 인터셉터(140)는 새로운 탭이 열릴 때 쿠키가 저장될 수 있도록 웹 브라우저 애플리케이션 내에서 새로운 탭이 열리게 할 수 있다. 그런 다음, 키보드 인터셉터(140)는 쿠키가 저장되었을 때 새로운 탭이 닫히게 할 수 있다. 이 프로세스는 사용자가 현재 웹 페이지로부터 다른 곳으로 향하지 않고 쿠키가 저장될 수 있게 한다. 다른 예에서, 키보드 인터셉터(140)는 고유 추적 링크를 사용하여 현재 웹 페이지를 리프레시(refresh)한다.
GUI 엘리먼트를 선택한 후에 사용자에 의해 취해진 임의의 액션들은 고유 추적 링크와 연관된 클릭 ID를 판독함으로써 해당 사용자에 귀착될 수 있다. 고유 추적 링크가 서버 식별자를 더 포함할 때, 추적 링크와 연관된 엔티티는 사용자에 의해 취해진 액션의 표시를 서버 식별자와 연관된 서버(150)에 제공할 수 있다. 그런 다음, 서버(150)는 엔티티로부터 수신된 고유 추적 링크와 저장된 고유 추적 링크들을 비교한다. 링크의 클릭 ID 부분들이 매칭될 것이기 때문에, 서버(150)는 그런 다음 특정 사용자에게 액션을 귀착시킬수 있다. 유리하게는, 고유 추적 링크의 형태는 어떠한 사용자 정보도 포함하지 않기 때문에 안전하다. 따라서, 사용자가 고유 추적 링크와 연관된 웹사이트를 브라우징할 때 사용자를 스누핑하는 제3자는 사용자에 의해 취해진 액션들을 임의의 개인과 연관시킬 수 없을 것이다.
또 다른 예에서, 사용자는 웹 브라우저 애플리케이션이 아닌 애플리케이션을 사용하여 제1 및 제2 입력들(이 예에서, "jon" 및 키보드 애플리케이션(120)에 의해 디스플레이된 GUI 엘리먼트의 선택)을 입력했을 수 있다. 이 경우, GUI 엘리먼트를 선택할 때, 운영 체제는 웹 브라우저 애플리케이션을 호출하고, 여기서 고유 추적 링크는 자동으로 어드레스 바에 배치된다. 임의의 경우에, 고유 추적 링크를 웹 브라우저 애플리케이션에 전달하는 것은 웹 브라우저 애플리케이션에게 URL에 대응하는 웹사이트에 액세스할 것을 지시한다.
위에서 설명되고 도 1에 도시된 시스템(100)은 키보드 인터셉터(140)에 의해 모바일 디바이스용 데스크탑 웹 브라우저 확장의 복제된 기능을 제공한다. 시스템(100)은 사용자에 의해 입력된 입력에 기초하여 또는 모바일 디바이스(110) 상에서 액세스되고 있는 현재 콘텐츠에 기초하여 웹사이트들의 편리한 검색 및/또는 웹사이트들에 대한 거래들을 제공하고, 그 결과 웹사이트 상의 사용자의 활동의 추적을 허용한다. 추적은 특정 활동을 사용자와 연관시키는 데 사용될 수 있다.
예를 들어, 데이터베이스(160)의 레코드 내의 데이터는 브랜드와 연관된 판매자와 연관될 수 있고, 모니터링된 활동은 전술한 바와 같이 GUI 엘리먼트의 선택 후에 사용자에 의해 이루어진 하나 이상의 구매일 수 있다. 쿠키가 고유 추적 링크가 생성될 때 할당되는 클릭 ID를 포함하기 때문에, 그리고 고유 추적 링크가 생성될 때 고유 추적 링크가 사용자 아이덴티티와 연관하여 저장되기 때문에, 판매자는 서버(150)의 액션을 통해 사용자를 그들의 웹사이트로 보낸 것으로 식별할 수 있다. 따라서, 판매자는 하나 이상의 구매들에 기초하여 서버(150)와 연관된 엔티티에게 커미션을 제공할 수 있다. 이 커미션은 캐시백 및 쿠폰/할인 쿠폰/코드의 형태로 사용자에게 부분적으로 반환될 수 있다.
고유 추적 링크의 생성에 더하여, 키보드 인터셉터(140)는 하나 이상의 추가 액션을 취할 수 있다. 하나 이상의 추가 액션들은 URL에 대응하는 웹사이트 상의 관련 텍스트 필드에 쿠폰 코드를 삽입하는 것을 포함할 수 있다. 관련 텍스트 필드는 쿠폰 코드에 지정된 텍스트 필드일 수 있다. 일례는 바우처 코드의 형태로 텍스트를 수신하도록 특별히 지정된 HTML 필드이다. 하나 이상의 액션들은 URL에 대응하는 웹사이트와 연관된 브랜드와 관련된 설문 조사를 사용자에게 디스플레이하는 것을 포함할 수 있다. 이러한 예들은 도 7a 내지 도 9를 참조하여 아래에서 더 상세히 논의될 것이다.
도 2는 일 예에 따른 모바일 디바이스(200)를 개략적으로 예시한다. 모바일 디바이스(200)는 도 1에 도시된 시스템(100)의 동일한 모바일 디바이스(110)일 수 있다. 모바일 디바이스(200)는 모바일 운영 체제를 지원하는 모바일 컴퓨팅 디바이스이다. 예시적인 모바일 디바이스들은 iOS® 15 또는 상위를 실행하는 iPHONE®, 미국 쿠퍼티노 소재의 Apple Inc.에 의해 개발된 모바일 운영 체제를 포함한다. 다른 예시적인 모바일 디바이스들은 미국 마운틴 뷰의 Google LLC에 의해 개발된 Android™ 운영 체제를 실행하는 모바일 컴퓨팅 디바이스들을 포함한다.
모바일 디바이스(200)는 네트워크 인터페이스(210), 키보드 애플리케이션(220), 웹 브라우저 애플리케이션(250), 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255), 그래픽 사용자 인터페이스(GUI)(260), 프로세서(270) 스토리지(280), 및 접근성 서비스(290)를 포함한다. 키보드 애플리케이션(220)은 키보드 SDK(230) 및 키보드 인터셉터(240)를 포함한다. 사용자 인터페이스(260)는 터치 감지 디스플레이일 수 있다. 키보드 SDK(230)는 GUI(260) 상에 디스플레이되는 가상 키보드 기능을 키보드 애플리케이션(220)에 제공하고, 사용자가 모바일 디바이스(200)에 입력을 제공할 수 있게 한다. 프로세서(270)는 키보드 인터셉터(240)가 특정 명령들을 실행하게 하도록 구성된다.
시스템(100)과 관련하여 설명된 바와 같이, 키보드 인터셉터(240)는 사용자에 의해 입력된 입력을 추적하거나 웹 브라우저 확장(255) 및 접근성 서비스(290)와 같은 모바일 디바이스(200) 상에 존재하는 하나 이상의 애플리케이션으로부터 정보를 수신할 수 있다. 도 3은 예시적인 구현예에 따른 키보드 인터셉터(240), 서버(150) 및 데이터베이스(160) 사이의 통신 흐름(300)을 예시하는 프로세스 흐름도이다. 단계 S310에서, 키보드 인터셉터(240)는 제1 입력을 수신하였다.
제1 예에서, 이 입력은, 전술한 바와 같이, 사용자가 키보드 애플리케이션(220)을 사용하여 모바일 디바이스(200) 상의 애플리케이션과 상호작용할 때 키보드 인터셉터(240)의 이벤트 리스너(event listener)를 통해 수신될 수 있다.
제2 예에서, 키보드 인터셉터(240)는 검색 바(search bar)를 포함한다. 검색 바는 키보드 애플리케이션(220)이 실행될 때마다 디스플레이될 수 있거나, 키보드 애플리케이션(220)의 사용자 인터페이스 내의 옵션을 선택함으로써 디스플레이될 수 있다. 검색 바는 사용자가 서버(150)와 직접 상호작용할 수 있는 수단을 제공한다. 검색 바는 키보드 애플리케이션(220)에 의해 제공되는 가상 키보드를 사용하여 타이핑된 입력을 수용하고/하거나 음성 입력을 수용할 수 있다. 예를 들어, 검색 바는 모바일 디바이스(200)의 마이크를 활성화하고, 오디오 클립을 레코딩하는 선택 가능한 아이콘을 포함할 수 있다. 키보드 인터셉터(240)는 오디오 클립 내의 임의의 음성을 텍스트로 변환하기 위해 음성-텍스트(speech to text) 처리를 사용할 수 있다.
제3 예에서, 키보드 인터셉터(240)는 모바일 디바이스(200)의 사용자 인터페이스의 현재 콘텐츠를 모니터링하도록 구성된다. 일 경우에, 키보드 인터셉터(240)는 현재 콘텐츠로부터 웹 브라우저 애플리케이션(250)에 의해 현재 액세스되고 있는 웹사이트의 웹페이지의 URL을 획득한다. 현재 콘텐츠는 키보드 인터셉터(240)에 의해 모바일 디바이스(200)의 사용자 인터페이스를 스크린샷함으로써 획득될 수 있다. 그런 다음, 키보드 인터셉터(240)는 스크린샷에 대해 이미지 처리를 수행하여 모바일 웹 브라우저 애플리케이션(250)의 어드레스 바 내의 URL을 결정할 수 있다. 일부 경우들에서, 전체 URL은 어드레스 바에서 은닉될 수 있거나 어드레스 바 자체가 은닉될 수 있다. 따라서, 키보드 인터셉터(240)는 전체 URL이 은닉된 인스턴스들 사이에서 URL을 획득하기에 충분한 레이트로 스크린샷들을 취할 수 있다. 사용자 인터페이스의 현재 콘텐츠는 모바일 디바이스(200)의 운영 체제에 의해 키보드 인터셉터(240)에 이용 가능하게 된 접근성 서비스(290)를 통해 획득될 수 있다. 접근성 서비스(290)는 모바일 디바이스(200)의 운영 체제에 의해 제공될 수 있고 자동 채움 프레임워크(autofill framework)를 포함할 수 있다. 키보드 인터셉터(240)는 현재 웹사이트의 URL을 결정하기 위해 접근성 서비스(290)를 통해 획득된 사용자 인터페이스의 현재 콘텐츠를 처리할 수 있다.
제4 예에서, 키보드 인터셉터(240)는 웹 브라우저 애플리케이션(250)에 의해 현재 액세스되고 있는 웹 페이지와 연관된 도메인 네임을 결정하기 위해 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255) 또는 단순히 브라우저 확장(255)과 인터페이싱할 수 있다. 일부 모바일 웹 브라우저 애플리케이션(250)은 데스크탑 웹 브라우저 애플리케이션과 유사한 방식으로 브라우저 확장을 지원한다. 예를 들어, iOS® 15는 Safari®의 모바일 버전 상의 브라우저 확장들의 이용가능성을 도입하였다. 브라우저 확장(255)은 모바일 디바이스(200) 상에서 실행되는 운영 체제와 호환가능한 애플리케이션 저장소로부터 다운로드 가능할 수 있다. 대안으로, 또는 추가적으로, 브라우저 확장(255)은 웹 브라우저 애플리케이션(250) 내로부터 다운로드 가능할 수 있다. 다른 예에서, 브라우저 확장(255)은 모바일 디바이스(200) 상에 사전-인스톨(pre-install)되어 제공될 수 있다.
브라우저 확장(255)은 키보드 인터셉터(240)와 인터페이싱할 수 있다. 일 예에서, 키보드 인터셉터(240)는 브라우저 확장(255)과 키보드 인터셉터(240) 사이의 통신을 허용하기 위해 브라우저 확장(255)에 등록된다. 또한, 키보드 인터셉터(240) 및 브라우저 확장(255)은 동일한 엔티티에 의해 제공될 수 있고, 따라서 사용자는 키보드 인터셉터(240) 및 브라우저 확장(255)과 연관된 동일한 계정에 로그인할 수 있다. 로그인 절차는 OAuth 2.0 또는 SAML과 같은 단일 사인온(sign-on) 프로세스를 통해 수행될 수 있다.
브라우저 확장(255)과 키보드 인터셉터(240) 사이의 통신은 모바일 디바이스(200) 상에 직접 통신을 제공하는 API를 통해 이루어질 수 있다. 대안으로 또는 추가적으로, 브라우저 확장(255) 및 키보드 인터셉터(240)는 스토리지(280)와 같은 공유 스토리지를 통해 통신할 수 있으며, 브라우저 확장(255)은 키보드 인터셉터(240)에 액세스 가능한 공유 스토리지 내에 데이터를 저장할 수 있다. 대안으로 또는 추가적으로, 브라우저 확장(255) 및 키보드 인터셉터(240)는 서버(150)를 통해 통신할 수 있다. 이는 브라우저 확장(255) 및 키보드 인터셉터(240)가 서버(150)와 또한 연관된 동일한 엔티티에 의해 제공될 수 있기 때문에 가능할 수 있다.
그런 다음, 브라우저 확장(255)은 URL을 키보드 인터셉터(240)에: API를 통해 직접, 공유 스토리지를 통해 발송할 수 있으며, 이에 의해 브라우저 확장(255)은 URL을 저장하고 키보드 인터셉터(240)는 URL을 검색하기 위해 공유 스토리지에 액세스하고, 또는 간접적으로 서버(150)를 통해 발송한다. 키보드 인터셉터(240)는 제1 입력을 형성하기 위해 URL에 대한 추가 처리를 수행할 수 있다. 예를 들어, 키보드 인터셉터(240)는 URL로부터 텍스트를 추출하여 제1 입력을 형성할 수 있다.
제1 입력이 어떻게 수신/생성되는지에 관계없이, 키보드 인터셉터(240)는 제1 입력과 연관된 검색 쿼리를 생성한다. 검색 쿼리는 API 호출(M310)을 통해 서버(150)로 포워딩된다. API 호출(M310)은 검색 쿼리를 포함하는 "GET" HTTP 요청일 수 있다. 전술한 바와 같이, 서버(150)와 키보드 인터셉터(240) 사이의 인증된 통신은 인증 프로세스를 통해 달성될 수 있고 이에 의해 서버(150)가 키보드 인터셉터(240)에 하나 이상의 인증 토큰들을 제공한다. 인증 토큰은 디바이스 ID와 같은 키보드 인터셉터(240)의 사용자에 대한 정보를 포함할 수 있다.
상술된 바와 같이, 로케이팅될 데이터는 URL들 중 하나 이상과 같은 브랜드들에 관한 데이터, 메타데이터 예컨대, 해당 브랜드의 오퍼들, 키워드들, 카테고리들, 설명들, 쿠폰 코드들, 설문 조사들 및 미디어 등을 포함할 수 있다. 하나 이상의 URL들이 판매자와 연관될 때, 메타데이터는 사용자가 이용가능한 임의의 활성 거래들이 존재하는지 여부의 표시를 포함할 수 있다. 위에서 논의된 바와 같이, 연관된 데이터는 서버(150)에 의해 생성되는 고유 레코드 식별자(ID)를 통해 링크될 수 있다.
모바일 디바이스(200)는 네트워크 인터페이스(210)를 통해 서버(150)와 통신할 수 있다. 네트워크 인터페이스(210)는 모바일 디바이스(200)와 서버(150) 사이의 데이터 흐름을 용이하게 하도록 배열된 무선 인터페이스일 수 있다. 네트워크 인터페이스(210)는 모바일 디바이스(200)와 다른 원격 디바이스, 예컨대, 동일한 통신 네트워크에 연결된 하나 이상의 추가 서버 및 다른 모바일 디바이스 사이의 데이터 흐름을 더 용이하게 할 수 있다. 예를 들어, 네트워크 인터페이스(210)는 통신 프로토콜에 따라 원격 디바이스들과 통신할 수 있다. 통신 프로토콜은 IEEE 802.11a, 802.11b, 802.11g, 802.11n 또는 802.15를 포함하는 임의의 무선 표준일 수 있다. 네트워크 인터페이스가 무선 인터페이스일 때, 네트워크 인터페이스는 하나 이상의 라디오들을 포함할 수 있다.
단계 S320에서, 서버(150)는 요청(M320)을 데이터베이스(160)에 발송한다. 요청(M320)은 데이터베이스가 검색 쿼리와 매칭되는 데이터를 로케이팅하게 한다. 요청(M320)은 SQL(Structured Query Language) 쿼리일 수 있다. 요청(M320)은 데이터베이스(160)가 검색 쿼리와 매칭되는 데이터에 대해 모든 데이터베이스 엔트리들에 걸쳐 검색하게 한다. 이것은 Azure™ 검색 서비스와 같은 외부 서비스와 통신하는 것을 수반할 수 있다.
단계 S330에서, 서버(150)는 메시지(M330) 내의 고유 레코드 ID를 키보드 인터셉터(240)에 발송한다. 메시지(M330)는 HTTP 메시지일 수 있다. 메시지(M330)는 검색 쿼리와 매칭되는 데이터가 발견되었음을 키보드 인터셉터(240)에 나타낸다.
단계 S340에서, 메시지(M330)를 수신한 것에 응답하여, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 내에서 GUI 엘리먼트를 고유 레코드 ID와 연관시킨다. 키보드 애플리케이션(220)이 가상 키보드인 경우, GUI 엘리먼트는 메시지(M330)의 수신에 응답하여 키보드의 사용자 인터페이스 바로 위의 배너(banner)에 디스플레이되는 새로운 GUI 엘리먼트일 수 있다. GUI 엘리먼트는 대안으로 가상 키보드 내의 문자 키일 수 있다.
단계 S350에서, 키보드 인터셉터(240)는 사용자가 GUI 엘리먼트를 선택하는 것에 대응하는 제2 입력을 수신한다. 이에 응답하여, 키보드 인터셉터(240)는 고유 레코드 ID를 포함하는 요청(M340)을 서버(150)에 발송한다. 요청(M350)은 HTTP POST 요청일 수 있다. 요청(M350)은 전술한 인증 프로세스의 일부로서 검색된 임의의 인증 토큰을 사용하여 인증될 수 있다.
단계 S360에서, 서버(150)는 추가 요청(M360)을 데이터베이스(160)에 발송함으로써 고유 레코드 ID와 연관된 정보를 검색한다. 요청(M360)은 SQL 쿼리일 수 있다. 고유 레코드 ID는 서버(150)가 요청(M320)을 통해 데이터가 이전에 검색된 데이터베이스 레코드(들)를 식별할 수 있게 한다. 이 예에서, 정보는 고유 레코드 ID와 연관된 웹사이트에 대한 리다이렉트 URL을 포함한다. 검색 쿼리가 검출된 URL에 기초하여 형성되었을 수 있기 때문에, 리다이렉트 URL은 웹 브라우저 애플리케이션 내에서 현재 액세스되고 있는 동일한 웹사이트에 대한 것일 수 있다. 그런 다음, 서버(150)는 랜덤하게 생성된 클릭 ID 및 리다이렉트 URL을 포함하는 고유 추적 링크를 생성한다. 고유 추적 링크는 서버(150)에 의해 데이터베이스(160)에 저장될 수 있다.
고유 추적 링크는 옵션으로 리다이렉트 URL에 대한 추적 통계를 제공하는 UTM(Urchin Tracking module) 파라미터와 같은 파라미터들을 추가로 포함한다. 서버(150)를 식별하는 서버 식별자와 같은 다른 유형의 정보가 고유 추적 링크에 포함될 수 있다. 서버 식별자는 도메인 네임과 연관된 웹사이트 상에서 사용자에 의해 취해진 임의의 액션들이 사용자를 웹사이트에 보낸 고유 추적 링크를 생성하는 서버(150)에 귀착되는 것을 허용한다.
그런 다음, 고유 추적 링크는 고유 레코드 ID와 관련하여 데이터베이스(160)에 저장된다. 단계 S370에서, 서버(150)는 추가 메시지(M370)를 통해 고유 추적 링크를 키보드 인터셉터(240)에 발송한다. 추가 메시지(M370)는 전술한 바와 같이 HTTP 메시지일 수 있다.
일단 고유 추적 링크가 키보드 인터셉터(240)에 이용가능하면, 고유 추적 링크는 웹 브라우저 애플리케이션(250)으로 전달된다. 일 예에서, 고유 추적 링크는 먼저 웹 브라우저 확장(255)에 통신될 수 있고 웹 브라우저 확장(255)은 고유 추적 링크를 웹 브라우저 애플리케이션(250)에 전달하여 이에 의해 웹 사이트에 액세스할 수 있다. 론칭(launch)될 때 고유 추적 링크는 URL에 대응하는 웹 사이트에 대한 액세스를 제공한다. 웹사이트에 액세스하는 것은 웹 브라우저 애플리케이션(250)이 웹사이트에 의해 생성된 쿠키를 저장하게 한다. 쿠키는 전술한 바와 같이 고유 추적 링크에 존재하는 클릭 ID를 포함한다. 쿠키는 웹 사이트의 소유자에게 사용자가 웹 사이트를 탐색하는 동안 사용자의 활동을 모니터링할 수 있는 능력을 제공한다.
키보드 애플리케이션(220) 또는 웹 브라우저 확장(255)은 새로운 탭이 웹 브라우저 애플리케이션(250) 내에서 열리게 하고, 고유 추적 링크를 새로운 탭으로 전달할 수 있다. 쿠키는 그런 다음 웹 브라우저 애플리케이션(250)에 의해 저장될 수 있고, 키보드 애플리케이션(220) 또는 웹 브라우저 확장(255)은 새로운 탭이 닫히게 할 수 있다. 이러한 방식으로, 사용자는 현재 웹페이지로부터 다른 곳으로 내비게이팅될 필요가 없어, 사용자 경험을 개선한다. 다른 예에서, 키보드 인터셉터(240) 또는 웹 브라우저 확장(255)은 현재 웹페이지를 리프레시하여 쿠키를 저장한다.
제2 예시적인 구현예에서, 키보드 인터셉터(240)는 데이터를 로케이팅하고 고유 추적 링크를 생성하기 위해 키보드 애플리케이션(220)을 통해 로컬 스토리지와 통신한다. 이 제2 예에서, 제1 예에서 데이터베이스(160)에 의해 저장된 것과 유사한 데이터는 스토리지(280)에 로컬에 저장될 수 있다. 이 경우, 데이터베이스(160)와 로컬 스토리지(280) 간에는 초기 복제 과정이 있을 수 있으며, 이에 의해 데이터베이스(160)에 저장된 데이터는 로컬 스토리지(280)로 복사된다. 키보드 애플리케이션(220)은 바람직하게는 로컬에 저장된 데이터를 리프레시하기 위해 서버(150)와 정기적으로 통신한다.
이러한 제2 예에서, 키보드 인터셉터(240)는 입력을 수신하고, 검색 쿼리를 생성한다. 데이터를 로케이팅하기 위해, 검색 쿼리는 키보드 애플리케이션(220)으로 전달된다. 키보드 애플리케이션(220)은 그런 다음 검색 쿼리와 매칭되는 데이터를 로케이팅하기 위해 로컬 스토리지(280)의 검색을 수행할 수 있다. 데이터를 로케이팅하는 단계는 캐시로부터 데이터를 검색하는 중간 단계를 수반할 수 있다. 예를 들어, 데이터는 별도의 메모리(미도시)에 이미 캐싱되어 있으므로 키보드 애플리케이션(220)에 이미 이용가능할 수 있거나, 데이터는 키보드 애플리케이션(220)에 의해 검색되기 전에 먼저 스토리지(280)에 로케이팅되고 별도의 메모리에 캐싱될 수 있다. 레코드 식별자를 포함하고, 검색 쿼리와 매칭되는 데이터가 로케이팅되었음을 나타내는 메시지는 그런 다음 키보드 애플리케이션(220)으로부터 키보드 인터셉터(240)로 전달되어, 키보드 애플리케이션(220)에 의해 디스플레이된 GUI 엘리먼트가 메시지와 연관되게 한다. 원격 서버와 통신하는 대신 로컬 스토리지에 액세스하는 것은 검색 쿼리와 매칭되는 데이터를 로케이팅하는 프로세스를 가속화할 수 있다. 이 제2 예에서, 사용자가 GUI 엘리먼트를 선택할 때, 키보드 인터셉터(240)는 고유 레코드 ID를 포함하는 요청을 키보드 애플리케이션(220)에 포워딩한다. 그런 다음, 키보드 애플리케이션(220)은 고유 추적 링크를 생성하기 위해 서버에 요청을 포워딩할 수 있다.
도 4는 제2 예시적인 구현에 따른 키보드 인터셉터(240), 키보드 애플리케이션(220), 서버(150) 및 데이터베이스(160) 사이의 통신 흐름(400)을 예시하는 흐름 프로세스 다이어그램을 도시한다. 단계 S410에서, 키보드 애플리케이션(120)은 데이터베이스(160)에 저장된 데이터를 요청하는 요청(M410)을 서버(150)에 발송한다. 이는 키보드 애플리케이션(220)이 모바일 디바이스(200) 상에 처음 설치될 때 초기화 프로세스의 일부로서 발생할 수 있다. 이 경우, 사용자는 서버(150)와 연관된 계정을 생성하거나 이에 로그인하도록 요구될 수 있다. 상기 계정은 서버(150)와 통신하기 위해 키보드 애플리케이션(220)의 인가를 승인할 수 있다.
단계 S420에서, 데이터베이스(160)에 저장된 기록들이 데이터 전송(M420)을 통해 스토리지(280)로 다운로드되는 데이터 동기화 프로세스가 발생한다. 데이터 동기화 프로세스는 키보드 애플리케이션(220)이 서버(150)와 유효하게 통신할 수 있다고 서버(150)가 결정한 것에 응답하여 발생할 수 있다. 데이터 전송은 JSON(JavaScript™ Object Notation) 데이터 응답일 수 있다. 데이터 전송(M420)이 완료되면, 데이터베이스(160)에 저장된 레코드도 스토리지(280)에 존재한다.
단계 S430에서, 키보드 인터셉터(240)는 제1 입력을 수신하고, 제1 입력에 기초하여 검색 쿼리를 생성한다. 키보드 인터셉터(240)는 검색 쿼리를 포함하는 요청(M430)을 키보드 애플리케이션(220)에 발송한다. 요청(M430)은 키보드 인터셉터(240)와 키보드 애플리케이션(220) 사이의 API 호출일 수 있다.
단계 S440에서, 키보드 애플리케이션(220)은 검색 쿼리와 매칭되는 데이터를 로케이팅하기 위해 로컬 스토리지(280)와 통신한다. 키보드 애플리케이션(220)은 검색 쿼리와 매칭되는 데이터를 요청하는 요청(M440)을 스토리지에 발송한다. 검색 쿼리와 매칭되는 데이터가 로케이팅될 때, 데이터와 연관된 고유 레코드 ID가 검색된다. 데이터를 로케이팅하는 단계는 캐시로부터 데이터를 검색하는 중간 단계를 수반할 수 있다.
단계 S450에서, 데이터가 로케이팅된 후, 키보드 애플리케이션(220)은 고유 레코드 ID를 포함하는 메시지(M450)를 키보드 인터셉터(240)에 발송한다. 그런 다음, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 내의 GUI 엘리먼트를 고유 레코드 ID와 연관시킨다.
단계 S460에서, 키보드 인터셉터(240)는 메시지(M450)를 수신한 것에 응답하여, 키보드 애플리케이션(220)의 사용자 인터페이스 내에서 GUI 엘리먼트를 고유 레코드 ID와 연관시킨다.
단계 S470에서, 키보드 인터셉터(240)는 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신한다. 제2 입력에 응답하여, 키보드 인터셉터(240)는 고유 레코드 ID를 포함하는 요청(M470)을 키보드 애플리케이션(220)에 발송한다.
단계 S480에서, 키보드 애플리케이션(220)은 고유 레코드 ID와 연관된 정보에 대한 로컬 스토리지(280)의 추가 요청(M480)을 발송한다. 고유 레코드 ID는 키보드 애플리케이션(220)이 요청(M440)을 통해 데이터가 이전에 검색된 레코드(들)를 식별할 수 있게 한다. 정보는 고유 레코드 ID와 연관된 웹사이트에 대한 리다이렉트 URL을 포함한다. 그런 다음, 키보드 애플리케이션(220)은 리다이렉트 URL 및 랜덤 클릭 ID를 포함하는 고유 추적 링크를 생성한다. 고유 추적 URL은 로컬 스토리지(280)에 저장될 수 있고 및/또는 HTTP 메시지를 통해 서버(150)로 발송될 수 있다.
단계 S490에서, 키보드 애플리케이션(220)은 추가 메시지(M490)를 통해 고유 추적 링크를 키보드 인터셉터(240)에 발송한다.
모바일 디바이스(200)를 사용하는 제3 예시적인 구현예에서, 키보드 인터셉터(240)는 입력을 수신하고 검색 쿼리를 생성한다. 제2 예에서와 같이, 검색 쿼리는 키보드 애플리케이션(220)으로 전달된다. 이 제3 예에서, 키보드 애플리케이션(220)은 검색 쿼리와 매칭되는 데이터를 로케이팅하기 위해 서버에 API 호출을 행한다. API 호출은 API 호출(M310)과 유사하지만, 대신에 키보드 애플리케이션(220)과 서버(150) 간에 있다. 이를 위해, 키보드 애플리케이션(220)은 서버(150)와 통신하는데 요구되는 필요한 API 기능을 더 포함할 수 있으며, 이 경우 키보드 애플리케이션(220)은 자체적으로 데이터를 로케이팅하기 위해 검색 쿼리를 서버(150)에 발송할 수 있다. 데이터가 로케이팅될 때, 고유 레코드 ID를 포함하는 메시지는 키보드 애플리케이션(220)으로 반환되고, 키보드 인터셉터(240)로 전달된다. 그런 다음, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 내에서 GUI 엘리먼트를 메시지와 연관시킨다. 이 제3 예에서, 사용자가 GUI 엘리먼트를 선택할 때, 키보드 인터셉터(240)는 키보드 애플리케이션(220)에 대한 API 호출을 행하여, 키보드 애플리케이션(220)이 그 자체로 고유 추적 링크를 위한 서버(150)에 대한 API 호출을 생성하게 한다. 다른 예들에서와 같이, 이 API 호출은 HTTP "GET" 요청으로서 서버(150)에 발송될 수 있다.
모바일 디바이스(200)를 사용하는 제4 예시적인 구현예에서, 키보드 인터셉터(240)는 입력을 수신하고, 검색 쿼리를 생성한다. 제2 및 제3 예들에서와 같이, 검색 쿼리는 키보드 애플리케이션(220)으로 전달된다. 키보드 애플리케이션(220)은 그런 다음 검색 쿼리와 매칭되는 데이터를 로케이팅하기 위해 로컬 스토리지(280)의 검색을 수행한다. 검색 요청과 관련된 데이터가 키보드 애플리케이션(220)에 의해 발견되지 않으면, 검색 쿼리는 그런 다음 API 호출(M310)과 유사한 API 호출을 통해 서버(150)에 포워딩되지만, 키보드 애플리케이션(220)과 서버(150) 사이에서 포워딩된다. 이는 관련 데이터가 로컬 스토리지(280)에 존재하지 않지만 서버(150)에 이용 가능한 경우 발생할 수 있는데, 이는 서버에 이용 가능한 데이터가 더 최신일 수 있기 때문이다. 이 제4 예에서, 고유 추적 링크는 키보드 인터셉터(240) 또는 키보드 애플리케이션(220)에 의해 생성될 수 있다. 대안으로, 고유 추적 링크는 API 호출(M350)과 같은 키보드 인터셉터(240)에서 발원(originate)하는 적합한 API 호출의 수신에 응답하여 서버(150)에 의해 생성될 수 있다.
일부 예들에서, 사용자는 키보드 애플리케이션의 사용자 인터페이스의 하나 이상의 필드를 통해 입력을 제공할 수 있다. 예시적인 필드 유형들은 URL 필드, 패스워드 필드, 텍스트 필드 및 숫자 필드를 포함한다. 키보드 인터셉터(240)는 제1 입력이 제공된 필드가 URL에 대하여 지정된 필드인 것을 결정할 수 있다. 대안으로 또는 추가적으로, 키보드 인터셉터(240)는 제1 입력이 제공되는 필드가 검색을 위해 지정된 필드라고 결정할 수 있으며, 이의 예는 검색 엔진에 대한 텍스트 필드이다. 추가 예에서, 키보드 인터셉터(240)는 제1 입력이 제공되는 필드가 URL에 대해서도 또한 검색에 대해서도 지정되지 않았다고 결정할 수 있다. 예를 들어, 사용자는 제2 사용자에게 어드레싱되는 메시지를 메신저 애플리케이션에 작성하고 있을 수 있다. 키보드 인터셉터(240)는 여전히 활성일 수 있고, 단계들 S310 내지 S370 또는 S430 내지 S490을 수행할 수 있다. GUI 엘리먼트의 선택에 대응하는 제2 입력을 사용자로부터 수신한 것에 응답하여, 키보드 인터셉터(240)는 웹 브라우저 애플리케이션(250)이 메신저 애플리케이션으로부터 론칭되게 할 수 있다. 웹 브라우저 애플리케이션(250)은 디폴트 웹 브라우저 애플리케이션일 수 있다.
대안으로, 키보드 애플리케이션(220)은 현재 액세스되고 있는 임의의 애플리케이션이 iOS 상의 안드로이드 WebView 또는 Web views과 같은 시스템 서비스를 통해 URL과 연관된 웹사이트를 디스플레이하게 할 수 있다. 이러한 방식으로, 고유 추적 링크는 모바일 디바이스 상에서 실행되는 임의의 애플리케이션으로부터 론칭될 수 있다.
키보드 인터셉터(240)는 사용자가 키보드 애플리케이션(220)을 통해 입력을 제공할 수 있는 모바일 디바이스(200) 상에서 실행되는 임의의 애플리케이션과 협업(cooperate)할 수 있다. 키보드 인터셉터(240)는 사용자가 입력을 제공하고 있는 현재 애플리케이션을 감지할 수 있다. 이러한 검출에 기초하여, 키보드 인터셉터(240)는 현재 애플리케이션이 키보드 인터셉터(240)와 함께 사용하기 위해 인에이블되는 애플리케이션인지 여부를 결정하기 위해, 또는 다른 식으로, 애플리케이션들의 리스트를 룩업(lookup)할 수 있다. 리스트는 로컬 스토리지(280) 및/또는 데이터베이스(160)에 저장될 수 있다. 키보드 인터셉터(240)가 현재 애플리케이션이 사용을 위해 인에이블된다고 결정하면, 단계들 S310 내지 S370 또는 S430 내지 S490이 수행될 수 있다. 이 경우, 현재 애플리케이션의 검출은 검색 쿼리를 형성하는 것으로 피드(feed)될 수 있다. 예를 들어, 검색 쿼리는 사용자가 현재 애플리케이션에 현재 액세스하고 있다는 표시를 포함할 수 있다. 그런 다음, 서버(150)는 현재 애플리케이션과 연관된 엔티티에 특정한 거래들을 반환할 수 있다.
반면, 키보드 인터셉터(240)가 현재 애플리케이션이 인에이블되지 않는다고 결정하면, 키보드 인터셉터(240)는 비활성으로 되어, 단계 S310 내지 S370 또는 S430 내지 S490을 수행하지 않을 수 있다. 일 예에서, 특정 모바일 애플리케이션은 해당 모바일 애플리케이션이 특정 유형이거나 데이터베이스(160)에 저장된 데이터와 연관되는 것과 같은 특정한 미리 지정된 기준을 충족시키는 경우 인에이블되지 않는 것으로 간주될 수 있다. 키보드 인터셉터(240)가 활성 상태를 유지하고, 경쟁자(competitor)에 관한 데이터가 또한 데이터베이스에 저장되는 경우, 사용자는 그들의 키보드 애플리케이션(220)에서 브랜드와 경쟁자 사이의 옵션을 제공받을 수 있다.
일부 예들에서, 키보드 인터셉터(240)는 사용자가 검색 쿼리를 생성하기 전에 제1 입력을 제공하는 것을 완료한 후 미리 결정된 양의 시간 동안 검색을 디바운스(debounce)하거나 대기할 것이다. 이러한 디바운싱은 수행될 필요가 있는 계산의 수를 감소시킴으로써 프로세스의 효율을 증가시킬 수 있다. 미리 결정된 시간은 0.3초와 같은 고정된 시간일 수 있다. 대안으로, 미리 결정된 양의 시간은 동적으로 결정될 수 있다. 예를 들어, 키보드 인터셉터(240)는 사용자의 사용 패턴에 기초하여 검색 쿼리의 생성을 디바운싱하기 위한 최적의 시간을 결정하기 위해 학습 알고리즘을 이용할 수 있다. 이 경우, 더 느린 타이퍼(typer)에 대한 검색 쿼리의 생성을 디바운스하기 위한 미리 결정된 시간은 더 빠른 타이퍼에 대한 검색을 디바운스하기 위한 미리 결정된 시간보다 길 수 있다. 예를 들어, 빠른 타이퍼에 대한 검색을 디바운스하기 위한 최적의 양의 시간은 느린 타이퍼에 의한 각각의 키 스트로크 후에 검색들이 수행될 수 있기 때문에 느린 타이퍼에 대한 불필요한 추가 검색들을 초래할 것이다. 이는 결국 타이핑될 텍스트와 관련이 없는 도메인 네임을 로케이팅하도록 하는 것으로 귀결될 수 있어서, 그렇게 하기 위해 불필요한 계산 자원을 사용한다.
일 예에서, 고유 레코드 ID는 특정 판매자와 연관되고, 데이터베이스(160)는 판매자와 연관된 로고 및 활성 거래(active deal)를, 판매자와 연관된 키워드들 및 판매자를 식별하는 것을 도울 수 있는 임의의 다른 메타데이터와 함께 저장한다. 판매자와 연관된 로고 및 활성 거래를 나타내는 텍스트는 서버(150)에 의해 키보드 인터셉터(240)로 반환된 메시지 내의 고유 레코드 ID와 함께 포함될 수 있다. 이 예에서, 로고는 GUI 엘리먼트 내에 디스플레이될 수 있다.
상기에서 논의된 바와 같이, 쿠키는 고유 추적 링크가 생성될 때 할당되는 클릭 ID를 포함하기 때문에, 그리고 고유 추적 링크가 생성될 때 고유 추적 링크가 사용자 아이덴티티와 연관하여 저장되기 때문에, 웹사이트에 액세스할 때 사용자에 의해 취해진 임의의 액션들이 사용자에게 링크될 수 있다. 고유 추적 링크는 서버(150)와 연관된 추가 식별자를 포함할 수 있다. 서버(150)와 연관된 식별자는 판매자가 사용자를 판매자의 웹 사이트로 향하게 한 서버(150)를 식별할 수 있게 한다. 따라서, 판매자는 구매에 기초한 커미션을 서버(150)와 연관시킬 수 있고, 사용자 식별자는 서버(150)와 연관된 엔티티가 구매를 한 사용자를 식별할 수 있게 한다. 이는 서버와 연관된 엔티티가 사용자에게 커미션의 일부를 보상하게 한다. 보상은 캐시백(cashback), 하나 이상의 바우처들, 자선 기부, 또는 다른 재정적 인센티브의 형태일 수 있다. 일부 예들에서, 보상은 키보드 애플리케이션(220)을 제공하는 엔티티에 특정될 수 있다. 예를 들어, 키보드 애플리케이션(220)이 키보드 SDK(230) 및 키보드 인터셉터(240)를 제공하는 게임 애플리케이션인 경우, 보상은 게임 내 통화(currency)의 형태일 수 있다. 사용자가 판매자의 웹사이트에서 구매를 하는 것에 대한 일부 형태의 보상을 받을 수 있다는 것을 아는 것은 사용자가 판매자의 웹사이트를 먼저 방문하는 인센티브를 제공한다. 판매자와 연관된 로고 및 키보드 애플리케이션의 사용자 인터페이스에서 활성 거래를 나타내는 텍스트를 디스플레이하는 것은 사용자가 GUI 엘리먼트를 선택하고, 판매자의 웹사이트를 방문할 것을 추가로 장려한다. 예를 들어, 판매자의 로고 및 "최대 3.4% 캐시백"과 같은 텍스트를 디스플레이하는 것은, 사용자가 처음에 해당 판매자의 웹사이트를 방문할 계획을 하지 않았음에도 불구하고, 사용자를 해당 판매자에게로 향하게 할 수 있다.
추가의 예에서, 서버(150)와 키보드 애플리케이션(220) 및/또는 키보드 인터셉터(240) 사이의 인증된 통신을 허용하는 서버(150)에 의해 사용되는 인증 토큰은 디바이스 식별자를 포함한다. 이는 키보드 애플리케이션(220)이 결제를 위한 대가로 재화 및/또는 서비스를 제공하는 모바일 네트워크 운영자 또는 다른 엔티티에 의해 제공될 때 특히 유리하다. 이 경우, 구매에 대해 사용자에게 보상되는 커미션의 일부는 사용자에게 할인이나 그렇지 않으면 추후 결제의 할인으로서 제공될 수 있다. 예를 들어, 키보드 애플리케이션(220)은 모바일 네트워크 운영자와 연관된 모바일 네트워크 과금 애플리케이션일 수 있다. 이 예에서, 모바일 네트워크 과금 애플리케이션은 키보드 기능을 제공하는 SDK 및 전술한 키보드 인터셉터(240)를 포함한다. 이 예에서, 모바일 네트워크 과금 애플리케이션의 일부인 키보드 인터셉터(240)는 디바이스 식별자를 생성하고 이를 서버(150)로 포워딩한다. 그런 다음, 서버(150)는 서버(150)와 키보드 인터셉터(240) 사이의 인증된 통신을 허용하는 인증 토큰을 반환할 수 있다. 이 경우에, 인증 토큰은 디바이스 식별자를 포함한다. 디바이스 식별자는 : 모바일 디바이스의 IMEI 번호, 및 디바이스와 연관된 전화 번호 중 적어도 하나로 생성될 수 있다. 사용자가 차후에 판매자의 웹사이트에서 구매를 할 때, 해당 판매자는 네트워크 운영자에게 커미션을 포워딩할 것이다. 그런 다음 커미션의 일부가 예를 들어, 사용자의 다음 월별 데이터 요금제 지불의 돈으로서, 또는 사용자가 사용하는 가격 만큼 지불하는(pay as you go tariff) 방식의 카드(credit)로서 사용자에게 전달될 수 있다. 보다 일반적으로, 키보드 애플리케이션(220)이 사용자로부터의 지불에 대한 대가로 재화/서비스를 제공하는 제3자에 의해 제공될 때, 판매자는 커미션을 제3자에게 포워딩할 것이다. 이 커미션의 일부는 그런 다음 사용자에게 전달될 수 있다. 예를 들어, 제3자가 사용자에게 구독 서비스를 제공할 때, 사용자에게 전달되는 커미션 부분은 사용자의 다음 청구서에서 할인의 형태일 수 있다. 추가 예에서, 제3자가 재화 제공자(goods provider)인 경우, 사용자에게 전달되는 커미션 부분은 상기 재화의 다음 구매에 대한 할인을 위한 바우처(voucher)의 형태일 수 있다. 어느 경우든, 키보드 인터셉터(240)는 디바이스 식별자를 생성하여 그것을 서버(150)에 포워딩한다. 서버(150)는 이에 응답하여 서버(150)와 키보드 인터셉터(240) 사이의 인증된 통신을 허용하는 인증 토큰을 반환한다.
서버(150)는 사용자와 연관된 임의의 식별자들, 해당 사용자에 의해 이루어진 구매들의 레코드, 및 해당 사용자에 의해 획득된 보상들과 같은 그러한 정보를 저장할 수 있다.
전술한 바와 같이, 검색 쿼리는 복수의 상이한 레코드를 반환할 수 있는 것으로 고려된다. 이는, 예를 들어, 사용자에 의해 입력된 입력이 많은 매칭 레코드가 존재하는 일반적인 용어인 경우 발생할 수 있다. 예를 들어, 텍스트 "트레이너(trainer)"는 판매자 Nike®와 연관된 레코드 및 판매자 John Lewis®와 연관된 레코드에서 키워드로서 식별될 수 있다. 검색 쿼리가 복수의 상이한 레코드를 반환하는 경우, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 상의 복수의 GUI 엘리먼트를 개별 레코드 식별자와 연관시킬 수 있다. 그런 다음, 사용자는 키보드 인터셉터(240)가 선택된 URL로 향하게 하는 고유 추적 링크를 생성하게 할 복수의 GUI 엘리먼트들 중 하나를 선택할 수 있다.
각각의 레코드/판매자와 연관된 GUI 엘리먼트들은 하나 이상의 규칙에 따라 순서화될 수 있다. 예를 들어, GUI 엘리먼트들이 디스플레이되는 순서는 키보드 인터셉터(240)와 연관된 엔티티에 의해 결정될 수 있다. 하나의 경우에, GUI 엘리먼트들의 순서는 개별 판매자/브랜드와 연관된 지속 가능성 스코어에 대응할 수 있다. 예를 들어, 더 지속 가능한 것으로 결정된 브랜드들은 사용자가 이러한 브랜드들을 먼저 보도록 먼저 디스플레이될 수 있다. 이는 사용자가 이러한 브랜드와 연관된 GUI 엘리먼트를 선택할 가능성이 더 높아지게 할 수 있다.
추가 예에서, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 상에 아이콘이 디스플레이되게 할 수 있다. 아이콘은 키보드 인터셉터(240)가 현재 활성이고, 사용자가 입력을 제공하기 시작할 때 데이터를 검색하는 데 이용 가능하다는 것을 사용자에게 나타낼 수 있다. 하나의 예에서, 아이콘을 선택하는 것은 키보드 애플리케이션(220) 내에서 커스텀 애플리케이션을 론칭할 수 있다. 커스텀 애플리케이션의 사용자 인터페이스는 키보드 애플리케이션(220)의 사용자 인터페이스 위에 디스플레이될 수 있다. 대안으로, 커스텀 애플리케이션의 사용자 인터페이스는 키보드 애플리케이션(220)의 사용자 인터페이스를 대신할 수 있다. 커스텀 애플리케이션에 의해 제공되는 기능은 키보드 애플리케이션(220)의 일부로서 포함될 수 있다.
일 예에서, 검색 쿼리가 복수의 상이한 레코드를 반환할 때, 서버(150)는 대응하는 복수의 고유 레코드 ID를 생성할 것이고, 이들 각각은 키보드 인터셉터(240)로 반환된다. 일단 수신되면, 키보드 인터셉터(240)는 대응하는 복수의 GUI 엘리먼트를 디스플레이할 것이며, 각각의 GUI 엘리먼트는 서버(150)에 의해 생성된 개별 고유 레코드 ID와 연관된다. 일부 예들에서, 키보드 인터셉터(240)는 아이콘이 사용자 인터페이스에 디스플레이되게 하고, 이는 검색의 일부로서 얼마나 많은 결과들이 로케이팅되었는지를 나타내는 알림을 제공한다. 알림은 아이콘의 코너에 나타나는 숫자 형태일 수 있다. 이러한 방식으로, 사용자가 타이핑하고, 검색 쿼리가 변경됨에 따라, 숫자는 동적으로 변경될 수 있다. 아이콘은 전술한 GUI 엘리먼트를 대신하여, 키보드 인터셉터(240)의 알림 최소화 상태를 제공할 수 있다. 이 경우에, 관련 데이터가 검색에 로케이팅되었다는 표시는 GUI 엘리먼트로서 사용자에게 즉각적으로 보여지지 않을 것이지만, 예를 들어, 아이콘의 코너에 숫자, 예를 들어, "1"을 디스플레이함으로써, 아이콘은 데이터가 발견되었음을 나타낼 것이다. 사용자가 아이콘을 선택하면 GUI 엘리먼트가 디스플레이될 것이다. 이 알림 기능은 사용자에게 모든 인스턴스에서 GUI 엘리먼트를 디스플레이하지 않는 옵션을 제공하지만 여전히 데이터가 로케이팅되었음을 나타낸다.
데이터가 판매자들과 연관될 때, 커스텀 애플리케이션은 판매자들과 연관된 이용가능한 거래들 또는 다른 정보를 디스플레이할 수 있다. 이용 가능한 거래는 사용자가 어떠한 입력도 제공하지 않고 디스플레이될 수 있다. 이러한 방식으로, 사용자는 입력을 제공하기 전에 어떤 판매자들이 현재 인센티브를 제공하고 있는지를 결정할 수 있다. 대안으로 또는 추가적으로, 커스텀 애플리케이션에 디스플레이된 판매자들은 사용자가 타이핑을 계속함에 따라 동적으로 업데이트될 수 있다.
커스텀 애플리케이션은 그 자체가 텍스트 필드와 같은 편집가능한 GUI 엘리먼트를 사용자에게 제시할 수 있다. 이러한 배열에서, 사용자가 편집 가능한 GUI 엘리먼트에 타이핑하는 것은 커스텀 애플리케이션이 전술한 키보드 인터셉터(240)와 같이 기능하게 하여, 쿼리 검색 및 고유 추적 링크 생성이 모두 미니 앱에 의해 수행될 수 있다.
대안으로 또는 추가적으로, 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이된 아이콘은 선택될 때 설정 메뉴에 대한 액세스를 제공할 수 있다. 설정들은 사용자가 키보드 애플리케이션(220)에 관한 하나 이상의 설정을 조정할 수 있게 할 수 있다. 조정될 수 있는 예시적인 설정들은 키보드 애플리케이션(220) 외관의 사용자 인터페이스, 로케이팅된 데이터에 관한 어떤 정보가 키보드 애플리케이션(220)의 사용자 인터페이스 내에 디스플레이되어야 하는지, 및 어느 판매자들이 보여져야 하는지에 관한 선호도들을 포함한다.
도 5a 및 도 5b는 사용자가 키보드 애플리케이션에 입력을 제공하고, 고유 추적 링크가 생성되는 예를 도시한다. 도 5a는 일 실시예에 따른 모바일 디바이스(500) 상의 예시적인 디스플레이(510)를 도시한다. 모바일 디바이스는 전술한 키보드 기능을 제공하는 키보드 인터셉터 및 키보드 애플리케이션을 포함한다. 디스플레이(510)는 모바일 디바이스(500) 상에서 실행되는 키보드 애플리케이션(520)의 사용자 인터페이스를 도시한다. 키보드 애플리케이션(520)의 사용자 인터페이스는 사용자가 모바일 디바이스에 텍스트를 입력할 수 있게 하는 가상 QWERTY 키보드를 특징으로 한다. 도 5a에 표시된 예에서는, 현재 웹 브라우저 애플리케이션에 텍스트가 타이핑되고 있다. 키보드 애플리케이션(520)의 사용자 인터페이스는 아이콘(530)을 포함한다. 아이콘은 키보드 인터셉터가 현재 활성 상태임을 사용자에게 나타낸다. 아이콘(530)은 커스텀 애플리케이션과 관련하여 상기에서 논의된 아이콘으로서 기능할 수 있다. 웹 브라우저 애플리케이션의 어드레스 바(540)는 URL 텍스트 필드의 예이다. 사용자는 어드레스 바(540)에 "john"을 타이핑하였다. 그 결과, 키보드 인터셉터는 위에서 논의된 바와 같이 텍스트 "john"에 대한 검색 쿼리를 형성하였다.
도 5b는 사용자가 처음 타이핑을 시작한 후 얼마 후의 모바일 디바이스(500) 상의 디스플레이(510)를 도시한다. 사용자는 이제 어드레스 바(540)에 "johnlew"를 타이핑하였다. 그 결과, 모바일 디바이스(500) 상에 설치된 키보드 인터셉터는 위에서 논의된 바와 같이 텍스트 "johnlew"에 대한 검색 쿼리를 형성하였다. 이는 판매자 John Lewis®와 연관된 복수의 데이터를 포함하는 레코드의 로케이팅으로 귀결되었다. 이 경우에, 레코드 내의 데이터는 텍스트 "JOHN LEWIS"와 함께, 판매자 "John Lewis"와 연관된 로고, 판매자와 연관된 이용가능한 거래의 표시를 포함한다. 이 예에서 키보드 인터셉터에 의해 수신된 메시지에는 로고, 텍스트 및 사용 가능한 거래가 포함되어 있다. 그런 다음, 키보드 인터셉터는 키보드 애플리케이션(520)의 사용자 인터페이스 위에 로고(550), 텍스트 및 배너 내의 표시를 디스플레이하였다. 그런 다음, 사용자는 판매자의 웹사이트를 방문하기 위해 이용가능한 거래의 로고, 텍스트 및 표시 중 하나를 선택할 수 있다. 위에서 논의된 바와 같이, 선택은 키보드 애플리케이션이 사용자와 연관된 식별자 및 판매자와 연관된 웹사이트에 대한 URL를 포함하는 고유 추적 링크를 생성하게 한다.
도 5b에 도시된 예에서, 키보드 애플리케이션(520)의 사용자 인터페이스의 제안 바(suggestion bar) 내의 아이콘(530)은 하나의 판매자가 로케이팅되었음을 나타내는 알림을 디스플레이하고 있다. 아이콘(530)을 선택하는 것은 전술한 바와 같이 판매자에 관한 추가 정보를 디스플레이할 수 있는 커스텀 애플리케이션을 활성화할 수 있다.
전술한 예들에서, 키보드 애플리케이션(220)은 사용자의 모바일 디바이스에 다운로드되는 독립형 애플리케이션으로서 또는 모바일 네트워크 운영자와 연관된 애플리케이션으로서 그리고 네트워크 운영자에 의한 프로비저닝의 일부로서 사용자의 모바일 디바이스에 다운로드되는 애플리케이션으로서 제공된다. 키보드 애플리케이션(220)은 피어-투-피어(peer-to-peer) 메시징 및 게임을 위한 애플리케이션들을 포함하는 임의의 제3자 애플리케이션과 연관될 수 있다는 것이 이해되어야 한다. 추가적으로 또는 대안으로, 키보드 인터셉터를 포함하는 키보드 애플리케이션(220)의 기능은 제3자 애플리케이션에 코딩되거나 다른 방식으로 내장될 수 있다.
추가 예에서, 서버(150)에 의해 소싱된 데이터(예를 들어, 거래, 쿠폰 코드, 설문 조사, 미디어)는 제3자 엔티티에 의해 특정되거나 제한될 수 있다. 예를 들어, 키보드 애플리케이션(220)이 제3자 엔티티에 의해 제공되는 제3자 애플리케이션일 때, 제3자 엔티티는 특정 거래만이 사용자에게 이용 가능하게 되어야 한다고 결정할 수 있다. 하나의 경우에, 제3자 엔티티는 사용자가 잠재적으로 경쟁자 판매자를 사용하는 것을 방지하기 위해 사용자가 자신과 연관된 거래들만을 보고자 하는 판매자이다.
키보드 인터셉터(140)가 검색 요청과 연관된 데이터를 로케이팅하기 위해 서버(150)와 통신하는 경우, 제3자 엔티티와 연관된 레코드 식별자는 서버(150)가 제3자 엔티티와 연관된 거래만을 검색하도록 검색 요청에 포함될 수 있다. 키보드 애플리케이션(220)이 로컬 스토리지(280)에서 데이터를 검색하는 경우에 유사한 프로세스가 발생할 수 있다.
도 6은 상술된 실시예들에 따른 모바일 디바이스들(110, 200)과 같은 모바일 디바이스 및 서버(150)에 의해 수행되는 단계들을 넓게 제시한다. 블록(610)에서, 방법(600)은 모바일 디바이스(110, 200) 상의 키보드 애플리케이션(120, 220)으로 사용자에 의한 제1 입력을 수신하는 단계를 수반한다. 다른 예들에서, 제1 입력은 사용자에 의해 제공되지 않을 수 있고, 다른 수단에 의해 키보드 애플리케이션(120, 220)에 의해 수신될 수 있다. 키보드 애플리케이션(120, 220)은 키보드 SDK(130, 230) 및 키보드 인터셉터(140, 240)를 위한 애플리케이션 컨테이너이다. 키보드 SDK(130, 230)는 키보드 애플리케이션(120, 220)에 키보드 기능을 제공한다. 키보드 기능은 모바일 디바이스(110, 200)에 입력을 제공하는 적어도 하나의 방법을 포함한다. 키보드 애플리케이션(120, 220)은 가상 QWERTY 키보드와 같은 가상 키보드를 모바일 디바이스(110, 200)의 디스플레이 상에 디스플레이하도록 구성될 수 있어서, 사용자가 모바일 디바이스(110, 200)에 텍스트를 입력할 수 있다. 대안으로 또는 추가적으로, 키보드 SDK(130, 230)는 음성-텍스트 절차를 통한 입력을 허용할 수 있고, 이에 의해 키보드 SDK는 사용자가 모바일 디바이스(110, 200)에 말할 때 오디오를 레코딩하는 기능을 제공한다. 추가 예에서, 키보드 SDK(130, 230)는 예를 들어, 스타일러스 또는 손가락을 사용하여 모바일 디바이스(110, 200)의 디스플레이 상에 드로잉함으로써 사용자가 입력을 제공할 수 있게 하는 기능을 제공할 수 있다. 어쨌든, 키보드 인터셉터(140, 240)는 키보드 애플리케이션(120, 220)으로부터 제1 입력을 수신할 수 있다.
블록(620)에서, 방법(600)은 제1 입력에 기초하여 검색 쿼리를 생성하는 단계를 수반한다. 검색 쿼리는 제1 입력을 포함하고, 예를 들어, 사용자는 키보드 애플리케이션(120, 220)을 통해 텍스트 "amazon"을 타이핑할 수 있다. 이 예에서, 키보드 인터셉터(140, 240)는 텍스트 "amazon"이 타이핑되었다고 결정하고 텍스트 "amazon"에 기초하여 검색 쿼리를 형성한다.
블록(630)에서, 방법(600)은 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계를 수반한다. 단계 S310과 관련하여 위에서 논의된 바와 같이, 데이터를 로케이팅하는 단계는 데이터베이스(160)와 통신하는 서버(150)에 API 요청(M310)을 행함으로써 수행될 수 있다. 데이터베이스(160) 상에 저장된 데이터는 레코드와 연관되고, 레코드는 고유 레코드 ID를 포함한다. 상기 데이터는 브랜드와 관련되고, 임의의 주어진 브랜드에 대해, 데이터는 데이터베이스(160)의 필드에 저장될 수 있다. 필드는 하나 이상의 URL, 쿠폰 코드, 설문 조사 질문, 다른 미디어, 및 메타데이터 예컨대, 브랜드의 오퍼, 키워드, 카테고리 및 설명 등을 포함할 수 있다. 그런 다음, 데이터는 단계(S330)에 도시된 바와 같이, 고유 레코드 식별자를 포함하는 메시지(M330)에서 키보드 인터셉터(140, 240)로 반환된다. 추가 예에서, 단계(S440)와 관련하여 논의된 바와 같이, 검색 쿼리는 검색 쿼리와 관련된 데이터에 대해 모바일 디바이스(110, 200)의 스토리지(280)의 검색을 수행함으로써 데이터를 로케이팅하는 메시지(M440)를 통해 키보드 애플리케이션(120, 220)으로 전달될 수 있다. 그런 다음, 단계(S450)에 도시된 바와 같이, 로케이팅된 데이터는 메시지(M450)를 통해 키보드 인터셉터(140, 240)로 반환된다. 또 다른 예에서, 검색 쿼리는 API 요청을 서버(150)에 포워딩함으로써 데이터를 로케이팅하는 키보드 애플리케이션(120, 220)에 전달될 수 있다. 또 다른 추가 예에서, 데이터는 2 단계 프로세스로 로케이팅되고 이에 의해 검색 쿼리가 초기에 키보드 애플리케이션(120, 220)으로 전달되고 모바일 디바이스(110, 200)의 스토리지(280)의 검색이 검색 쿼리에 대한 데이터에 대해 수행된다. 관련 데이터가 발견되면, 그것은 키보드 인터셉터(140, 240)로 반환된다. 관련 데이터가 스토리지(280)에서 발견되지 않으면, 검색 쿼리는 API 요청을 통해 서버에 발송될 수 있고, 서버는 그런 다음 데이터베이스(160)의 검색을 수행한다.
블록(640)에서, 방법(600)은, 단계(S340 및 S460)에서와 같이, 키보드 애플리케이션(120, 220)의 사용자 인터페이스 내에서, GUI 엘리먼트를 메시지와 연관시키는 단계를 수반한다. GUI 엘리먼트는 로케이팅된 데이터와 연관된 텍스트를 포함할 수 있다. 예를 들어, 발견된 데이터가 텍스트 "Amazon"을 포함하는 경우, GUI 엘리먼트는 키보드 애플리케이션(120, 220)의 사용자 인터페이스 내에 텍스트 "Amazon"을 디스플레이할 수 있다. 일 예에서, 데이터를 수신한 것에 응답하여, 키보드 애플리케이션(120, 220)의 사용자 인터페이스는 데이터가 로케이팅되었음을 나타내는 아이콘을 추가로 디스플레이할 수 있다. 사용자에 의한 아이콘의 선택에 응답하여, GUI 엘리먼트가 디스플레이될 수 있다. GUI 엘리먼트는 입력 버튼과 같은 키보드 애플리케이션(120, 220)의 사용자 인터페이스 내의 기존의 문자 키일 수 있다.
블록(650)에서, 방법(600)은 GUI 엘리먼트의 선택에 대응하는 사용자에 의한 제2 입력을 수신하는 단계를 수반한다. 선택은 사용자가 GUI 엘리먼트를 현재 디스플레이하고 있는 모바일 디바이스(110, 200)의 디스플레이의 영역을 물리적으로 누름으로써 달성될 수 있다.
블록(660)에서, 방법(600)은 제2 입력을 수신한 것에 응답하여, GUI 엘리먼트의 선택과 연관된 식별자 및 URL을 포함하는 고유 추적 링크를 생성하는 단계를 수반한다. URL은 로케이팅된 데이터와 연관된 웹 사이트에 대한 것이다. 일 예에서, 고유 추적 링크는 GUI 엘리먼트의 선택과 연관된 식별자로 인코딩된 URL을 포함한다. 인코딩은 GUI 엘리먼트의 선택과 연관된 식별자와 연관된 스트링을 URL에 첨부함으로써 달성될 수 있다. 고유 추적 링크는 단계 S350에 도시된 바와 같이 서버(150)에 추가 API 요청(M350)을 행함으로써, 또는 단계 S470에 도시된 바와 같이 요청(M470)을 키보드 애플리케이션(120, 220)에 전달함으로써 생성될 수 있다. API 호출 (M350)/요청 (M470)은 고유 레코드 ID를 포함하여 서버(150) 또는 키보드 애플리케이션(120, 220)이 데이터가 로케이팅되었던 레코드를 로케이팅할 수 있다. 서버가 고유 추적 링크를 생성하는 경우에, 서버는 로케이팅된 데이터와 연관된 리다이렉트 URL을 로케이팅하기 위해단계(S360)에 도시된 바와 같이, 데이터베이스에 추가 요청(M360)을 발송한다. 한편, 키보드 애플리케이션이 고유 추적 링크를 생성할 때, 키보드 애플리케이션(120, 220)은 리다이렉트 URL을 로케이팅하기 위해, 단계 S480에 도시된 바와 같이, 추가 요청(M480)을 로컬 스토리지에 발송한다. 대안으로, 키보드 애플리케이션은 고유 추적 링크의 생성을 요청하는 그 자신의 API 요청을 서버에 발송할 수 있다.
블록(670)에서, 방법(600)은 고유 추적 링크를 모바일 디바이스(110, 200) 상에서 실행되는 웹 브라우저 애플리케이션(250)에 전달하는 단계를 수반하며, 이에 의해 웹사이트에 액세스한다. 고유 추적 링크가 생성될 때, 그것은 디바이스(110, 200) 상의 웹 브라우저 애플리케이션(250)으로 전달된다. 일 예에서, 키보드 애플리케이션(220)은 웹 브라우저 애플리케이션(250)에서 새로운 탭이 열리게 할 수 있고, 고유 추적 링크는 새로운 탭으로 전달된다. 일 예에서, 고유 추적 링크는 웹 브라우저 확장(255)을 통해 웹 브라우저 애플리케이션(250)으로 전달될 수 있다. 이 경우, 웹 브라우저 확장(255)은 웹 브라우저 애플리케이션(250) 내의 새로운 탭을 열고 고유 추적 링크를 새로운 탭으로 전달할 수 있다.
사용자가 현재 웹 브라우저 애플리케이션(250) 내에 있지 않은 경우, 모바일 디바이스(110, 200)의 디폴트 웹 브라우저 애플리케이션이 론칭되고 고유 추적 링크를 실행하여 웹 사이트로 내비게이팅할 수 있다. 웹 브라우저 애플리케이션(250)의 외부로부터 디폴트 브라우저를 론칭하는 것은 웹 사이트 내에서의 추적을 허용하면서, 방법(600)이 웹 사이트에 대한 바로가기(shortcut)를 제공할 수 있게 한다. 고유 추적 링크는 단계 S370에 도시된 바와 같이, 메시지(M370)를 통해 서버(150)로부터 키보드 인터셉터(140, 240)로 발송될 수 있다. 대안으로, 단계 S490에 도시된 바와 같이, 고유 추적 링크는 메시지(M490)를 통해 키보드 애플리케이션(120, 220)으로부터 키보드 인터셉터(140, 240)로 발송될 수 있다.
블록(680)에서, 방법(600)은 웹 사이트에 액세스하는 동안 웹 브라우저 애플리케이션(250)에 의해, GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장하는 단계를 수반한다.
방법(600)은 일부 모바일 웹 브라우저들 상에서 이용 가능한 웹 브라우저 확장들의 결여를 극복함으로써 모바일 디바이스 상에서 풍부한 개인 브라우징 경험을 제공한다. 방법(600)은 키보드 인터셉터를 이용하는 웹 브라우저 확장에 대한 대안을 제공함으로써 이를 수행한다. 키보드 인터셉터의 동작은 사용자 입력에 기초하여 URL 및 URL과 연관된 키워드에 대한 자동 검색 옵션을 제공하고, 웹 사이트에서 사용자의 활동이 추적될 수 있게 하는 고유 추적 링크를 자동으로 생성함으로써 표준 키보드 애플리케이션의 기능을 향상시킨다. 위에서 논의된 바와 같이, 이것은 도메인 네임이 판매자에 대응할 때 특히 유용하다.
또 다른 예에서, 고유 추적 링크는 GUI 엘리먼트의 선택과 연관된 식별자를 포함하지 않을 수 있다. 이 경우, 키보드 인터셉터의 동작은 후속 추적 없이 검색 기능을 제공한다.
또 다른 예에서, 통신 흐름(300)에서 단계 S360에서 생성된 고유 추적 링크는 랜덤하게 생성된 클릭 ID, 브랜드의 식별자, 및 데이터베이스(160)에 로케이팅된 데이터와 연관된 웹사이트에 대한 URL 대신에 서버(150)와 또한 연관된 엔티티와 연관된 도메인에 대한 URL을 포함하는 리다이렉트 링크(redirect link)일 수 있다. 도메인은 서버(150)에 결합된 중개 서버(미도시)에 의해 호스팅되거나 또는 이와 통신할 수 있다. 브랜드의 식별자는 단계 S320에서 로케이팅된 데이터와 연관된 레코드 ID일 수 있다. 이 예에서, 웹 브라우저 애플리케이션(250)에서 리다이렉트 링크를 론칭할 때, 사용자는 중개 서버로 향하게 되고, 중개 서버는 사용자를 향하게 할 적절한 웹사이트를 결정하기 위해 서버(150)와 통신한다. 그런 다음, 중개 서버는 적절한 웹사이트에 대한 URL 및 이전에 생성된 클릭 ID를 포함하는 추가적인 고유 추적 링크를 생성한다. 그런 다음, 사용자는 적절한 웹사이트로 향하게 되고, 임의의 사용자 활동의 추적이 전술한 바와 같이 수행될 수 있다.
이 예의 수정예에서, 단계(S360)에서 생성된 리다이렉트 링크는 클릭 ID를 포함하지 않을 수 있고, 대신에 중개 서버 상에 호스팅되는 도메인의 URL 및 브랜드의 식별자(레코드 ID 등)만을 포함할 수 있다. 이 예에서, 리다이렉트 링크는 클릭 ID를 포함하지 않기 때문에 제네릭 링크(generic link)라고 지칭될 수 있다. 사용자는 중개 서버에 대한 사용자를 식별하는 식별자를 그들의 모바일 디바이스(200) 상에 저장할 수 있다. 일 예에서, 식별자는 웹 브라우저 애플리케이션(250)에 저장되고 사용자가 이전에 중개 서버를 방문했을 때 다운로드되는 쿠키이다. 다른 예들에서, 이 식별자는 다른 예들 중에서도, 로컬 스토리지(280)에 저장되고 키보드 인터셉터(240) 및/또는 키보드 애플리케이션(220)의 초기 구성에서 생성될 수 있다. 브라우저가 도메인으로 내비게이팅할 때, 중개 서버는 식별자로부터 사용자를 식별하고, 서버(150)와 통신하여 브랜드와 연관된 웹사이트에 대한 URL 및 클릭 ID를 포함하는 고유 추적 링크를 생성한다.
피어-투-피어 통신 구현예
본 개시의 추가 예시적인 구현예에서, 링크는 제1 사용자의 모바일 디바이스 상에서 동작하는 키보드 인터셉터에 의해 생성되고 통신 애플리케이션을 통해 한 명 이상의 제2 사용자들에게 발송될 수 있다.
예를 들어, 위에서 설명된 방법(600)의 블록(680)을 참조하면, 제1 사용자가 현재 메시징 애플리케이션에 있을 때, 생성된 고유 추적 링크는 메시징 애플리케이션의 텍스트 필드에 붙여질 수 있다. 그런 다음, 제1 사용자는 제2 사용자에게 메시지를 발송할 수 있고, 메시지는 고유 추적 링크를 포함한다. 그런 다음, 제2 사용자는 고유 추적 링크를 선택할 수 있다. 그런 다음, 제2 사용자의 임의의 결과적인 활동은 제1 사용자에 귀착될 수 있다. 이것은 고유 추적 링크가 판매자와 연관될 때 유용하다. 판매자의 웹 사이트에서 제2 사용자에 의해 행해진 임의의 구매는 제1 사용자에게 귀착된다. 제1 사용자는 제2 사용자에 의한 구매에 기초하여 보상을 수신할 수 있다.
일반적으로, 제1 사용자의 디바이스 상에서 동작하는 키보드 인터셉터(240)는 제1 사용자로부터 한 명 이상의 제2 사용자들로의 통신에 링크의 삽입을 허용하도록 구성될 수 있다. 본 개시의 이하의 구절들에서, 제1 사용자는 발신자(sender)로 지칭될 것이고, 제2 사용자(들)는 수신자(recipient)(들)로 지칭될 것이다. 발신자의 모바일 디바이스(200)는 키보드 인터셉터(240)를 포함한다.
수신자(들)는 위에서 논의된 중개 서버를 통해 서버(150)와 연관된 엔티티에 대해 식별가능하다. 예를 들어, 수신자(들)는 그들의 모바일 디바이스(200) 상에 설치된 키보드 인터셉터(240)를 가질 수 있고, 그들의 키보드 인터셉터(240)의 액션을 통해 중개 서버를 이전에 방문했을 수 있다. "방문(visited)"함으로써, 링크가 키보드 인터셉터(240)를 통해 이전에 액세스되어, 키보드 인터셉터(240)가 예를 들어, 맞춤형(bespoke) API를 통해 중개 서버에 메시지를 발신하게 하고, 중개 서버가 중개 서버에 대한 수신자를 식별하는 데 사용하기 위해 수신자의 디바이스에 쿠키를 다운로드하게 한다는 것이 이해되어야 한다. 예를 들어, 수신자는 특히 단일 사용자 구현예가 중개 서버의 사용을 수반하는 경우에 대해, 전술한 "단일 사용자 구현예"에 따라 키보드 인터셉터(240)를 활용하였던 사용자일 수 있다. 이러한 구현예들에서, 중개 서버에 대응하는 쿠키는 수신자의 웹 브라우저 애플리케이션에 다운로드되었을 수 있다. 쿠키에 대한 대안으로서, 맞춤형 API는 고유 추적 링크를 생성할 때(단계 S360, S370) 고유 레코드 ID와 연관하여 데이터베이스(160)에 저장된 사용자에 대한 식별자를 중개 서버가 발신하게 하고 웹 브라우저 애플리케이션이 저장하게 할 수 있다.
추가적인 대안으로서, 또는 추가적으로, 수신자(들)는 서버(150)와 또한 연관된 엔티티와 연관된 SDK를 포함하는 그들의 모바일 디바이스(200) 상에 설치된 애플리케이션을 가질 수 있다. 중개 서버에 대한 수신자를 식별하는 식별자가 애플리케이션의 초기 구성의 일부로서 수신자의 모바일 디바이스(200) 상에 생성 및 저장되었을 수 있다.
이러한 예시적인 구현예들 중 임의의 것에서, 결과는 이제 설명될 바와 같이, 수신자가 발신자로부터 수신하는 링크에 액세스할 때, 식별자(쿠키 또는 비-쿠키)가 중개 서버에 대한 수신자를 식별하는 데 사용하기 위해 로컬에 저장된다는 것이다.
발신자의 모바일 디바이스(200) 상의 키보드 인터셉터(240)는 먼저 발신자가 현재 통신 애플리케이션에 입력을 제공하고 있다고 결정할 수 있다. 통신 애플리케이션은 한 명 이상의 수신자들과 통신하기 위해 발신자에 의해 사용될 수 있는 임의의 애플리케이션이다. 예들은 텍스트 메시징 애플리케이션들, 이메일 애플리케이션들, 메신저 애플리케이션들, 예컨대 Facebook® Messenger, WhatsApp®, Snapchat®, 소셜 미디어 애플리케이션들, 예컨대 Facebook®, Instagram®, YouTube®, Twitter® 및 LinkedIn을 포함하지만, 이에 제한되지 않는다. 통신 애플리케이션은, 예를 들어, 제1 사용자가 웹 기반 메신저 서비스 또는 웹 사이트 상의 포스팅을 사용하여 한 명 이상의 수신자들과 통신하고 있는 웹 브라우저 애플리케이션일 수 있다. 통신 유형들은 텍스트 메시지들, 이메일들, 메신저 애플리케이션 메시지들, 소셜 미디어 포스트들, 웹사이트 포스팅들, YouTube® 설명 포스팅들 및 브라우저-기반 통신들을 포함하지만, 이에 제한되지 않는다.
발신자가 현재 통신 애플리케이션에 입력을 제공하고 있다고 결정하기 위해, 키보드 인터셉터(240)는 현재 애플리케이션 유형을 검출하고 및/또는 발신자가 통신과 연관된 필드에 입력을 제공하고 있다고 결정할 수 있으며, 이는 필드가 URL, 브라우저, 또는 검색 필드 중 하나가 아니라고 결정하는 것을 수반할 수 있다.
발신자가 통신 애플리케이션에 입력을 제공하고 있다고 결정되면, 단계 S310 내지 S350 또는 S430 내지 S470은 도 3 및 4와 관련하여 전술한 바와 같이 수행될 수 있다. 그러나, 이 추가 실시예에서, 단계 S360(또는 단계 S480)에서, 앞서 논의된 바와 같이, 서버(150)에 결합된 중개 서버에 의해 호스팅되는 도메인에 대한 URL, 및 레코드 식별자와 같은 브랜드의 식별자를 포함하는 제네릭 링크(generic link)가 생성된다. 제네릭 링크는 데이터베이스(160) 내의 브랜드와 연관된 웹사이트 대신에, 서버(150)와 또한 연관된 엔티티와 연관된 도메인으로 향하게 된다. 제네릭 링크는, 통신 흐름들(300 및 400)과 관련하여 위에서 설명된 바와 같이, 특정 구현예에 따라, 서버(150) 또는 키보드 애플리케이션(220)에 의해 생성될 수 있다.
단계 S370 및 S490에서, 제네릭 링크는 제네릭 링크를 통신에 삽입하는 발신자의 키보드 인터셉터(240)로 전달된다. 발신자는 처음에 제네릭 링크를 예를 들어, 붙여넣기 항목(paste item)으로서 제공받을 수 있으므로, 발신자는 링크를 다수의 통신에 쉽게 삽입할 수 있다. 대안으로, 또는 추가하여, 키보드 인터셉터(240)는 현재 통신에 링크를 자동으로 삽입할 수 있다. 그런 다음, 발신자는 제네릭 링크를 포함하는 통신을 한 명 이상의 수신자들에게 발송할 수 있다.
통신의 수신자는 제네릭 링크를 클릭할 수 있으며, 이는 수신자의 모바일 디바이스(200) 상에 설치된 디폴트 웹 브라우저 애플리케이션을 론칭하고, 수신자를 중개 서버 상의 도메인으로 향하게 한다. 키보드 인터셉터(240)가 수신자의 모바일 디바이스(200) 상에 설치되고(즉, 모바일 디바이스(200) 상에 설치된 키보드 애플리케이션(240) 내에 포함됨), 및/또는 수신자가 이전에 도메인을 방문한 경우, 수신자는 위에서 논의된 바와 같이 식별자를 통해 중개 서버에 대해 식별가능할 것이다. 이 식별자는 수신자와 중개 서버 사이의 이전 상호 작용을 통해 수신자의 웹 브라우저 애플리케이션에 이전에 다운로드된 쿠키, 또는 수신자의 모바일 디바이스(200)에 저장되고, 중개 서버에 액세스 가능한 일부 다른 식별자일 수 있다. 중개 서버는 서버(150)에 의해 수신자에게 할당된 사용자 아이덴티티에 대한 액세스를 가질 수 있다. 따라서, 도메인과 연관된 엔티티는 식별자의 사용자 아이덴티티에 의해 수신자를 식별할 수 있다.
중개 서버는 대안으로 이하에서 리다이렉트 링크(redirect link)로 지칭되는 추가 링크를 통해 수신자를 브랜드와 연관된 웹사이트로 향하게 할 수 있다. 이것은 중개 서버에 의해 자동으로 수행될 수 있어서 수신자가 심지어 그들이 중개 서버로 리다이렉트되었음을 인식하지 못할 수 있다. 대안으로, 도메인은 브랜드와 연관된 웹사이트의 세부 사항을 제공하는 웹페이지를 포함할 수 있다. 웹페이지는 수신자에게 상호작용 GUI 엘리먼트를 제공할 수 있으며, 브랜드와 연관된 웹사이트로 향하게 하기 위해 수신자와 상호작용할 수 있다.
사용자가 GUI 엘리먼트를 누르면, 중개 서버는 추가 링크를 생성한다. 추가 링크는 브랜드와 연관된 웹사이트의 URL 및 서버(150)의 식별자를 포함하여, 브랜드와 연관된 웹사이트로 리다이렉트된 후에, 수신자에 의해 수행된 임의의 액션들이 서버(150)에 의해 귀착될 수 있다. 따라서, 웹사이트 상의 수신자의 액션, 예를 들어, 구매에 의해 획득되는 임의의 커미션은 서버(150)와 연관된 엔티티에 의해 로깅될 수 있다.
중개 서버는 브랜드와 연관된 웹사이트에 대한 URL, 랜덤하게 생성된 클릭 ID 및 서버의 식별자를 포함하는 고유 추적 링크를 생성하기 위해 서버(150)와 통신할 수 있다. 고유 추적 링크는 그런 다음 전술한 바와 같이 수신자의 사용자 아이덴티티와 관련하여 서버(150)에 의해 저장될 수 있다. 고유 추적 링크에 클릭 ID를 포함하면 수신자의 임의의 액션이 추적되는 것을 허용한다. 이 경우 수신자는 웹 사이트에서 수행된 임의의 액션에 의해 얻은 커미션을 받을 수 있다.
한편, 수신자가 중개 서버에 대해 식별가능하지 않은 경우, 예를 들어, 수신자가 그들의 모바일 디바이스 상에 설치된 키보드 인터셉터(240)를 갖지 않는 경우, 도메인은 또한 수신자를 브랜드와 연관된 웹사이트의 URL 및 서버(150)의 식별자를 포함하는 추가 링크를 통해 브랜드와 연관된 웹사이트로 향하게 한다. 차이점은 이 수신자가 식별가능하지 않고, 그 결과 수신자에 의해 수행되는 액션에 의해 얻은 임의의 커미션은 단순히 서버(150)와 연관된 엔티티와 연관된다는 것이다.
일부 예에서, 발신자에 의한 제1 입력에 기초한 검색 쿼리는 데이터베이스(160) 내의 복수의 레코드와 매칭될 수 있다. 예를 들어, 발신자가 "Nike"를 통신에 타이핑하면, 서버(150)는 브랜드 "Nike" 및 Nike® 제품을 판매하는 판매자 둘 모두에 대한 레코드를 식별할 수 있다. 수신자가 수신된 제네릭 링크를 클릭할 때, 수신자의 모바일 디바이스(200)(존재하는 경우) 상의 키보드 인터셉터(240) 및 중개 서버 중 적어도 하나는 수신자의 현재 지리적 로케이션을 검출할 수 있다. 결정된 지리적 로케이션에 기초하여, 서버(150)와 통신하는 중개 서버는 데이터베이스(160)에서 식별된 복수의 결과로부터 최상의 커미션율을 식별하고, 최상의 식별된 커미션을 제공하는 결과와 연관된 웹사이트의 URL을 포함하는 링크를 생성할 수 있다.
추가 예에서, 발신자에 의해 생성된 리다이렉트 링크는 랜덤하게 생성된 클릭 ID를 포함한다. 클릭 ID는 위에서 논의된 바와 같이 발신자의 사용자 아이덴티티와 관련하여 생성되고 저장될 수 있다. 리다이렉트 링크가 수신자에게 발송되고, 수신자가 리다이렉트 링크를 클릭할 때, 수신자는 또한 서버(150)와 연관된 엔티티와 연관된 도메인으로 향하게 된다. 이 경우, 중개 서버는 서버(150)와 통신하여 추가로 랜덤하게 생성된 클릭 ID를 포함하는 고유 추적 링크를 생성한다. 클릭 ID와 추가 클릭 ID는 서로 연관되어 저장될 수 있다. 그런 다음 중개 서버는 고유 추적 링크를 통해 수신자를 웹 사이트로 리다이렉트한다. 이 경우, 웹사이트 상에서 수신자에 의해 수행되는 임의의 액션은 클릭 ID와 추가 클릭 ID 사이의 연관성을 통해 서버(150)에 의한 발신자 및 수신자 둘 모두에 귀착될 수 있다. 예를 들어, 수신자(들)는 그들의 모바일 디바이스(200) 상에 설치된 키보드 인터셉터(240)를 가질 수 있고, 전술한 바와 같이 그들의 키보드 인터셉터(240)의 액션을 통해 이전에 중개 서버를 방문했을 수 있다. 이 경우, 쿠키는 위에서 논의된 바와 같이 수신자의 웹 브라우저 애플리케이션에 다운로드되었을 수 있다. 대안으로 또는 추가적으로, 수신자(들)는 서버(150)와 또한 연관된 엔티티와 연관된 SDK를 포함하는 그들의 모바일 디바이스(200) 상에 설치된 애플리케이션을 가질 수 있다. 식별자는 애플리케이션의 초기 구성의 일부로서 수신자의 모바일 디바이스(200) 상에 생성 및 저장되었을 수 있다. 임의의 경우에, 식별자는 중개 서버에 대한 수신자를 식별한다.
제1 사용자로부터 한 명 이상의 제2 사용자들로의 통신으로의 링크의 삽입을 수반하는 전술한 예들은 다음의 특징들을 구현하는 것으로 간주될 수 있다:
첫째, 제1 사용자의 모바일 디바이스에 의해 수행되는 방법으로서, 상기 방법은 상기 제1 사용자와 연관된 모바일 디바이스 상에서 동작하는 키보드 애플리케이션에 의해, 제1 입력을 수신하는 단계; 상기 키보드 애플리케이션에 의해, 상기 제1 입력에 기초하여 검색 쿼리를 생성하는 단계; 상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계 - 상기 데이터는 데이터베이스에 저장된 레코드(record)와 연관되고, 상기 레코드는 레코드 식별자를 포함함 - ; 상기 키보드 애플리케이션의 사용자 인터페이스 내에서, 상기 제1 모바일 디바이스의 그래픽 사용자 인터페이스, GUI, 엘리먼트를 상기 레코드 식별자와 연관시키는 단계; 상기 키보드 애플리케이션에 의해, 상기 제1 사용자에 의한 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계; 상기 제2 입력을 수신한 것에 응답하여, URL 및 상기 레코드 식별자를 포함하는 링크를 생성하는 단계 - 상기 URL은 중개 서버에 의해 호스팅되는 도메인에 대한 것임 - ; 상기 링크를 포함하는 메시지를 생성하는 단계; 및 상기 모바일 디바이스 상에서 동작하는 통신 애플리케이션에 의해, 상기 메시지를 제2 사용자에게 발송하는 단계를 포함한다.
둘째, 제1 사용자의 모바일 디바이스에 의해 수행되는 방법과 협업하는 제2 사용자의 모바일 디바이스에 의해 수행되는 방법으로서, 상기 방법은: 상기 제2 사용자의 모바일 디바이스 상에서 동작하는 통신 애플리케이션에 의해, 중개 서버에 의해 호스팅되는 도메인과 연관된 URL 및 데이터베이스에 저장된 레코드를 식별하는 레코드 식별자를 포함하는 링크를 포함하는 메시지를 수신하는 단계 - 상기 메시지는 제1 사용자의 모바일 디바이스로부터 발원(originate)함 -; 상기 제2 사용자에 의해, 상기 메시지 내의 상기 링크의 선택에 대응하는 입력을 수신하는 단계; 상기 링크를 상기 제2 사용자의 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달하는 단계 - 이에 의해, 상기 중개 서버에 의해 호스팅되는 상기 도메인에 액세스함 -; 상기 레코드 식별자와 연관된 웹사이트에 대한 URL 및 상기 링크의 선택과 연관된 식별자를 포함하는 고유 추적 링크를 생성하는 단계; 상기 중개 서버에 의해, 상기 제2 사용자를 상기 웹사이트로 리다이렉트하는 단계(redirecting); 및 상기 웹 사이트에 액세스하는 동안 상기 제2 사용자의 모바일 디바이스 상에 상기 웹 브라우저 애플리케이션에 의해, 상기 링크의 선택과 연관된 쿠키를 저장하는 단계를 포함한다.
위에서 언급된 바와 같이, 통신 애플리케이션은 Facebook® Messenger, Instagram®, WhatsApp®, Snapchat®, Facebook®, YouTube®, Twitter®, LinkedIn, 및 웹 기반 메신저 서비스, 및 제1 사용자에 의한 포스팅을 허용하는 웹사이트 중 하나를 실행하는 웹 브라우저 애플리케이션 중 하나일 수 있다. 데이터를 로케이팅하는 단계는 애플리케이션 프로그래밍 인터페이스, API, 호출을 서버로 포워딩하는 것을 포함할 수 있다. 링크를 생성하는 단계는 링크를 요청하는 서버에 추가 API 호출을 포워딩하는 단계를 포함할 수 있고, 추가 API 호출은 레코드 식별자를 포함한다. 대안으로, 데이터를 로케이팅하는 단계는 제1 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함할 수 있다. 제2 사용자의 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 링크를 전달한 것에 응답하여, 중개 서버는 중개 서버에 대한 제2 사용자를 식별하는 식별자가 제2 사용자의 모바일 디바이스 상에 존재한다고 결정할 수 있다. 고유 추적 링크를 생성하는 단계 및 제2 사용자를 웹사이트로 리다이렉트하는 단계는 중개 서버에 의해 자동으로 수행될 수 있다. 대안으로, 중개 서버에 의해 호스팅되는 도메인은 추가 GUI 엘리먼트를 포함하는 웹페이지를 디스플레이할 수 있고, 고유 추적 링크를 생성하는 단계는 제2 사용자에 의해 추가 GUI 엘리먼트의 선택을 수신한 것에 응답한다. 링크의 선택과 관련된 식별자는 랜덤하게 생성될 수 있다. 데이터는 판매자 데이터일 수 있고, 레코드 식별자와 연관된 웹사이트에 대한 URL은 판매자와 연관된 웹사이트에 대한 리다이렉트 URL일 수 있다. 판매자 데이터는 : 판매자와 연관된 로고; 및 판매자와 연관된 활성 거래를 더 포함할 수 있고, GUI 엘리먼트를 레코드 식별자와 연관시키는 단계는 판매자와 연관된 로고 및 활성 거래를 표시하는 텍스트를 디스플레이하는 단계를 포함할 수 있다.
중개 서버에 대한 제2 사용자를 식별하는 식별자는 도메인에 대한 이전 방문에서 웹 브라우저 애플리케이션에 의해 저장된 쿠키 또는 다른 식별자일 수 있다.
또 다른 실시예에서, 한 명 이상의 수신자들에 대한 메시지에 삽입되도록 발신자에 의해 생성된 링크는 전술한 바와 같이 생성된 고유 추적 링크일 수 있다. 고유 추적 링크는 로케이팅된 데이터와 연관된 웹사이트에 대한 URL 및 랜덤하게 생성된 클릭 ID와 같은, 발신자의 모바일 디바이스 상의 GUI 엘리먼트의 선택과 연관된 식별자를 포함한다. 이 실시예에서, 일단 고유 추적 링크가 키보드 인터셉터(240)에 이용가능하면, 고유 추적 링크는 메시지에 삽입될 수 있다. 고유 추적 링크는 키보드 인터셉터(240)에 의해 자동으로 삽입될 수 있고/있거나 발신자가 링크를 통신에 수동으로 삽입하는데 이용가능하게 될 수 있다. 그런 다음, 통신은 발신자에 의해 한 명 이상의 수신자들에게 발송된다. 통신을 수신하면, 수신자는 수신자의 모바일 디바이스 상에서 실행되는 디폴트 웹 브라우저 애플리케이션을 론칭하는 고유 추적 링크를 선택할 수 있고, 로케이팅된 데이터와 연관된 웹사이트로 향하게 될 수 있다. 쿠키는 GUI 엘리먼트의 선택과 연관된 식별자를 포함할 수 있으며, 이는 웹 브라우저 애플리케이션에 의해 저장되고 웹 사이트 상의 수신자의 액션을 추적하는 데 사용될 수 있다.
유리하게는, 랜덤하게 생성된 클릭 ID와 같은 GUI 엘리먼트의 선택과 연관된 식별자의 포함은, 고유 추적 링크가 임의의 사용자 정보를 포함하지 않기 때문에, 개선된 보안을 제공하며, 따라서 사용자 정보가 사용자들 사이에서 통신되고/되거나 웹사이트로 전달되지 않는다. 고유 추적 링크와 연관된 웹 사이트를 브라우징할 때 수신자의 통신을 인터셉트하거나 스누핑(snoop)하는 제3자는 수신자에 의해 취해진 액션을 임의의 개인과 연관시킬 수 없다.
서버(150)는 엔티티로부터 수신된 고유 추적 링크와 저장된 고유 추적 링크들을 비교하고; 더 구체적으로, 서버(150)는 고유 추적 링크 내의 클릭 ID를, 서버(150)에 의해 저장된 GUI 엘리먼트 부분들의 선택과 연관된 식별자와 비교한다. 링크의 GUI 엘리먼트 부분들의 선택과 연관된 식별자가 매칭될 것이기 때문에, 서버(150)는 그 액션을 특정 사용자에게 귀착시킬 수 있다. 따라서, 일 예에서, 수신자에 의해 이루어진 구매에 대해 얻은 임의의 커미션은 발신자에게 입금(credit)될 수 있다. 고유 추적 링크는 서버(150)를 식별하는 서버 식별자를 더 포함할 수 있다. 이 예에서, 고유 추적 링크 내의 웹사이트와 연관된 엔티티는 수신자에 의해 취해진 액션의 표시를 서버 식별자와 연관된 서버(150)에 제공할 수 있다.
제1 사용자로부터 한 명 이상의 제2 사용자들로의 통신으로의 고유 추적 링크의 삽입을 수반하는 전술한 예는 다음의 특징들을 구현하는 것으로 간주될 수 있다:
첫째, 제1 사용자의 모바일 디바이스에 의해 수행되는 방법으로서, 상기 방법은 : 상기 제1 사용자와 연관된 모바일 디바이스 상에서 동작하는 키보드 애플리케이션에 의해, 제1 입력을 수신하는 단계; 상기 키보드 애플리케이션에 의해, 상기 제1 입력에 기초하여 검색 쿼리를 생성하는 단계; 상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계 - 상기 데이터는 데이터베이스에 저장된 레코드와 연관되고, 상기 레코드는 레코드 식별자를 포함함 - ; 상기 키보드 애플리케이션의 사용자 인터페이스 내에서, 상기 제1 모바일 디바이스의 그래픽 사용자 인터페이스, GUI 엘리먼트를 상기 레코드 식별자와 연관시키는 단계; 상기 키보드 애플리케이션에 의해, 상기 제1 사용자에 의한 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계; 상기 제2 입력을 수신한 것에 응답하여, URL 및 상기 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 고유 추적 링크를 생성하는 단계 - 상기 URL은 상기 로케이팅된 데이터와 연관된 웹사이트를 위한 것임 - ; 및 상기 고유 추적 링크를 포함하는 메시지를 생성하는 단계, 및 상기 모바일 디바이스 상에서 동작하는 통신 애플리케이션에 의해, 상기 메시지를 제2 사용자에게 발송하는 단계를 포함한다.
둘째, 상기 제1 사용자의 모바일 디바이스에 의해 수행되는 방법과 협업하는 제2 사용자의 모바일 디바이스에 의해 수행되는 방법으로서, 이 방법은 : 상기 제2 사용자의 모바일 디바이스 상에서 동작하는 통신 애플리케이션에 의해, 데이터베이스 내에 로케이팅된 데이터와 연관된 웹사이트에 대한 URL 및 제1 사용자의 모바일 디바이스 상의 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 고유 추적 링크를 포함하는 메시지를 수신하는 단계 - 상기 메시지는 상기 제1 사용자의 모바일 디바이스로부터 발원함 -; 상기 링크를 상기 제2 사용자의 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달하는 단계 - 이에 의해 상기 웹사이트에 액세스함 -; 및 상기 웹사이트에 액세스하는 동안 상기 제2 사용자의 모바일 디바이스 상에서 동작하는 웹 브라우저 애플리케이션에 의해, 상기 링크와 연관된 쿠키를 저장하는 단계를 포함한다.
위에서 언급된 바와 같이, 통신 애플리케이션은 Facebook® Messenger, Instagram®, WhatsApp®, Snapchat®, Facebook®, YouTube®, Twitter®, LinkedIn, 및 웹 기반 메신저 서비스, 및 제1 사용자에 의한 포스팅을 허용하는 웹사이트 중 하나를 실행하는 웹 브라우저 애플리케이션 중 하나일 수 있다. 데이터를 로케이팅하는 단계는 애플리케이션 프로그래밍 인터페이스, API, 호출을 서버로 포워딩하는 단계를 포함할 수 있다. 고유 추적 링크를 생성하는 단계는 고유 추적 링크를 요청하는 서버에 추가 API 호출을 포워딩하는 단계를 포함할 수 있고, 추가 API 호출은 레코드 식별자를 포함한다. 대안으로, 데이터를 로케이팅하는 단계는 제1 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함한다. 고유 추적 링크는 GUI 엘리먼트의 선택과 연관된 식별자로 인코딩된 URL을 포함할 수 있다. 데이터는 판매자 데이터일 수 있고, URL은 판매자와 연관된 웹사이트에 대한 리다이렉트 URL이다. 판매자 데이터는 : 판매자와 연관된 로고; 및 판매자와 연관된 활성 거래를 더 포함할 수 있고, GUI 엘리먼트를 레코드 식별자와 연관시키는 것은 판매자와 연관된 로고 및 활성 거래를 표시하는 텍스트를 디스플레이하는 것을 포함할 수 있다. 쿠키는 판매자가 제2 사용자에 의해 구매가 이루어졌다고 결정하는 것을 허용할 수 있다. 제1 사용자는 제2 사용자의 구매에 응답하여 판매자에 의해 발행된 보상을 받을 수 있다. 방법은, 데이터를 수신한 것에 응답하여, 데이터가 로케이팅되음을 나타내는 아이콘을 키보드 애플리케이션의 사용자 인터페이스 내에 디스플레이하는 단계; 제1 사용자에 의한, 아이콘의 선택에 대응하는 추가 입력을 수신하는 단계를 더 포함할 수 있고, GUI 엘리먼트를 디스플레이하는 단계는 추가 입력을 수신한 것에 응답할 수 있다. GUI 엘리먼트의 선택과 연관된 식별자는 랜덤하게 생성될 수 있다.
본 개시는 지금까지 URL과 연관된 웹사이트로 사용자를 향하게 하고, 해당 웹사이트를 브라우징하는 동안 활동의 추적을 허용하는 고유 추적 링크들을 생성하는 키보드 인터셉터(240)를 설명하였다. 그러나, 키보드 인터셉터(240)의 동작은 고유 추적 링크의 생성에 제한되지 않는다. 키보드는 모바일 디바이스의 가장 빈번하게 사용되는 기능들 중 하나이며, 모바일 디바이스 상에서 실행되는 거의 모든 애플리케이션과 함께 사용될 수 있다. 따라서, 키보드 인터셉터(240)는 고유 추적 링크들을 통한 브라우저 기반 상호작용들의 전술한 추적을 넘는 상호작용들을 인에이블하는 데 사용될 수 있다.
일 예에서, 데이터베이스(160)의 하나 이상의 추가 필드들로부터의 데이터는 키보드 인터셉터(240)로 전달되어 사용자에게 디스플레이될 수 있다. 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이된 GUI 엘리먼트들의 선택을 넘어서는 입력을 추가로 허용할 수 있다. 다른 예에서, 키보드 인터셉터(240)는 텍스트, 이미지, 비디오 및 오디오 중 하나 이상과 같은 콘텐츠를 수신 및/또는 다른 방식으로 식별하고, 수신된 콘텐츠를 제3자에게 통신하도록 구성될 수 있다. 이는, 예를 들어, 사용자가 키보드 계정을 생성하고, 설문 조사를 완료하고, 구매 증명을 나타내는 미디어를 업로드할 수 있도록, 사용자와 제3자 사이의 상호 작용을 허용한다. 이러한 추가 예들이 아래에서 설명될 것이다.
위에서 논의된 바와 같이, 데이터베이스(160)는 필드들에 저장된 데이터를 포함하고, 필드들은 URL들, 쿠폰, 바우처, 및 할인 코드들, 그 브랜드의 오퍼들,헤딩 키워드들, 카테고리들 및 설명들 등과 같은 데이터, 및 브랜드와 연관된 이미지들, 오디오 및 비디오와 같은 미디어 중 하나 이상을 포함한다. 본 개시의 추가 예들에서, 키보드 인터셉터(240)는 데이터베이스(160)의 필드들에 저장된 데이터에 관한 하나 이상의 액션을 수행하도록 구성된다. 하나 이상의 추가 액션들은 고유 추적 링크의 생성에 추가하여 또는 대안으로서 수행될 수 있다.
쿠폰 코드(Coupon Codes)들
본 개시의 추가 예에서, 키보드 인터셉터(240)는 웹 페이지 내의 관련 텍스트 필드에 하나 이상의 쿠폰 코드들을 수신 및 삽입하고, 쿠폰 코드들을 위한 검색 쿼리를 형성하도록 구성된다. 용어 쿠폰 코드는 구매의 적어도 하나의 양태에 영향을 미치는 임의의 코드를 지칭하는 것으로 이해된다. 예를 들어, 쿠폰 코드는 구매 아이템과 연관된 웹페이지에 입력될 때 구매 아이템과 연관된 하나 이상의 거래를 활성화할 수 있다. 따라서, 용어 쿠폰 코드, 바우처 코드 및 할인 코드는 동의어이며, 모두 이러한 코드를 지칭하는 것으로 이해되어야 한다. 거래는 하나 이상의 구매 아이템의 가격의 퍼센트 감소, 하나 이상의 구매 아이템들의 고정된 가격 감소, 하나 이상의 무료 아이템들, 및 무료 배송 등과 같은 하나 이상의 구매 아이템들에 관한 하나 이상의 서비스들을 포함할 수 있다. 구매의 적어도 하나의 양태에 영향을 미치는 거래들의 다른 예들이 고려된다. 일부 예들에서, 고유 추적 링크의 생성과 관련하여 위에서 설명된 거래들은 쿠폰 코드들이다.
제1 예에서, 방법(600)은 고유 추적 링크의 생성에 추가하여 하나 이상의 쿠폰 코드들이 소싱되고 웹페이지에 삽입될 수 있는 경우에 적용될 수 있다.
예를 들어, 블록(630)에서, 검색 쿼리에 기초하여 로케이팅된 데이터는 하나 이상의 쿠폰 코드들을 포함할 수 있고, 코드(들)의 사용과 연관된 보상과 같은 쿠폰 코드(들)에 관한 메타데이터를 추가로 포함할 수 있다. 앞서 논의된 바와 같이, 데이터는 모바일 디바이스(200) 상에 로컬로 또는 서버(150)에 연결된 데이터베이스(160)에 저장될 수 있다.
블록(640)에서, 레코드 식별자와 연관된 GUI 엘리먼트는 하나 이상의 쿠폰 코드가 브랜드와 연관된 웹사이트 상에서 사용하는 데 이용가능하다는 표시를 디스플레이할 수 있다. 일 예에서, 표시는 이용가능한 쿠폰 코드들의 수를 나타내는 텍스트를 포함한다. 이는 사용자가 브랜드의 웹사이트를 방문하도록 더 장려할 수 있다.
다른 예에서, GUI 엘리먼트는 사용자가 로케이팅된 데이터에 대한 추가 정보를 획득할 수 있게 하는 추가 상호 작용 엘리먼트를 포함할 수 있다. 추가 상호작용 엘리먼트는 GUI 엘리먼트 내에 디스플레이될 수 있다. 예를 들어, 추가 상호작용 엘리먼트는 GUI 엘리먼트 내에 로케이팅된 "i"로서 디스플레이될 수 있다. 추가 상호 작용 엘리먼트의 선택은 방법이 블록(650)으로 즉시 진행하게 하지 않을 것이다(이는 방법(600)의 의미 내의 제2 입력이 아니다). 대신에, 추가 상호작용 엘리먼트의 선택은 임의의 쿠폰 코드들이 이용가능한지 여부의 표시와 같은, 브랜드와 연관된 추가 데이터를 디스플레이할 것이다. 추가 데이터는 단계 S330 또는 단계 S340에서 키보드 인터셉터(240)로 통신되었을 수도 있다. 이용가능한 쿠폰 코드들의 표시는 쿠폰 코드 자체, 쿠폰 코드와 연관된 거래(deal), 및 사용자가 코드를 복사하고 브랜드와 연관된 웹사이트로 진행하기를 원하는지 여부를 묻는 텍스트 중 하나 이상을 포함할 수 있다. 추가 상호 작용 엘리먼트의 선택의 결과는 하나 이상의 추가 GUI 엘리먼트들의 디스플레이를 초래할 수 있다. 하나 이상의 추가 GUI 엘리먼트들은 GUI 엘리먼트 위에 디스플레이될 수 있고, 그 자체가 브랜드와 연관된 추가 데이터를 디스플레이한다. 각각의 추가 GUI 엘리먼트는 별개의 쿠폰 코드에 대응할 수 있고, 따라서 쿠폰 코드 자체 및 쿠폰 코드의 사용과 연관된 거래와 같은 추가 데이터를 디스플레이할 수 있다.
블록(650)에서, 사용자에 의한 GUI 엘리먼트(또는 추가 GUI 엘리먼트)의 선택에 대응하는 제2 입력이 수신된다. 상기 논의에 기초하여, 제2 입력은 이제 하나 이상의 쿠폰 코드들이 이용가능하다는 표시를 디스플레이하는 GUI 엘리먼트의 선택, 또는 추가 상호 작용 엘리먼트의 사용자의 선택에 응답하여 디스플레이되는 추가 GUI 엘리먼트의 선택에 대응한다.
블록(660)에서, 고유 추적 링크의 생성에 더하여, GUI 엘리먼트의 선택은 또한 하나 이상의 추가 액션들을 야기할 수 있다. 일 예에서, GUI 엘리먼트의 선택은 쿠폰 코드가 텍스트 필드 내로 전달되게 한다.
대안으로 또는 추가적으로, 블록(650)에서 GUI 엘리먼트의 선택은 이용 가능한 쿠폰 코드(들)가 키보드 인터셉터(240)에 액세스 가능하도록 저장되게 할 수 있다. 쿠폰 코드들은 로컬에, 예를 들어, 클립보드, 로컬 스토리지 또는 캐시에, 및/또는 서버(150)에 의해 저장될 수 있다. 클립보드는 키보드 애플리케이션(120)의 특징부 및/또는 모바일 디바이스(110)의 운영 체제의 특징부일 수 있다. 이 경우, 사용자가 애플리케이션에 액세스하는 경우, 쿠폰 코드는 관련 텍스트 필드(예를 들어, 쿠폰 코드 필드)에 삽입할 수 있도록 사용자에 이용 가능하다. 쿠폰 코드는 키보드 애플리케이션(120)의 사용자 인터페이스 내에 디스플레이될 수 있고, 사용자에 의한 선택에 따라 원하는 텍스트 필드에 붙여질 수 있다. 애플리케이션이 웹 브라우저 애플리케이션일 때, 사용자가 URL과 연관된 웹사이트를 브라우징하고 있기 때문에, 키보드 인터셉터(240)는 사용자가 현재 웹페이지 내의 텍스트 필드를 선택했음을 검출하고, 사용자에 의한 선택을 위해 키보드 애플리케이션(220)의 사용자 인터페이스 내에 이용가능한 쿠폰 코드(들)가 디스플레이되게 할 수 있다. 또한, 키보드 인터셉터(240)는 쿠폰 코드(들)가 디스플레이되도록 하기 전에 현재 선택된 텍스트 필드의 유형을 검출할 수 있다. 특히, 키보드 인터셉터(240)는 선택된 텍스트 필드가 쿠폰 코드에 대하여 지정된 텍스트 필드인 것으로 결정할 수 있다. 이에 대해서는 도 10과 관련하여 논의한다.
쿠폰 코드 텍스트 필드의 검출은 선택가능한 엘리먼트가 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이되게 할 수 있다. 선택가능한 엘리먼트는 하나 이상의 쿠폰 코드들이 현재 웹사이트 상에서의 사용을 위해 이용가능함을 나타낼 수 있다. 그런 다음, 선택가능한 엘리먼트의 사용자에 의한 선택은 텍스트 필드에 삽입하기 위해 하나 이상의 쿠폰이 사용자에게 디스플레이되게 할 수 있다.
일부 모바일 운영 체제, 웹 브라우저 애플리케이션 또는 웹 사이트는 특정 쿠폰 코드 텍스트 필드를 정의하지 않을 수 있다. 그런 다음, 키보드 인터셉터(240)는 제네릭 텍스트 필드의 선택이 검출될 때마다 쿠폰 코드를 디스플레이하도록 할 수 있다. 이러한 경우들에서(특정 쿠폰 코드 필드가 정의되지 않을 때), 정의된 특정 정의된 텍스트 필드들 예컨대, 패스워드, 이메일, 어드레스, 및 브라우저 바 필드들이 필터링될 수 있다. 이러한 정의된 비-쿠폰 필드들을 제거함으로써, 나머지 비-정의된 필드들이 쿠폰 코드(들)에 대한 것일 가능성이 더 커진다. 이러한 필터링은 사용자가 현재 웹 브라우저 애플리케이션(250) 내에 있을 때 발생할 수 있다.
도 7a 및 도 7b는 사용자에 의해 제공된 입력에 기초하여 하나 이상의 쿠폰 코드들이 소싱되는 모바일 디바이스의 예시적인 사용자 인터페이스들(700, 750)을 도시한다. 도 7a는 사용자가 웹 브라우저 애플리케이션(250)과 같은 모바일 웹 브라우저 애플리케이션의 어드레스 바(710)에 타이핑한 예를 도시한다. 특히, 사용자는 "nike"를 타이핑하였고, 키보드 인터셉터는 브랜드 Nike® 및 Nikon®에 관한 f로케이팅된 데이터를 갖는 검색 쿼리를 형성하였다. Nike® 및 Nikon®과 연관된 메타데이터는 키보드 애플리케이션의 사용자 인터페이스 내의 선택가능한 GUI 엘리먼트들(720a, 720b)에 디스플레이된다. 이 예에서, Nike®와 연관된 GUI 엘리먼트는 본 명세서에서 "i"로 도시된 상호작용 엘리먼트(730)를 포함한다.
도 7b에서, 사용자는 추가 상호 작용 엘리먼트(730)를 선택하였다. 키보드 인터셉터는 모바일 디바이스 상의 로컬 스토리지로부터 또는 데이터베이스(160)로부터, 브랜드 Nike®와 연관된 데이터를 요청하기 위한 호출을 수행했다. 데이터를 검색한 것에 응답하여, 키보드 인터셉터(240)는 브랜드 Nike®와 연관된 추가 데이터의 디스플레이 하게 했다. 데이터베이스(160) 내의 브랜드 Nike®와 연관된 레코드에 저장된 적어도 2개의 쿠폰 코드들이 존재한다. 2개의 쿠폰 코드에 관한 데이터는 2개의 추가 선택 가능한 GUI 엘리먼트(760a, 760b) 내의 키보드 위에 디스플레이된다. 디스플레이되는 데이터는 쿠폰 코드 자체, 쿠폰 코드의 사용과 연관된 할인을 나타내는 텍스트 및 사용자가 쿠폰 코드를 선택할 수 있고, Nike® 웹사이트로 향하게 할 수 있고, 쿠폰 코드가 웹사이트 상의 관련 텍스트 필드에 붙여넣기하기 위해 저장될 것임을 나타내는 텍스트를 포함한다. 그런 다음, 사용자는 고유 추적 링크가 생성되게 할 쿠폰 코드를 디스플레이하는 GUI 엘리먼트들(760a, 760b) 중 하나를 선택하고, 선택된 쿠폰 코드를 나중에 사용하기 위해 복사할 수 있거나; 또는 쿠폰 코드를 복사하지 않고 고유 추적 링크가 생성되게 할 브랜드 네임을 디스플레이하는 GUI 엘리먼트(720a)를 선택할 수 있다. 사용자가 브랜드 네임을 디스플레이하는 GUI 엘리먼트(720a)를 선택하면, 키보드 인터셉터(240)는 추후 사용을 위해 쿠폰 코드를 저장할 수 있다.
도 8a, 8b 및 9는 사용자가 웹사이트를 통해 구매하기를 원하는 모바일 디바이스의 예시적인 사용자 인터페이스(800, 850, 900)를 추가로 도시한다. 도 8a, 8b 및 9에서 브라우저는 사용자의 모바일 디바이스의 현재 웹 사이트로 내비게이팅했다. 도 8a에서, 사용자는 쿠폰 코드 텍스트 필드(810)를 선택하였다. 쿠폰 코드에 해당하는 데이터는 검색 쿼리에 기초하여 미리 로케이팅되었다. 특히, 키보드 인터셉터는 (사용자 인터페이스의 스크린샷을 분석하거나 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장(255)으로부터 URL을 수신하는 등에 의해) 전술한 방법들 중 임의의 방법을 사용하여 사용자에 의해 키보드 애플리케이션으로 또는 사용자 인터페이스(800)의 현재 콘텐츠를 통해 제공되는 입력인, 입력을 수신하였다. 그런 다음, 키보드 인터셉터는 현재 웹 사이트에서 사용하기 위한 하나 이상의 쿠폰을 로케이팅한 검색 쿼리를 생성하였다. 이 예에서, 쿠폰 코드 필드(810)의 선택은 키보드 인터셉터에 의해 검출되었다. 쿠폰 코드 필드(810)의 선택을 검출한 것에 응답하여, 키보드 인터셉터는 하나 이상의 쿠폰 코드들이 이 브랜드에 대해 이용 가능하다는 표시의 디스플레이를 야기하였다. 이 표시는 키보드 애플리케이션의 사용자 인터페이스 내에 선택가능한 GUI 엘리먼트(820)로서 디스플레이된다.
도 8b는 사용자가 선택가능한 GUI 엘리먼트(820)를 선택한, 도 8a에 도시된 예를 계속한다. 선택가능한 GUI 엘리먼트(820)의 선택을 검출한 것에 응답하여, 키보드 인터셉터는 로케이팅된 쿠폰 코드 및 상기 코드와 관련된 대응하는 메타데이터를 검색하였고, 사용자 인터페이스가 2개의 추가 GUI 엘리먼트(830a, 830b)를 디스플레이하게 하였다. 2개의 추가 GUI 엘리먼트(830a, 830b) 각각은 쿠폰 코드, 쿠폰 코드의 사용과 연관된 거래, 및 사용자가 이들 GUI 엘리먼트(830a, 830b) 중 하나를 선택하는 제안을 디스플레이한다. 추가 GUI 엘리먼트들(830a, 830b) 중 하나의 선택은 선택된 GUI 엘리먼트와 연관된 쿠폰 코드가 쿠폰 코드 필드(810)에 삽입되도록 할 것이다.
도 9는 선택가능한 GUI 엘리먼트(820)의 선택시, 키보드 인터셉터가 어떠한 쿠폰 코드도 로케이팅되지 않은, 도 8a 및 도 8b에 도시된 예에 관련된 추가 예를 도시한다. 대응하여, 키보드 애플리케이션의 사용자 인터페이스는 이제 쿠폰 코드들이 발견되지 않았다는 알림(930)을 디스플레이하고 있다.
전술한 바와 같이, 키보드 인터셉터(240)는 선택된 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드인지 여부를 결정하도록 구성될 수 있다. 일 예에서, 키보드 인터셉터(240)는 모바일 디바이스(200)의 그래픽 사용자 인터페이스의 스크린샷을 획득하고, 이미지 분석을 수행하여 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드인지 여부를 결정하도록 구성된다. 다른 예에서, 키보드 인터셉터(240)는 결정을 하기 위해 모바일 디바이스 상의 접근성 서비스(accessibility service)(290)를 사용한다. 추가 예에서, 키보드 인터셉터(240)는 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255)으로부터 텍스트 필드가 쿠폰 코드에 대해 지정된다는 표시를 수신한다. 이제 도 10과 관련하여 보다 자세히 설명한다.
도 10은 쿠폰 코드를 쿠폰 코드 필드에 삽입하기 위해 키보드 인터셉터가 사용되는 예시적인 방법(1000)을 도시한다. 예시적인 방법(1000)에서, 쿠폰 코드들은 이미 로케이팅되었고, 키보드 인터셉터(240)에 이용가능하다. 방법(1000)은 도 6에 도시된 방법(600)의 연속일 수 있다. 즉, 사용자는 사용자의 모바일 디바이스 상에서 동작하는 웹 브라우저 애플리케이션으로 전달된 고유 추적 링크의 생성 후에 웹사이트에 도달하였다. 다른 예에서, 방법(1000)은 방법(600)의 계속이 아니며, 하나 이상의 쿠폰 코드들은, 예를 들어, 도 11에 도시된 방법(1100)을 사용하여 로케이팅되었다. 방법(1000)은 사용자가 모바일 디바이스 상에서 실행되는 임의의 애플리케이션에 액세스하고 있을 때 적용가능하다. 예들은 웹 브라우저 애플리케이션들 및 판매자 특정 애플리케이션들을 포함한다.
방법(1000)에서, 데이터는 검색 쿼리에 기초하여 이전에 로케이팅되었고, 데이터는 레코드 식별자를 포함하는 레코드와 연관된다. 또한, 데이터는 하나 이상의 쿠폰 코드들을 포함한다. 그러나, 방법(1000)에서, 사용자는 삽입될 특정 쿠폰 코드를 미리 선택하지 않았다. 대신에, 사용자가 애플리케이션에 액세스하고 있고 쿠폰 코드들에 대해 지정된 텍스트 필드를 선택함에 따라 선택이 발생한다.
블록(1010)에서, 방법(1000)은 모바일 디바이스 상에서 실행되는 애플리케이션의 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드인지 여부를 결정하는 단계를 수반한다. 제1 예에서, 키보드 인터셉터(240)는 사용자가 텍스트 필드를 선택했다는 표시를 수신할 수 있다. 표시는 키보드가 활성이고 현재 사용자에게 디스플레이되고 있다고 결정하는 것을 수반할 수 있거나, 예를 들어, <textarea> 태그와 같은 HTML 엘리먼트의 검출에 기초할 수 있다. 긍정적인 결정에 응답하여, 키보드 인터셉터(240)는 모바일 디바이스의 그래픽 사용자 인터페이스(GUI)의 스크린샷을 획득한다. 스크린샷은 선택된 텍스트 필드가 쿠폰 코드에 대해 지정된 것을 결정하기 위해 분석될 수 있다. 분석은 스크린샷에 대해 하나 이상의 이미지 분석 기술을 수행하는 단계를 포함할 수 있다. 예를 들어, 분석은 쿠폰 코드들의 사용과 관련된 텍스트가 텍스트 필드로부터 특정 거리 내에 로케이팅된다고 결정하는 것을 포함할 수 있다. 텍스트 필드 근처에 로케이팅된 "쿠폰", "할인", "판촉 코드(promo code)" 및 "바우처"와 같은 용어는 텍스트 필드가 쿠폰 코드를 위해 지정된 텍스트 필드임을 나타낼 수 있다. 스크린샷 내의 텍스트는 OCR(Optical Character Recognition)과 같은 텍스트 인식 알고리즘에 의해 획득될 수 있으며, 쿠폰 코드 사용과 관련된 텍스트와 관련된 텍스트 필드의 로케이션은 예를 들어, 형상 인식 알고리즘을 통해 결정될 수 있다. 이러한 분석은 키보드 인터셉터(240)에 의해 수행될 수 있다. 대안으로, 키보드 인터셉터(240)는 서버(150)가 분석을 수행할 수 있도록 스크린샷을 서버(150)에 통신한다. 이 경우, 서버(150)는 쿠폰 코드 필드가 선택되는지 여부를 나타내는 추가 통신을 키보드 인터셉터(240)에 발송한다.
제2 예에서, 키보드 인터셉터(240)는 텍스트 필드가 쿠폰 코드들에 대해 지정되는지 여부를 결정하기 위해 모바일 디바이스 상의 접근성 서비스(290)를 사용한다. 접근성 서비스(290)는 모바일 디바이스의 운영 체제에 의해 제공될 수 있고 자동 채움 프레임워크(autofill framework)를 포함할 수 있다. 자동 채움 프레임워크는 텍스트 필드의 지정 유형을 모니터링하여 텍스트 필드와 관련된 데이터를 자동으로 삽입할 수 있도록 한다. 이 경우, 자동 채움 프레임워크는 사용자가 쿠폰 코드에 대해 지정된 텍스트 필드를 선택했다고 결정하고, 이 결정을 키보드 인터셉터(240)에 전달한다.
제3 예에서, 키보드 인터셉터(240)는 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드인지 여부를 결정하기 위해 애플리케이션과 직접 통신한다. 예를 들어, 애플리케이션은 쿠폰 코드 필드를 정의하는 판매자의 앱일 수 있다. 현재 텍스트 필드가 쿠폰 코드들에 대해 지정된다는 표시는, 예를 들어, 하나 이상의 API들을 통해 키보드 인터셉터(240)에 통신될 수 있다.
제4 예에서, 애플리케이션은 웹 브라우저 애플리케이션(250)이고, 키보드 인터셉터(240)는 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255)과 인터페이스한다. 이 제4 예에서, 웹 페이지가 웹 브라우저 애플리케이션(250)에 의해 액세스되고 있기 때문에, 브라우저 확장(255)은 쿠폰 코드의 형태로 텍스트를 수신하도록 특별히 지정된 웹 페이지 내의 HTML 필드를 검출할 수 있다. 브라우저 확장(255)은 "getElementsByTagName" 함수와 같은 웹 페이지 내의 입력 필드를 반환하는 함수를 이용할 수 있다. 입력 필드는 "querySelectorAll" 함수와 같은 하나 이상의 함수들을 통해 쿠폰 코드에 대해 지정된 것으로만 좁혀질 수 있다. 브라우저 확장(255)이 텍스트 필드가 선택되었다고 결정하면, 브라우저 확장(255)은 키보드 인터셉터(240)에 이에 대한 표시를 통신한다.
블록(1020)에서, 방법(1000)은 모바일 디바이스의 GUI에 하나 이상의 쿠폰 코드들을 디스플레이하는 단계를 수반한다. 전술한 바와 같이, 키보드 인터셉터(240)는 사용자가 현재 웹 사이트 또는 애플리케이션에 처음 액세스했을 때 또는 고유 추적 링크가 생성되었을 때 하나 이상의 쿠폰 코드들을 저장했을 수 있다. 쿠폰 코드들은 예를 들어, 캐시 또는 스토리지(280)에 로컬에 저장될 수 있다. 이 경우에, 키보드 인터셉터(240)는 적어도 하나의 쿠폰 코드에 대한 룩업(lookup)을 수행한다. 대안으로, 키보드 인터셉터(240)는 하나 이상의 쿠폰 코드에 대한 요청을 서버(150)에 발송할 수 있다. 요청은 HTTP 요청일 수 있고, 레코드 식별자를 포함할 수 있다. 일단 하나 이상의 쿠폰 코드가 검색되면, 키보드 인터셉터(240)는, 위에서 논의된 바와 같이, 모바일 디바이스의 GUI에 쿠폰 코드들의 디스플레이를 야기한다.
블록(1030)에서, 방법(1000)은 하나 이상의 쿠폰 코드들의 선택에 대응하는 입력을 수신하는 단계를 수반한다. 입력은 선택에 대응하는 쿠폰 코드를 삽입하려는 사용자의 의도를 나타낸다.
블록(1040)에서, 방법(1000)은 입력에 응답하여, 쿠폰 코드를 텍스트 필드에 삽입하는 단계를 수반한다. 전술한 바와 같이, 쿠폰 코드는 메모리, 예를 들어, 클립보드에 복사된 다음 즉시 텍스트 필드에 붙여질 수 있다. 대안으로, 쿠폰 코드의 검색 후에, 쿠폰 코드는 캐시로부터 키보드 인터셉터(240)에 의해 텍스트 필드에 직접 삽입된다.
관련된 예에서, 자동 채움 프레임워크는 사용자로부터의 어떠한 입력도 없이 쿠폰 코드들을 위해 지정된 텍스트 필드에 쿠폰 코드를 삽입하기 위해 이용될 수 있다. 이 예에서, 자동 채움 프레임워크는 선택된 텍스트 필드가 쿠폰 코드에 대해 지정되었다고 결정하고 이를 키보드 인터셉터(240)에 통신한다. 그런 다음, 키보드 인터셉터(240)는 스토리지로부터 또는 서버(150)에 대한 요청을 통해 쿠폰 코드들을 검색할 수 있다. 키보드 인터셉터(240) 및/또는 서버(160)는 텍스트 필드에 삽입될 적절한 쿠폰 코드를 자동으로 결정할 수 있다. 자동 결정은, 예를 들어, 상기 구매 아이템에 대한 할인 금액에 기초하여 이루어질 수 있다. 일단 키보드 인터셉터(240)가 적절한 쿠폰 코드를 검색하면, 그것은 코드를 자동 채움 프레임워크에 통신한다. 그런 다음 자동 채움 프레임워크는 텍스트 필드에 코드를 자동으로 삽입하도록 구성된다. 이러한 방식으로, 사용자가 쿠폰 코드 필드를 선택하자마자, 쿠폰 코드는 자동으로 소싱되어 그 필드에 삽입된다.
쿠폰 코드들을 수반하는 제 2 예가 이제 설명될 것이다. 제2 예에서, 하나 이상의 쿠폰 코드는 고유 추적 링크의 생성과 독립적으로 로케이팅된다. 이 제2 예에서, 검색 쿼리는 쿠폰 코드들을 로케이팅시키기 위해 키보드 인터셉터(240)에 의해 형성될 수 있다.
제2 예의 제1 구현예에서, 키보드 인터셉터(240)는 예를 들어, 이벤트 리스너 API를 통해 또는 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이된 검색 바를 통해 사용자로부터 입력을 수용한다. 검색 바는 키보드 애플리케이션(220)이 디스플레이될 때마다 디스플레이될 수 있고, 키보드 애플리케이션(220)의 사용자 인터페이스 내의 옵션을 선택함으로써 디스플레이될 수 있다. 검색 바는 사용자가 서버(150)와 직접 상호작용할 수 있는 수단을 제공한다. 예를 들어, 검색 바는 검색 바를 통한 임의의 입력에 기초하여 검색 쿼리를 형성할 수 있다. 검색 바는 키보드 애플리케이션(220)에 의해 제공되는 가상 키보드를 사용하여 타이핑된 입력을 수용하고/하거나 음성 입력을 수용할 수 있다. 예를 들어, 검색 바는 모바일 디바이스(200)의 마이크로폰을 활성화하고 오디오 클립을 레코딩하는 선택 가능한 아이콘을 포함할 수 있다. 키보드 인터셉터(240)는 오디오 클립 내의 임의의 음성을 검색 쿼리의 기저(basis)를 형성하는 텍스트로 변환하기 위해 음성-텍스트 처리(speech to text processing)를 사용할 수 있다.
웹 사이트를 브라우징하는 동안, 사용자는 키보드 인터셉터(240)의 검색 바에 제1 입력을 제공할 수 있다. 키보드 인터셉터(240)는 제1 입력에 기초하여 검색 쿼리를 생성한다. 검색 쿼리는 개별적으로 도 3 및 도 4의 단계 S310 및 S430과 관련하여 설명된 것과 유사한 방식으로 생성된다. 이 경우, 검색 쿼리는 제1 입력이 검색 바에 제공되었다는 표시를 추가로 포함할 수 있다. 이 표시는 어떤 데이터가 로케이팅되어야 하는지를 결정하기 위해 미리 정의된 규칙들의 세트와 관련하여 사용될 수 있다. 미리 정의된 규칙들은 서버(150)에 의해 및/또는 키보드 애플리케이션(240)의 사용 전에 구성된 선호 설정들을 통해 사용자에 의해 결정될 수 있다. 미리 정의된 규칙들은 사용자가 검색 바를 사용할 때 가능한 데이터의 서브세트만이 검색되는 것을 정의할 수 있다. 예를 들어, 사용자가 현재 웹사이트를 브라우징하고 있고, 해당 웹사이트에 관련된 쿠폰 코드들을 원하는 경우, 그들은 검색 바를 사용할 때 쿠폰 코드들만을 수신하기를 원할 수 있다. 다른 예에서, 로케이팅될 데이터의 서브세트는 적어도 URL 및 URL과 연관된 웹사이트 상에서 이용가능한 하나 이상의 거래의 표시를 포함할 수 있다. 이 경우, 검색 바는 사용자가 웹 브라우저 애플리케이션의 어드레스 바에 타이핑하는 경우 전술한 바와 유사한 방식으로 동작할 수 있다.
전술한 바와 같이 검색 바를 제공하는 키보드 애플리케이션(220)은 웹 브라우저 확장(특정 모바일 디바이스들 및/또는 모바일 운영 체제들에서 이용가능하지 않을 수 있음)을 요구하지 않거나, 쿠폰 코드들, 설문 조사들 또는 브랜드와 관련된 다른 데이터를 검색하기 위해 추가적인 웹 브라우저 탭들을 열어야 하는 것 없이 사용자가 브랜드와 연관된 데이터에 액세스하는 편리한 방법을 제공한다.
데이터는 그런 다음 검색 쿼리 및 사용자에게 제시될 데이터에 관한 임의의 미리 정의된 규칙(들)에 기초하여 로케이팅된다. 데이터는 레코드 식별자를 포함하는 레코드와 연관된다. 데이터는 로컬에 예컨대, 데이터베이스(160)에 및/또는 스토리지(280)에 저장될 수 있다. 이 예에서, 데이터는 하나 이상의 쿠폰 코드들을 포함하고, 쿠폰 코드(들)와 연관된 추가 메타데이터를 추가로 포함할 수 있다.
데이터의 로케이팅에 후속하여, 레코드 식별자와 연관된 GUI 엘리먼트가 키보드 애플리케이션(220)의 사용자 인터페이스 내에서 사용자에게 디스플레이된다. GUI 엘리먼트는 쿠폰 코드가 로케이팅된 데이터와 연관된 판매자에 대해 이용 가능하다는 것을 나타낸다. 이러한 이유로, GUI 엘리먼트는 쿠폰 코드 자체 및 쿠폰 코드의 사용과 연관된 메타데이터와 같은 데이터를 포함할 수 있다.
사용자는 이 GUI 엘리먼트의 선택에 대응하는 제2 입력을 제공한다. 선택에 응답하여, 키보드 인터셉터(240)는 쿠폰 코드 필드에 삽입하기 위해 연관된 쿠폰 코드를 저장할 수 있다. 전술한 바와 같이, 쿠폰 코드는 클립보드에 복사되고/되거나 키보드 인터셉터(240)에 의한 액세스를 위해 로컬에 저장될 수 있다. 일 예에서, 키보드 인터셉터는 (전술된 블록(1010)과 유사하게) 검색 바에 제1 입력을 제공하기 전에 사용자가 쿠폰 코드 필드에 타이핑하고 있었음을 검출할 수 있다. 검출 및 제2 입력에 응답하여, 키보드 인터셉터(240)는 사용자의 추가 입력 없이 쿠폰 코드를 쿠폰 코드 필드에 직접 삽입할 수 있다.
일부 예들에서, 쿠폰 코드를 저장하는 것에 추가하여, GUI 엘리먼트의 선택과 연관된 식별자가 저장될 수 있다. 식별자는 전술한 바와 같이 랜덤하게 생성된 클릭 ID일 수 있다. 식별자는 데이터베이스(160)에 및/또는 로컬에, 예를 들어, 모바일 디바이스(200) 상의 스토리지(280)에 저장될 수 있다. 식별자는 사용자 식별자, 쿠폰 코드 로케이션의 시간 및 날짜, 및 쿠폰 코드가 로케이팅되었던 시간에서의 사용자의 로케이션 중 하나 이상과 연관되어 추가로 저장될 수 있다. 쿠폰 코드의 생성과 연관된 식별자의 저장은 사용자의 쿠폰 코드 이력을 추적하는데 사용될 수 있다. 식별자의 저장은 키보드 인터셉터(240)의 제공자가 사용자에게 쿠폰 코드를 제공한 것에 대한 보상을 얻는 것을 추가로 허용할 수 있다. 즉, 쿠폰 코드를 로케이팅하는 것은 구매가 이루어진 이유일 수 있고, 따라서 키보드 인터셉터(240)의 제공자는 구매와 연관된 판매자에 의해 보상될 수 있다. 이 경우, 웹 브라우저는 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장할 수 있다. 이는 판매자가 판매자의 웹사이트 상의 구매가 키보드 인터셉터(240)에 의해 쿠폰 코드의 로케이션을 따랐는지 여부를 추적할 수 있게 한다. 일 예에서, 판매자는: 구매가 이루어졌음을 검증하고, 쿠폰 코드가 사용되었음을 검증하고, 구매가 이루어진 시간을 결정할 수 있다. 이 데이터는 식별자와 함께 서버(150)로 전달될 수 있다. 서버(150)는 식별자에 대한 검색을 수행하여 사용자가 쿠폰 코드의 로케이션에 따라 구매하였음을 확인할 수 있다.
제2 예의 제2 구현예에서, 키보드 인터셉터(240)는 사용자가 검색 쿼리를 생성하고 하나 이상의 쿠폰 코드들을 로케이팅하기 위해 웹사이트를 브라우징하고 있을 때 현재 웹사이트의 URL을 획득한다. 키보드 인터셉터(240)는 상술한 바와 같이 모바일 디바이스(200)의 사용자 인터페이스의 스크린샷을 촬영함으로써 현재 웹 사이트의 URL을 획득할 수 있다. 그런 다음, 키보드 인터셉터(240)는 스크린샷에 대해 이미지 처리를 수행하여 모바일 웹 브라우저 애플리케이션(250)의 어드레스 바 내의 URL을 결정할 수 있다. 제2 예의 제2 구현의 다른 예에서, 키보드 인터셉터(240)는 모바일 디바이스(200)의 운영 체제에 의해 키보드 인터셉터(240)에 이용가능하게 된 접근성 서비스(290)를 통해 획득된 사용자 인터페이스의 현재 콘텐츠를 모니터링한다. 키보드 인터셉터(240)는 현재 웹사이트의 URL을 결정하기 위해 접근성 서비스(290)를 통해 획득된 사용자 인터페이스의 현재 콘텐츠를 처리할 수 있다.
또 다른 예에서, 키보드 인터셉터(240)는 현재 웹사이트와 연관된 도메인 네임을 결정하기 위해 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255)과 인터페이싱할 수 있다. 브라우저 확장(255)은 방법(1000)의 블록(1010)과 관련하여 전술한 브라우저 확장(255)일 수 있다. 이 경우, 브라우저 확장(255)은 현재 웹 페이지의 URL을 획득하도록 추가로 구성될 수 있다. 그런 다음, 브라우저 확장(255)은 URL을 키보드 인터셉터(240)에: 직접 API를 통해, 공유 스토리지를 통해 발송할 수 있으며, 이에 의해 브라우저 확장(255)은 URL을 저장하고 키보드 인터셉터(240)는 URL을 검색하기 위해 공유 스토리지에 액세스하거나, 간접적으로 서버(150)를 통해 발송한다.
결정된 URL에 기초하여, 키보드 인터셉터(240)는 검색 쿼리를 생성한다. 검색 쿼리를 생성하는 것은 URL 내로부터 도메인 네임, 키워드, 브랜드 네임, 및 브랜드 슬로건 중 하나 이상을 식별하는 것을 포함할 수 있다. 그런 다음, 검색 쿼리는 개별적으로 도 3 및 도 4의 단계 S310 및 S430과 관련하여 설명된 것과 유사한 방식으로 생성되지만, 이 경우, 검색 쿼리는 키보드 인터셉터(240)에 의해 자동으로 도출된 URL에 기초할 수 있다. 또한, 검색 쿼리는 사용자 인터페이스를 모니터링함으로써 검색 용어들이 획득되었다는 표시를 포함할 수 있다. 표시는 어떤 데이터를 로케이팅하고 키보드 인터셉터(240)에 발송할지를 결정하기 위해 서버(150)에 의해 사용될 수 있다. 전술한 바와 같이, 미리 정의된 규칙들의 세트는 어떤 데이터를 로케이팅할 지를 결정하는 데 사용될 수 있다. 예를 들어, 사용자는 자신이 브라우징하고 있는 웹사이트와 관련된 쿠폰 코드들만을 보기를 원할 수 있다. 규칙들의 미리 정의된 세트는 키보드 애플리케이션(220)의 사용 전에 구성된 선호 설정들을 통해, 서버(150) 및/또는 사용자에 의해 결정된다.
검색 쿼리, 및 옵션으로 사용자에게 제시될 데이터에 관한 미리 정의된 규칙들에 기초하여, 데이터가 로케이팅되고, 여기서 데이터는 레코드 식별자를 포함하는 레코드와 연관된다. 이때, 로케이팅된 데이터는 하나 이상의 쿠폰 코드들을 포함한다. 이러한 로케이팅은 개별적으로 도 3 및 도 4의 단계 S320 및 S440에 따라 수행될 수 있다. 즉, 로컬 스토리지(280) 및/또는 데이터베이스(160)는 검색 쿼리와 관련된 데이터에 대해 쿼리된다.
데이터가 로케이팅되면, GUI 엘리먼트는 키보드 애플리케이션의 사용자 인터페이스 내에서 레코드 식별자와 연관된다. GUI 엘리먼트는 하나 이상의 쿠폰 코드들이 사용자에게 이용가능하다는 것을 나타낼 수 있거나, 또는 대안으로 임의의 이용가능한 코드들을 디스플레이할 수 있다. GUI 엘리먼트가 하나 이상의 쿠폰 코드가 이용 가능하다는 것을 나타내는 경우, 사용자는 이용 가능한 코드가 제시될 GUI 엘리먼트를 선택할 수 있다. 각각의 이용 가능한 코드는 별도의 추가 GUI 엘리먼트로서 디스플레이될 수 있다.
그런 다음, 사용자는 제1 입력을 통해 특정 쿠폰 코드에 대응하는 GUI 엘리먼트를 선택할 수 있다. 제1 입력에 응답하여, 키보드 인터셉터(240)는 쿠폰 코드를 저장할 수 있다. 쿠폰 코드는 코드를 클립보드에 복사함으로써 저장될 수 있고/있거나 나중에 관련 텍스트 필드에 삽입하기 위해 키보드 인터셉터(240)에 액세스 가능하도록 로컬에 저장될 수 있다. 일부 예에서, 키보드 인터셉터(240)는 사용자가 쿠폰 코드 필드에 타이핑하고 있음을 추가로 검출하고, 이에 응답하여, 쿠폰 코드를 쿠폰 코드 필드에 즉시 삽입할 수 있다.
쿠폰 코드를 저장/삽입하는 것 추가하여, 전술한 바와 같이 GUI 엘리먼트의 선택과 연관된 식별자가 저장될 수 있다. 식별자는 임의로 생성된 클릭 ID일 수 있다. 웹 브라우저 애플리케이션(250)은 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 쿠키를 저장할 수 있다. 이는 판매자가 판매자의 웹사이트 상의 구매가 키보드 인터셉터(240)에 의해 쿠폰 코드의 로케이션을 따랐는지 여부를 추적할 수 있게 한다. 판매자는 GUI 엘리먼트의 선택과 연관된 식별자와 함께 구매의 표시를 서버(150)와 연관된 엔티티에 추가로 포워딩할 수 있다. 그런 다음, 서버(150)와 연관된 엔티티는 구매를 사용자에게 연관시키고, 사용자에게 쿠폰을 제공하는 대가로 판매자로부터 보상을 청구할 수 있다.
일부 예에서, 키보드 인터셉터(240)는 웹 브라우저 애플리케이션(250) 내에서 새로운 탭이 열리도록 할 수 있다. 쿠키는 웹 브라우저 애플리케이션(250)에 의해 새로운 탭에 저장될 수 있다. 일단 쿠키가 저장되면, 키보드 인터셉터(240)는 새로운 탭이 닫히게 할 수 있다. 이 프로세스는 사용자가 보고 있는 현재 웹 페이지를 다시 로드하지 않고 쿠키가 저장되게 할 수 있다.
추가 예들에서, 레코드 식별자와 연관된 브랜드에 관한 다른 데이터는 하나 이상의 쿠폰 코드들에 추가로 또는 대안으로, 데이터의 로케이션에 응답하여 사용자에게 디스플레이될 수 있다. 데이터는 데이터베이스에 저장되고 로케이팅된 데이터와 동일한 레코드와 연관된 하나 이상의 미디어 아이템을 포함할 수 있다. 일부 예에서, 키보드 인터셉터(240)는 브랜드와 연관된 하나 이상의 미디어 아이템을 수신할 수 있다. 미디어는 거래가 판매자에 대응하여 로케이팅되었음을 나타내는 GUI 엘리먼트에 추가하여 사용자에게 디스플레이될 수 있다. 이것은 추가로 사용자가 판매자의 웹사이트를 방문할 것을 장려한다.
설문 조사(Surveys)
위에서 간략히 설명된 바와 같이, 키보드 인터셉터(240)는 텍스트, 이미지, 비디오 및 오디오 중 하나 이상과 같은 콘텐츠를 수신 및/또는 다른 방식으로 식별하고, 수신된 콘텐츠를 제3자에게 통신하도록 구성될 수 있다.
일 예에서, 키보드 인터셉터(240)는 사용자가 키보드 인터셉터(240)의 제공자와 같은 제3자와 연관된 계정을 셋업할 수 있게 한다. 계정은 사용자가 키보드 인터셉터(240)의 사용을 통해 수여된 그들의 보상을 보고 추적할 수 있게 할 수 있다. 계정은 또한 사용자가 그들의 보상을 인출하기 위해 사용될 수 있다. 보상을 인출하는 것은 모바일 디바이스(200) 상에서도 하나 이상의 앱들에 자금을 예치하고/하거나 카드(credit)들을 추가하기 위해 결제 서비스에 연결하는 것을 수반할 수 있다.
다른 예에서, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 내에서의 설문 조사들의 완료를 허용한다. 설문 조사(survey)는 특정 문제에 대한 사용자의 의견을 평가하는 데 사용될 수 있는 하나 이상의 질문들을 포함하는 것으로 이해된다. 질문들은 사용자로부터 텍스트, 이미지들, 비디오, 및 오디오 중 임의의 것의 입력을 요구할 수 있다.
설문 조사에 관한 질문들은 브랜드와 연관되고 레코드 식별자를 포함하는 레코드 내에, 데이터베이스(160)에 저장될 수 있다. 방법(600)은 사용자가 키보드 인터셉터(240)를 사용하여 브랜드와 관련된 설문 조사를 완료할 수 있도록 적용될 수 있다. 특히, 블록(630)에 로케이팅된 데이터는 하나 이상의 설문 조사를 포함할 수 있고, 여기서 각각의 설문 조사는 하나 이상의 설문 조사 질문들을 포함하고, 가능하게는 설문 조사의 완료를 위한 할인 금액, 및 하나 이상의 설문 조사의 타이틀과 같은 설문 조사(들)에 관한 메타데이터를 포함한다. 다수의 설문 조사들이 데이터베이스(160) 내의 동일한 레코드 내에 존재할 수 있기 때문에 각각의 설문 조사는 연관된 설문 조사 식별자를 또한 가질 수 있다. 설문 조사 식별자는 동일한 레코드에 있는 다른 설문조사 중에서 임의의 설문 조사를 식별하는 데 사용될 수 있다.
블록(640)에서, 레코드 식별자와 연관된 키보드 애플리케이션의 사용자 인터페이스 내의 GUI 엘리먼트는 하나 이상의 설문 조사가 이 브랜드에 이용 가능하다는 표시를 포함할 수 있다. 검색 쿼리에 기초하여 로케이팅된 하나 이상의 설문 조사와 관련된 메타데이터가 또한 GUI 엘리먼트와 관련하여 디스플레이될 수 있다. 이는 사용자가 설문 조사(들)의 완료에 대한 보상을 수신할 수 있음을 나타낼 수 있다.
전술한 바와 같이, GUI 엘리먼트는 추가 상호작용 엘리먼트를 포함할 수 있다. 추가 상호 작용 엘리먼트의 사용자 선택은 하나 이상의 추가 GUI 엘리먼트가 GUI 엘리먼트 위에 디스플레이되게 할 수 있다. 추가 GUI 엘리먼트들은 각각 설문 조사가 사용자에 의해 완료에 이용 가능하다는 것을 나타낼 수 있다. 추가 GUI 엘리먼트들은 또한 개별 설문 조사들에 관한 메타데이터를 디스플레이할 수 있다. 이 경우, 추가 GUI 엘리먼트들은 설문 조사의 제목뿐만 아니라 설문 조사의 완료에 이용 가능한 보상을 디스플레이할 수 있다.
블록(650)에서, 키보드 인터셉터(240)는 설문 조사의 질문들과 관련된 데이터에 대한 요청을 발송한다. 요청은 개별적으로 도 3 및 도 4의 요청들(M350 또는 M470)의 일부로서 발송될 수 있다. 그런 다음, 설문 내의 질문들에 관한 데이터는 고유 추적 링크와 함께 사용자에게 디스플레이하기 위해 키보드 인터셉터(240)로 다시 발송된다. 데이터는 메시지들(M370 또는 M490)의 일부로서 키보드로 다시 발송될 수 있다.
일 예에서, 일단 고유 추적 링크와 연관된 웹사이트가 웹 브라우저 애플리케이션(250)을 통해 액세스되면, 키보드 인터셉터(240)는 GUI 엘리먼트와 연관된 설문 조사에서의 질문들이 키보드 애플리케이션(220)의 사용자 인터페이스 내에 디스플레이되게 한다. 이러한 방식으로, 사용자는 웹사이트에서 임의의 구매를 하는 것과 독립적으로 설문 조사를 완료할 수 있다. 다른 예에서, 키보드 인터셉터(240)는 사용자가 웹 사이트 상에서 구매를 완료한 후에 설문 조사의 디스플레이를 야기한다. 또 다른 예에서, 키보드 인터셉터(240)는 사용자가 웹사이트로부터 다른 곳으로 내비게이팅했다고 결정될 때 설문 조사의 디스플레이를 야기한다. 사용자에게 설문 조사를 디스플레이할 시기에 대한 결정은 설문 조사의 콘텐츠에 기초할 수 있고 키보드 인터셉터(240)의 제공자 및/또는 판매자와 같은 제3자에 의해 설정된 규칙에 따라 결정될 수 있다. 예를 들어, 설문 조사는 판매자의 웹사이트를 브라우징하는 사용자의 경험과 관련될 수 있다. 이 경우, 설문 조사는 사용자가 웹사이트로부터 다른 곳으로 내비게이팅했다는 결정에 따라 디스플레이될 수 있다.
설문 조사의 질문들은 키보드 애플리케이션(220)의 사용자 인터페이스 바로 위의 모바일 디바이스(200)의 사용자 인터페이스의 영역에 디스플레이될 수 있다. 대안으로, 설문 조사는 키보드의 적어도 일부를 오버레이하도록 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이될 수 있다. 추가의 예에서, 설문 조사는 모바일 디바이스(260)의 그래픽 사용자 인터페이스를 실질적으로 채우도록 디스플레이된다.
사용자는 키보드 인터셉터(240)를 사용하여 설문 조사 질문에 직접 응답함으로써 설문 조사를 완료할 수 있다. 사용자는 텍스트, 이미지, 비디오 및 오디오와 같은 임의의 포맷으로 답변을 제공할 수 있다. 예를 들어, 설문 조사는 사용자에게 구매 증명 등을 위해 최근 구매의 사진을 촬영하도록 요청할 수 있다. 그런 다음, 사용자는 그들의 구매의 사진을 설문 조사에 입력할 수 있다. 사진은 모바일 디바이스(200) 상의 갤러리 앱으로부터 선택될 수 있다. 대안으로, 키보드 인터셉터(240)는 사용자가 사진을 촬영할 수 있도록 모바일 디바이스(200)에서 동작하는 카메라 앱을 활성화할 수 있다. 사용자가 사진을 촬영하면, 설문 조사에서 질문에 대한 응답으로 키보드 인터셉터(240)에 의해 입력된다.
사용자가 설문 조사를 완료한 후에 새로운 엔트리가 데이터베이스(160)에 생성될 수 있다. 새로운 엔트리는 GUI의 선택과 연관된 식별자, 설문 조사 질문에 대한 사용자의 응답, 설문 조사 식별자, 사용자 식별자, 및 레코드 식별자 중 적어도 하나를 포함할 수 있다. 새로운 데이터베이스 엔트리의 데이터는 설문 조사와 연관된 판매자에게 통신될 수 있어서 판매자는 데이터베이스(160)와 연관된 엔티티에 보상을 제공할 수 있다. 판매자는 개별 사용자들에 의한 설문 조사들의 완료에 대한 보상들의 리스트를 데이터베이스(160)와 연관된 엔티티에 다시 발송할 수 있다. 리스트는 사용자의 개별 GUI 엘리먼트들의 선택과 연관된 식별자들을 더 포함할 수 있다. 그런 다음, 데이터베이스(160)와 연관된 엔티티는 사용자에게 보상의 비율을 카드에 적립(credit)할 수 있다. 사용자는 GUI의 선택과 연관된 식별자 및 사용자 식별자에 대해 데이터베이스에 쿼리함으로써 식별될 수 있다. 이 프로세스는 사용자 활동의 추적을 여전히 허용하면서, 사용자의 개인 정보 중 어느 것도 판매자와 서버(150) 사이에서 통신되지 않는 것을 보장한다.
관련된 예에서, 블록(630)에서, 하나 이상의 설문 조사들에 관한 데이터가 로케이팅되면, 레코드 식별자와 연관된 GUI 엘리먼트는 하나 이상의 설문 조사들이 이용가능하다는 것을 나타낼 수 있다. GUI 엘리먼트의 선택은, 이 예에서, 고유 추적 링크가 생성되게 하지만, 키보드 인터셉터(240)가 설문 조사에 관한 데이터를 요청하게 하지 않는다. 대신에, 사용자가 고유 추적 링크와 연관된 웹사이트를 브라우징함에 따라, 키보드 인터셉터(240)는 웹사이트에 대해 하나 이상의 설문 조사가 이용 가능하다는 표시가 키보드 애플리케이션(220)의 사용자 인터페이스 내에 디스플레이되게 할 수 있다. 표시는 하나 이상의 선택가능한 GUI 엘리먼트를 포함할 수 있다. 선택가능한 GUI 엘리먼트의 선택시, 키보드 인터셉터(240)는 로케이팅된 하나 이상의 설문 조사와 관련된 데이터에 대한 요청을 발송할 수 있거나, 이전에 저장된 하나 이상의 설문 조사와 관련된 데이터를 검색할 수 있다. 선택가능한 GUI 엘리먼트의 선택에 응답하여, 키보드 인터셉터(240)는 하나 이상의 추가 GUI 엘리먼트가 키보드 애플리케이션(220)의 사용자 인터페이스에 디스플레이되게 할 수 있다. 추가 GUI 엘리먼트들 각각은 설문 조사와 연관되고, 설문 조사와 관련된 메타데이터를 디스플레이할 수 있다. 추가 GUI 엘리먼트들 중 하나를 선택하면 선택된 설문 조사와 관련된 질문들이 디스플레이되게 한다. 이 경우, 사용자는 그들이 웹사이트에 도달한 후에만 설문 조사를 완료하도록 결정할 수 있다.
이제, 설문 조사와 관련된 제2 예가 설명될 것이다. 제2 예에서, 하나 이상의 설문 조사는 고유 추적 링크의 생성과 독립적으로 로케이팅될 수 있다. 이 예는 전술한 제2 쿠폰 코드 예와 유사하다.
제2 예의 제1 구현예에서, 키보드 인터셉터(240)는 이벤트 리스너 API를 통해 또는 키보드 애플리케이션(220)의 사용자 인터페이스에 제공된 검색 바를 통해 사용자에 의한 입력을 수신할 수 있다. 전술한 바와 같이, 키보드 인터셉터(240)는 검색 바에 대한 임의의 입력에 기초하여 검색 쿼리를 생성할 수 있다. 이 경우, 검색 쿼리에 기초하여 로케이팅된 데이터는 하나 이상의 설문 조사들을 포함할 수 있다. GUI 엘리먼트는 데이터의 로케이션과 연관될 수 있고, 추가적인 상호작용 엘리먼트들을 포함할 수 있다. 추가 상호작용 엘리먼트들은 하나 이상의 추가 GUI 엘리먼트들의 디스플레이를 야기하도록 선택될 수 있다. 하나 이상의 추가 GUI 엘리먼트들 각각은 GUI 엘리먼트 위의 영역에 디스플레이될 수 있고, 사용자에게 이용가능한 설문 조사에 대응할 수 있다. 설문 조사와 연관된 (추가의) GUI 엘리먼트의 선택은 대응하는 설문 조사가 모바일 디바이스(260)의 그래픽 사용자 인터페이스의 영역 내에 디스플레이되게 할 수 있다. 특히, (추가) GUI 엘리먼트의 선택은 키보드 인터셉터(240)가 설문 조사의 질문과 관련된 데이터에 대한 요청(M350 및 M480과 유사함)을 발송하게 한다. 데이터는 데이터베이스(160) 또는 로컬 스토리지(280)(M370 및 M490과 유사함)로부터의 메시지를 통해 키보드 인터셉터로 다시 통신될 수 있다. 그런 다음, 설문 조사는 설문 조사에 관한 데이터가 검색되자마자 디스플레이될 수 있다. 이는 사용자가 반드시 설문 조사와 연관된 웹사이트를 브라우징할 필요는 없기 때문이다.
일부 예에서, 키보드 인터셉터(240)에 의해 제공되는 검색 바는 웹 사이트에 대한 URL, 쿠폰 코드(들), 설문 조사(들), 및 미디어 중 하나 이상을 로케이팅하는 데 사용될 수 있다. 따라서, 키보드 인터셉터(240)는 키보드 애플리케이션(220)의 사용자 인터페이스 내의 각각의 아이템을 별개의 GUI 엘리먼트로서 디스플레이할 수 있다. 따라서, 예를 들어, 쿠폰 코드들 및 설문 조사들 모두가 단일 판매자에 대응하여 발견되는 것이 가능하다. 이 경우, 복수의 GUI 엘리먼트가 디스플레이될 수 있고, 각각은 : 웹 사이트에 대한 URL, - 적어도 하나의 거래가 사용자가 웹 사이트에서 구매하는 경우에 이용 가능함-, 쿠폰 코드, 및 설문 조사 중 임의의 것에 대응한다. 따라서, 특정 판매자로부터 이용가능한 모든 상이한 오퍼들을 보여주는 복수의 GUI 엘리먼트들이 사용자에게 디스플레이될 수 있다.
제2 예의 제2 구현예에서, 키보드 인터셉터(240)는 사용자가 브라우징하고 있는 현재 웹사이트의 URL을 획득하기 위해 모바일 디바이스(200)의 GUI의 콘텐츠를 모니터링할 수 있다. 이는 키보드 인터셉터(240)가 GUI의 스크린샷을 획득하고 이미지 분석을 수행하여 URL을 결정하는 것을 포함할 수 있다. 다른 예에서, 키보드 인터셉터(240)는 현재 웹사이트의 URL을 결정하기 위해 접근성 서비스(290)를 통해 획득된 GUI의 현재 콘텐츠를 분석할 수 있다.
다른 예에서, 현재 웹사이트의 URL은 전술한 바와 같이 웹 브라우저 애플리케이션(250)과 연관된 브라우저 확장(255)에 의해 검출될 수 있다. 브라우저 확장(255)은 그런 다음 검출된 URL을 키보드 애플리케이션(240)에 통신할 수 있다.
전술한 바와 같이, 획득된 URL은 검색 쿼리를 생성하는데 사용될 수 있다. 데이터는 검색 쿼리에 기초하여 로케이팅되고, 데이터는 레코드 식별자를 포함하는 레코드와 연관된다. 이 예에서, 데이터는 하나 이상의 설문 조사 질문을 포함하는 설문 조사를 포함한다. 키보드 애플리케이션(220)의 사용자 인터페이스 내의 GUI 엘리먼트는 레코드 식별자와 연관된다. GUI 엘리먼트는 검색 쿼리에 기초하여 하나 이상의 설문 조사가 로케이팅되었음을 나타낼 수 있다. 전술한 바와 같이, GUI 엘리먼트는, 선택될 때, 하나 이상의 추가 GUI 엘리먼트가 디스플레이되게 하는 추가 상호작용 엘리먼트를 포함할 수 있다. 각각의 추가 GUI 엘리먼트는 로케이팅된 설문 조사와 연관된다. 로케이팅된 설문 조사와 연관된 GUI 엘리먼트의 사용자의 선택에 응답하여, 키보드 인터셉터(240)는 설문 조사에서의 질문들을 검색하고, 질문들이 모바일 디바이스(260)의 그래픽 사용자 인터페이스 내에 디스플레이되게 한다.
설문 조사가 완료되면, 데이터베이스(160)에 새로운 엔트리가 생성된다. 새로운 엔트리는 GUI의 선택과 연관된 식별자, 설문 조사 질문에 대한 사용자의 응답, 설문 조사 식별자, 및 사용자 식별자를 포함한다. 이 새로운 엔트리에 저장된 데이터는 판매자로부터 보상을 획득하기 위해 데이터베이스(160)와 연관된 엔티티에 의해 사용될 수 있다.
도 11은 상술된 실시예들에 따른 모바일 디바이스(200)와 같은 모바일 디바이스에 의해 수행되는 단계들을 개략적으로 개시한다. 블록(1110)에서, 방법(1100) 은 모바일 디바이스(200) 상에서 실행하는 키보드 애플리케이션 (220)에 의해, 제 1 입력을 수신하는 단계를 수반한다. 제1 입력은 제1 입력을 제공하는 사용자로부터 획득될 수 있다. 사용자는 모바일 디바이스 상에서 실행되는 애플리케이션 내의 필드에 또는 예를 들어, 키보드 애플리케이션(220)에 의해 디스플레이되는 검색 바에 입력을 제공하고 있을 수 있다. 검색 바는 키보드가 활성화될 때마다 디스플레이되거나, 키보드의 사용자 인터페이스 내의 옵션을 선택함으로써 디스플레이될 수 있다.
다른 예에서, 제1 입력은 디바이스 상에서 실행되는 현재 애플리케이션의 표시일 수 있다. 표시는 애플리케이션을 고유하게 식별하는 애플리케이션 식별자를 포함할 수 있다.
다른 예에서, 현재 애플리케이션이 웹 브라우저 애플리케이션(250)인 경우, 제1 입력은 사용자가 현재 보고 있는 웹 페이지의 URL, 또는 URL과 연관된 도메인 네임을 포함할 수 있다. 예를 들어, 키보드 애플리케이션(220)은 모바일 디바이스(200)의 GUI 내에 디스플레이된 현재 콘텐츠를 나타내는 데이터를 수신하고, 현재 콘텐츠를 나타내는 데이터를 분석함으로써 URL 및/또는 도메인 네임을 결정할 수 있다. URL은 위에서 설명된 방법들 중 임의의 방법에 의해, 예를 들어, 모바일 디바이스의 현재 GUI의 스크린샷을 획득하고, 스크린샷에 대해 이미지 분석을 수행함으로써, 모바일 디바이스 상에서 실행되는 접근성 서비스(290)의 사용을 통해, 또는 현재 웹페이지를 디스플레이하기 위해 사용되고 있는 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장(255)을 통해 획득될 수 있다.
블록(1120)에서, 방법(1100)은 키보드 애플리케이션(220)에 의해, 제1 입력에 기초하여 검색 쿼리를 생성하는 단계를 포함한다. 검색 쿼리는 전술한 바와 유사하게 형성될 수 있다. 제1 입력이 음성 입력인 경우, 검색 쿼리는 먼저 음성-텍스트 처리를 사용하여 음성 입력을 텍스트로 변환함으로써 생성될 수 있다.
블록(1130)에서, 방법(1100)은 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계를 수반하며, 여기서 데이터는 레코드와 연관되고, 레코드는 레코드 식별자를 포함한다. 데이터는 : 쿠폰 코드 및 레코드와 연관된 하나 이상의 설문 조사 질문 중 적어도 하나를 포함한다.
블록(1140)에서, 방법(1100)은 키보드 애플리케이션(220)의 사용자 인터페이스 내에서, 모바일 디바이스의 그래픽 사용자 인터페이스(GUI)의 엘리먼트를 레코드 식별자와 연관시키는 단계를 수반한다. GUI 엘리먼트는 로케이팅된 데이터와 연관된 하나 이상의 메타데이터를 디스플레이할 수 있다. 데이터가 하나 이상의 쿠폰 코드들을 포함하는 경우, GUI 엘리먼트는 특정 쿠폰 코드에 관한 정보를 디스플레이할 수 있다. 이는 쿠폰 코드 자체 및/또는 쿠폰 코드의 사용과 연관된 할인일 수 있다. 데이터가 설문 조사를 포함하는 경우, GUI 엘리먼트는 설문 조사의 제목 및/또는 설문 조사를 완료하기 위해 제공되는 보상과 같은 설문 조사와 연관된 정보를 디스플레이할 수 있다.
블록(1150)에서, 방법(1100)은 사용자에 의한 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계를 수반한다. 제2 입력을 수신한 것에 응답하여, 키보드 애플리케이션은 로케이팅된 데이터와 연관된 액션을 수행한다. 로케이팅된 데이터가 쿠폰 코드를 포함하는 경우, 방법(1100)은 블록(1160)으로 진행할 수 있고, 이에 의해 액션은 쿠폰 코드를 모바일 디바이스 상에서 실행되는 애플리케이션 내의 텍스트 필드로 전달하는 것을 수반한다. 전술한 바와 같이, 쿠폰 코드는 메모리에 저장될 수 있고, 사용자가 텍스트 필드를 선택할 때 예를 들어, 클립보드를 통해 키보드 애플리케이션(220)에 의한 삽입을 위해 액세스 가능하게 될 수 있다. 쿠폰 코드는 키보드 애플리케이션(220) 또는 웹 브라우저 확장(255)에 의해 텍스트 필드로 전달될 수 있다.
로케이팅된 데이터가 하나 이상의 설문 조사 질문들을 포함하는 경우, 방법(1100)은 블록(1170)으로 진행할 수 있고, 이에 의해 액션은 키보드 애플리케이션(220)에 의해, 모바일 디바이스(200)의 GUI에 하나 이상의 쿠폰 코드들을 디스플레이하는 것을 수반한다.
쿠폰 코드들 및 하나 이상의 설문 조사 질문들 모두가 블록(1130)에 로케이팅될 수 있다는 것이 이해된다. 이 경우, 로케이팅된 데이터의 레코드 식별자와 연관된 하나 초과의 GUI 엘리먼트가 있을 수 있고, GUI 엘리먼트들 각각은 개별 쿠폰 코드 및 설문 조사에 대응한다.
일부 경우에, 제2 입력을 수신한 것에 응답하여, 키보드 애플리케이션(220)은 사용자 입력 없이, URL 및 랜덤하게 생성된 식별자를 포함하는 고유 추적 링크를 생성할 수 있고, URL은 로케이팅된 데이터와 연관된 웹사이트에 대한 것이다. 키보드 애플리케이션(220)은 그런 다음 예를 들어, 고유 추적 링크를 웹 브라우저 애플리케이션(250)의 어드레스 바로 전달할 수 있다. 다른 예에서, 키보드 애플리케이션(220)은 현재 액세스되고 있는 임의의 애플리케이션이 iOS 상의 안드로이드 WebView 또는 Web View들과 같은 시스템 서비스를 통해 URL과 연관된 웹사이트를 디스플레이하게 할 수 있다. 사용자가 웹사이트를 내비게이팅하면 쿠폰 코드 및/또는 하나 이상의 설문 조사 질문들이 사용자에게 제공될 수 있다.
로케이팅된 데이터가 쿠폰 코드를 포함할 때, 방법(1100)은 키보드 애플리케이션(220)에 의해, 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드라고 결정하는 단계를 더 포함할 수 있다. 텍스트 필드가 쿠폰 코드에 대해 지정되는 것으로 결정하는 것은 전술한 바와 같이 수행될 수 있고, 키보드 애플리케이션(220)에 의해, 모바일 디바이스의 GUI의 스크린샷을 분석하는 것, 또는 키보드 애플리케이션에 의해, 자동 채움 서비스 또는 웹 브라우저 확장(255)으로부터 지정을 수신하는 것을 포함할 수 있다.
방법(1100)은, 키보드 애플리케이션(220)에 의해 그리고 사용자 입력 없이, GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 생성하는 단계를 추가로 수반할 수 있다. 레코드 식별자 및 사용자 식별자와 연관된 랜덤하게 생성된 식별자는 데이터베이스(160)에 저장될 수 있다. 그런 다음, 웹 브라우저 애플리케이션(250)은 GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 포함하는 쿠키를 저장할 수 있다. 일부 예들에서, 키보드 애플리케이션(220)(또는 존재하는 경우 웹 브라우저 확장(255))은 새로운 탭이 웹 브라우저 애플리케이션 내에서 열리도록 할 수 있어서, 쿠키는 새로운 탭이 열릴 때 저장된다. 그런 다음, 키보드 애플리케이션(220)(또는 웹 브라우저 확장(255))은 쿠키가 저장되었을 때 새로운 탭이 닫히게 할 수 있다.
하나 이상의 설문 조사 질문이 디스플레이될 때, 방법(1100)은 그런 다음 사용자에 의한 설문 완료에 대응하는 하나 이상의 추가 입력들을 수신하는 단계를 더 포함할 수 있다. 하나 이상의 추가 입력들을 수신한 것에 응답하여, 방법은 랜덤하게 생성된 식별자, 사용자 식별자, 및 하나 이상의 추가 입력들을 나타내는 데이터를 데이터베이스에 저장하는 단계를 추가로 포함할 수 있다. 저장된 랜덤하게 생성된 식별자, 사용자 식별자, 및 하나 이상의 추가 입력들을 나타내는 데이터는 판매자가 사용자가 설문 조사를 완료했다고 결정하는 것을 허용할 수 있다. 설문 조사의 완료를 나타내는 추가 GUI 엘리먼트가 디스플레이될 수 있다. 그런 다음, 사용자가 설문 조사를 완료했다는 결정에 응답하여 판매자에 의해 보상이 발행될 수 있다. 보상은 키보드 애플리케이션(220)과 연관된 엔티티에 발행될 수 있다. 그런 다음, 키보드 애플리케이션(220)과 연관된 엔티티는 보상의 일부를 사용자에게 수여할 수 있다.
도 12는 키보드 인터셉터(240), 웹 브라우저 확장(255) 및 서버(150) 사이의 통신 흐름(1200)을 예시하는 프로세스 흐름도를 도시하고, 고유 추적 링크가 생성되고 쿠폰 코드가 쿠폰 코드에 대해 지정된 텍스트 필드에 삽입된다. S1210단계에서, 키보드 인터셉터(240) 및 웹 브라우저 확장(255)은 등록 절차를 수행한다. 이 절차는 웹 브라우저 확장(255)이 키보드 인터셉터(240)와 통신할 수 있게 한다.
S1215단계에서, 웹 브라우저 확장(255)은 웹 브라우저 애플리케이션(250)에 의해 액세스되는 현재 웹 페이지의 URL을 검출한다.
단계 S1220에서, URL은 메시지 M1220을 통해 웹 브라우저 확장(255)으로부터 키보드 인터셉터(240)로 송신된다. 메시지(M1220)의 유형은 키보드 인터셉터(240)와 웹 브라우저 확장(255) 사이의 통신 수단에 의존한다. 전술한 바와 같이, 통신은 모바일 디바이스(200) 상의 API를 통해 이루어질 수 있거나, 통신은 모바일 디바이스(200) 상의 공유 스토리지를 통해 이루어질 수 있거나, 통신은 서버(150)(미도시)를 통해 이루어질 수 있다.
단계 S1225에서, 키보드 인터셉터(240)는 수신된 URL에 기초하여 검색 쿼리를 생성한다. 키보드 인터셉터(240)는 도메인 네임, 키워드 및 URL로부터 ccTLD 중 하나 이상을 추출하여 검색 쿼리를 생성할 수 있다.
단계 S1230에서, 키보드 인터셉터(240)는 추가 메시지(M1230)를 통해 검색 쿼리를 서버(150)에 송신한다. 서버(150)는 전술한 바와 같이 검색 쿼리와 연관된 관련 데이터에 대해 데이터베이스에 쿼리할 수 있다.
단계 S1235에서, 검색된 데이터는 추가 메시지(M1235)를 통해 서버(150)로부터 키보드 인터셉터(240)로 송신된다.
단계 S1240에서, 키보드 인터셉터(240)는, 위에서 논의된 바와 같이, 모바일 디바이스의 GUI에 디스플레이되고 로케이팅된 데이터와 연관된 엘리먼트의 선택을 수신한다. GUI 엘리먼트의 선택에 응답하여, 키보드 인터셉터(240)는 고유 추적 링크를 생성한다.
단계 S1245에서, GUI 엘리먼트의 선택에 응답하여, 키보드 인터셉터(240)는 추가 메시지(M1245)를 통해 고유 추적 링크를 웹 브라우저 확장(255)에 송신한다.
단계 S1250에서, 웹 브라우저 확장(255)은 고유 추적 링크를 웹 브라우저 애플리케이션(250)에 전달한다. 웹 브라우저 확장(255)은 웹 브라우저 애플리케이션(250) 내에 새로운 탭을 열고, 고유 추적 링크를 새로운 탭에 전달하고, 쿠키가 웹 브라우저 애플리케이션(250)에 의해 저장되었을 때 새로운 탭을 닫음으로써 이를 수행할 수 있다.
단계 S1255에서, 키보드 인터셉터(240)는 사용자가 웹 페이지 내의 필드를 선택했음을 검출하고, 추가 메시지(M1255)를 통해 선택의 표시를 웹 브라우저 확장(255)에 송신한다.
단계 S1260에서, 웹 브라우저 확장(255)은 선택된 텍스트 필드가 쿠폰 코드에 지정된 텍스트 필드임을 검출한다.
단계 S1265에서, 웹 브라우저 확장(255)은 선택된 필드가 추가 메시지(S1265)를 통해 쿠폰 코드에 대해 지정된 텍스트 필드라는 표시를 송신한다.
단계 S1270에서, 키보드 인터셉터(240)는 쿠폰 코드에 지정된 텍스트 필드에 쿠폰 코드를 삽입한다.
예시적인 구현예에서, 단계들(S1210 내지 S1270) 모두가 수행될 필요는 없다는 것이 이해된다. 예를 들어, S1210 내지 S1250 단계는, 예를 들어, 검색된 데이터에서 쿠폰 코드가 발견되지 않을 때 또는 사용자가 쿠폰 코드를 이용하지 않기를 원할 때 수행될 수 있다. 유사하게, 단지 단계 S1255 내지 S1270만이, 예를 들어, 사용자가 캐시백 인센티브를 이용하지 않기를 원할 때 또는 사용자가 쿠키가 그들의 웹 브라우저 애플리케이션(250) 상에 저장되는 것을 방지하도록 선택한 경우에 수행될 수 있다.
추가 예들에서, 키보드 인터셉터(240)에 의해 수행되는 하나 이상의 단계들은 웹 브라우저 확장(255)에 의해 수행될 수 있다. S1240 단계에서의 고유 추적 링크 생성이 일 예이다. 키보드 인터셉터(240)에 의해 생성되는 대신에, GUI 엘리먼트의 선택에 응답하여, 키보드 인터셉터(240)는 웹 브라우저 확장(255)이 고유 추적 링크를 생성하게 할 수 있다. 또 다른 예는 단계 S1270에서 쿠폰 코드를 지정된 필드에 삽입하는 것이다. 이 경우에, 단계 S1260에서 선택된 텍스트 필드가 쿠폰 코드에 지정된 텍스트 필드임을 검출한 것에 응답하여, 웹 브라우저 확장(255)은 텍스트 필드에 쿠폰 코드를 삽입할 수 있다.
추가 예들에서, 흐름(1200)은 대안으로 키보드 인터셉터(240)를 전혀 사용하지 않고 진행될 수 있다. 예를 들어, 웹 브라우저 확장(255)은 개별적으로 단계 S1225, S1230, S1235 및 S1240을 수행하여 검출된 URL에 기초하여 검색 쿼리를 생성하고, 검색 쿼리를 서버(150)에 송신하고, 서버(150)로부터 로케이팅된 데이터를 수신하고, GUI 엘리먼트의 선택에 응답하여 고유 추적 링크를 생성할 수 있다. 이 경우, 웹 브라우저 애플리케이션(250)과 연관된 웹 브라우저 확장(255)은 데스크탑 웹 브라우저 확장을 더 가깝게 모방한다.
미디어 디스플레이
추가 예에서, 키보드 인터셉터(240)는 키보드 SDK(230)와 함께 엔티티와 연관된 키보드 애플리케이션(220)에 의해 제공될 수 있다. 예를 들어, 키보드 애플리케이션(220)은 엔티티의 공식 앱일 수 있다. 이 경우에, 키보드 인터셉터(240)는 사용자에게 애드혹(ad-hoc) 기반으로 데이터를 디스플레이함으로써 추가적인 상호 작용 가능성을 제공한다. 특히, 데이터베이스(160)는 키보드 애플리케이션(220)을 제공하는 엔티티와 연관된 데이터를 포함할 수 있고, 이 데이터는 키보드 인터셉터(240)에 통신될 수 있다. 예를 들어, 키보드 애플리케이션(220)이 활성화되어 모바일 디바이스(200)의 그래픽 사용자 인터페이스에 키보드를 디스플레이할 때마다, 엔티티는 키보드 위에 하나 이상의 미디어 아이템을 디스플레이하기 위해 키보드 인터셉터(240)를 사용할 수 있다. 이 경우, 키보드 인터셉터(240)는 엔티티와 연관된 레코드 내의 데이터에 대한 요청을 서버(150)에 발송할 수 있다. 어떤 데이터가 키보드 인터셉터(240)로 다시 통신되는지는 엔티티에 의해 정의된 규칙들의 세트에 의존할 수 있다. 일 예에서, 데이터는 엔티티와 연관된 특정 광고 캠페인과 관련될 수 있다. 데이터는 사용자가 엔티티와 연관된 웹사이트를 방문하도록 유인할 수 있는 텍스트, 이미지, 비디오, 및/또는 오디오 중 임의의 것과 같은 미디어를 포함할 수 있다. 일 경우에, 미디어 아이템들 중 임의의 것의 선택은 전술된 방법들 중 임의의 것에 따라 고유 추적 링크를 생성할 것이다. 다른 예에서, 브랜드는 사용자로부터의 입력을 요구하지 않고 하나 이상의 설문 조사와 연관된 메타데이터를 디스플레이하기 위해 키보드 인터셉터(240)를 사용할 수 있다. 설문 조사와 연관된 메타데이터 및 설문 조사 질문 자체는 데이터베이스에서 검색될 수 있다. 이는 키보드가 활성화될 때마다 엔티티가 사용자에게 도달할 수 있다.
일부 예에서, 키보드 SDK(230)는 엔티티와 연관된 키보드 애플리케이션(220)을 사용할 때 사용자에 의해 액세스된 미디어 및/또는 콘텐츠를 키보드 인터셉터(240)에 전달하도록 구성된다. 이러한 방식으로, 키보드 인터셉터(240)는 데이터를 검색하고 디스플레이하기 위해 서버(150)와 통신할 필요가 없다. 대신에, 키보드 애플리케이션(220)과 관련하여 저장된 데이터는 사용자에게 디스플레이하기 위해 키보드 인터셉터(240)로 통신될 수 있다. 예를 들어, 키보드가 활성화될 때마다, 키보드 애플리케이션(220)은 백그라운드에서 실행되고, 데이터를 키보드 인터셉터(240)에 통신할 수 있다. 일 예에서, 키보드 애플리케이션(220)은 미디어 및/또는 콘텐츠를 획득하기 위해 엔티티와 연관된 서버와 통신한다. 다른 예에서, 키보드 애플리케이션(220)은 모바일 디바이스(200) 상에 로컬에 저장된 미디어 및/또는 콘텐츠를 로케이팅시킨다. 키보드 SDK(230)는 또한 어떤 미디어가 사용자에 의해 액세스되었는지의 결정을 가능하게 하는 추적 기능을 제공할 수 있다. 이것은 다음에 사용자에게 디스플레이할 것을 결정하는 데 사용할 수 있다.
전술한 바와 같이, 키보드 인터셉터(240)는 텍스트, 이미지, 비디오 및 오디오의 형태로 사용자로부터 입력을 수신하도록 구성될 수 있다. 추가 예에서, 키보드 인터셉터(240)는 판매자의 앱의 일부로서 키보드 SDK(230)와 함께 제공될 수 있다. 이 경우, 사용자가 예를 들어, 사용자가 물리적 상점에서 구매를 한 경우, 사용자가 키보드 인터셉터(240)의 사용과 관련되지 않은 판매자로부터의 구매를 했을 때, 키보드 인터셉터(240)는 사용자가 그들의 물리적 영수증의 이미지를 입력하도록 허용할 수 있다. 이는 사용자가 판매자의 앱 외부로부터 구매 증명을 업로드하는 것을 허용할 수 있다.
다른 예에서, 키보드 인터셉터(240)는 QR(Quick Response) 코드와 같은 코드의 이미지를 수용하도록 구성될 수 있다. QR 코드가 웹사이트에 대응하는 URL을 인코딩하는 경우, 키보드 인터셉터(240)는 URL을 분석하여 매칭하는 URL이 데이터베이스(160)에 나타나는지 여부를 결정할 수 있다. 긍정적인 매치가 발견되면, 키보드 인터셉터(240)는 사용자가 QR 코드로 인코딩된 URL을 통하는 대신에, 전술한 바와 같이 생성된 고유 추적 링크를 통해 웹사이트로 향하게 할 수 있다.
상기 실시예들은 예시적인 예들로서 이해되어야 한다. 추가적인 실시예들이 고려된다.
임의의 하나의 실시예와 관련하여 설명된 임의의 특징은 단독으로 또는 설명된 다른 특징들과 조합하여 사용될 수 있고, 또한 실시예들 중 임의의 다른 실시예의 하나 이상의 특징, 또는 실시예들 중 임의의 다른 실시예의 임의의 조합과 조합하여 사용될 수 있다는 것이 이해되어야 한다. 또한, 첨부된 청구항들에 정의된 본 개시의 범위를 벗어나지 않으면서, 위에서 설명되지 않은 등가물들 및 수정예들이 또한 이용될 수 있다.

Claims (50)

  1. 방법에 있어서,
    모바일 디바이스 상의 키보드 애플리케이션으로 사용자에 의한 제1 입력을 수신하는 단계;
    상기 제1 입력에 기초하여 검색 쿼리(search query)를 생성하는 단계;
    상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계(locating) - 상기 데이터는 레코드(record)와 연관되고, 상기 레코드는 레코드 식별자를 포함함 -;
    상기 키보드 애플리케이션의 사용자 인터페이스 내에서, 상기 모바일 디바이스의 그래픽 사용자 인터페이스, GUI, 엘리먼트를 상기 레코드 식별자와 연관시키는 단계(associating);
    상기 사용자에 의한, 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계;
    상기 제2 입력을 수신한 것에 응답하여, URL 및 상기 GUI 엘리먼트의 선택과 연관된 식별자를 포함하는 고유 추적 링크(unique tracking link)를 생성하는 단계 - 상기 URL은 로케이팅된 상기 데이터와 연관된 웹사이트를 대한 것임 -;
    상기 고유 추적 링크를 상기 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션에 전달함으로써, 상기 웹사이트에 액세스하는 단계; 및
    상기 웹 사이트에 액세스하는 동안 상기 웹 브라우저 애플리케이션에 의해, 상기 GUI 엘리먼트의 선택과 연관된 상기 식별자를 포함하는 쿠키를 저장하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 입력은 하나를 통해 또는 사용자에 의해 상기 모바일 디바이스 상에서 실행되는 애플리케이션 내의 필드로 입력되고, 상기 방법은, 상기 제1 입력이 제공되는 필드가,
    유니폼 리소스 로케이터(Uniform Resource Locator)들;
    텍스트;
    쿠폰 코드들; 및
    인터넷 검색들 중 하나에 대해 지정된 필드인 것을 결정하는 단계를 더 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 데이터를 로케이팅하는 단계는 애플리케이션 프로그래밍 인터페이스, API, 호출(call)을 서버로 포워딩하는 단계를 포함하는, 방법.
  4. 제3항에 있어서, 상기 고유 추적 링크를 생성하는 단계는 상기 고유 추적 링크를 요청하는 상기 서버에 추가 API 호출을 포워딩하는 단계를 포함하고, 상기 추가 API 호출은 상기 레코드 식별자를 포함하는, 방법.
  5. 제1항 또는 제2항에 있어서, 상기 데이터를 로케이팅하는 단계는 상기 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 고유 추적 링크는 상기 GUI 엘리먼트의 선택과 연관된 상기 식별자로 인코딩된 상기 URL을 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 제1 입력은 상기 사용자에 의해 타이핑된 텍스트이고, 상기 방법은 상기 검색 쿼리를 생성하기 전에 상기 사용자가 타이핑을 완료한 후 미리 결정된 양의 시간을 대기하는 단계를 더 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 데이터는 판매자 데이터이고, 상기 URL은 상기 판매자와 연관된 웹사이트에 대한 리다이렉트(redirect) URL인, 방법.
  9. 제8항에 있어서, 상기 판매자 데이터는,
    상기 판매자와 연관된 로고; 및
    상기 판매자와 연관된 활성 거래(active deal)를 더 포함하고,
    상기 GUI 엘리먼트를 상기 레코드 식별자와 연관시키는 단계는 상기 판매자와 연관된 로고 및 상기 활성 거래를 표시하는 텍스트를 디스플레이하는 단계를 포함하는, 방법.
  10. 제8항에 있어서, 상기 쿠키는 상기 판매자가 상기 사용자에 의해 구매가 이루어졌다고 결정할 수 있게 하는, 방법.
  11. 제10항에 있어서, 상기 사용자에 의해 이루어진 상기 구매에 응답하여 상기 판매자에 의해 발행된 보상을 수신하는 단계를 더 포함하는, 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 데이터를 수신한 것에 응답하여, 상기 데이터가 로케이팅되었음을 나타내는 아이콘을 상기 키보드 애플리케이션의 사용자 인터페이스 내에 디스플레이하는 단계;
    상기 사용자에 의한, 상기 아이콘의 선택에 대응하는 추가 입력을 수신하는 단계를 더 포함하고,
    상기 GUI 엘리먼트를 디스플레이하는 단계는 상기 추가 입력을 수신한 것에 응답하는, 방법.
  13. 제1항에 있어서, 상기 GUI 엘리먼트의 선택과 관련된 상기 식별자는 랜덤하게 생성되는, 방법.
  14. 명령(instruction)들이 모바일 디바이스의 프로세서에 의해 수행될 때, 상기 모바일 디바이스 상에서 실행되는 키보드 애플리케이션이 제1항 내지 제13항 중 어느 한 항에 따른 방법을 수행하게 하는 상기 명령들을 포함하는, 컴퓨터 판독가능 메모리.
  15. 시스템에 있어서,
    제14항에 따른 컴퓨터 판독가능 메모리;
    복수의 레코드들을 포함하는 데이터베이스로서, 각각의 상기 레코드는,
    레코드 식별자;
    데이터; 및
    상기 데이터와 연관된 웹 사이트의 URL을 포함하는, 상기 데이터베이스; 및
    상기 데이터베이스에 통신 가능하게 연결되고, 상기 API 호출을 수신한 것에 응답하여 상기 데이터베이스에서 상기 데이터를 로케이팅하도록 구성된 서버를 포함하는, 시스템.
  16. 방법에 있어서,
    모바일 디바이스 상에서 실행되는 키보드 애플리케이션에 의해, 제1 입력을 수신하는 단계;
    상기 키보드 애플리케이션에 의해, 상기 제1 입력에 기초하여 검색 쿼리를 생성하는 단계;
    상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계(locating) - 로케이팅된 상기 데이터는 레코드와 연관되고, 상기 레코드는 레코드 식별자를 포함하고, 상기 로케이팅된 데이터는,
    쿠폰 코드; 및
    하나 이상의 설문 조사 질문(survey question)들 중 적어도 하나를 포함하고;
    상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 그래픽 사용자 인터페이스, GUI, 엘리먼트를, 상기 로케이팅된 데이터의 레코드 식별자와 연관시키는 단계;
    상기 키보드 애플리케이션에 의해, 사용자에 의한 상기 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계;
    상기 제2 입력을 수신한 것에 응답하여, 상기 키보드 애플리케이션에 의해, 상기 로케이팅된 데이터와 연관된 액션(action)을 수행하는 단계를 포함하고, 상기 액션은,
    상기 로케이팅된 데이터와 연관된 쿠폰 코드가 상기 모바일 디바이스 상에서 실행되는 애플리케이션 내의 텍스트 필드 내로 전달되게 하는 단계; 및
    상기 모바일 디바이스의 상기 GUI에 로케이팅된 데이터와 연관된 하나 이상의 설문 조사 질문들을 디스플레이하는 단계 중 하나를 포함하는, 방법.
  17. 제16항에 있어서,
    상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 상기 GUI에 디스플레이된 현재 콘텐츠를 나타내는 데이터를 수신하는 단계; 및
    상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 상기 GUI에 디스플레이된 현재 콘텐츠를 나타내는 상기 데이터를 분석함으로써 상기 사용자에 의해 현재 시청되고 있는 웹사이트와 연관된 도메인 네임(domain name)을 결정하는 단계를 더 포함하고,
    상기 제1 입력은 결정된 상기 도메인 네임을 포함하는, 방법.
  18. 제17항에 있어서, 상기 모바일 디바이스의 상기 GUI에 디스플레이된 상기 현재 콘텐츠를 나타내는 데이터는 상기 모바일 디바이스의 상기 GUI의 스크린샷을 포함하는, 방법.
  19. 제17항에 있어서, 상기 GUI에 디스플레이된 상기 현재 콘텐츠는 상기 모바일 디바이스 상에서 동작하는 접근성 서비스(accessibility service)로부터 수신된, 방법.
  20. 제16항에 있어서,
    상기 키보드 애플리케이션에 의해, 그리고 상기 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장(web browser extension)으로부터, 상기 웹 브라우저 애플리케이션을 통해 현재 액세스되고 있는 웹사이트의 URL을 수신하는 단계를 더 포함하고, 및
    상기 제1 입력은 수신된 상기 URL과 연관된 도메인 네임을 포함하는, 방법.
  21. 제16항에 있어서,
    상기 키보드 애플리케이션에 의해, 그리고 상기 모바일 디바이스 상에서 실행되고 현재 액세스되고 있는 애플리케이션으로부터, 상기 애플리케이션을 고유하게 식별하는 상기 애플리케이션과 연관된 식별자를 수신하는 단계를 더 포함하고,
    상기 제1 입력은 상기 애플리케이션과 연관된 식별자를 포함하는, 방법.
  22. 제16항 내지 제21항 중 어느 한 항에 있어서,
    상기 제2 입력을 수신한 것에 응답하여,
    상기 키보드 애플리케이션에 의해 그리고 사용자 입력 없이, 상기 URL 및 랜덤하게 생성된 식별자를 포함하는 고유 추적 링크를 생성하는 단계 - 상기 URL은 로케이팅된 데이터와 연관된 웹사이트에 대한 것임 -; 및
    상기 키보드 애플리케이션에 의해, 상기 고유 추적 링크를 상기 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션의 어드레스 바(address bar)에 전달하는 단계를 더 포함하는, 방법.
  23. 제16항 내지 제22항 중 어느 한 항에 있어서, 상기 키보드 애플리케이션에 의해, 상기 쿠폰 코드를 메모리에 저장하는 단계를 더 포함하는, 방법.
  24. 제16항 내지 제23항 중 어느 한 항에 있어서, 상기 키보드 애플리케이션에 의해, 상기 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드인 것을 결정하는 단계를 더 포함하는, 방법.
  25. 제24항에 있어서, 상기 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드라고 결정하는 단계는, 상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 상기 GUI의 스크린샷을 분석하는 단계를 포함하는, 방법.
  26. 제24항에 있어서, 상기 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드라고 결정하는 단계는, 상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스 상에서 동작하는 자동 채움 서비스(autofill service)로부터 필드 지정 유형을 수신하는 단계를 포함하는, 방법.
  27. 제24항에 있어서, 상기 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드라고 결정하는 단계는, 상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장으로부터 필드 지정 유형을 수신하는 단계를 포함하는, 방법.
  28. 제16항 내지 제27항 중 어느 한 항에 있어서, 상기 제2 입력을 수신한 것에 응답하여,
    상기 키보드 애플리케이션에 의해 그리고 사용자 입력 없이, 상기 GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 생성하는 단계;
    상기 레코드 식별자 및 사용자 식별자와 연계하여 랜덤하게 상기 생성된 식별자를 데이터베이스에 저장하는 단계;
    상기 웹 브라우저 애플리케이션에 의해, 상기 GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 포함하는 쿠키를 저장하는 단계를 포함하는, 방법.
  29. 제28항에 있어서,
    상기 웹 브라우저 애플리케이션 내에서 새로운 탭이 열리도록 하는 단계 - 상기 쿠키는 상기 새로운 탭이 열릴 때 저장됨 -; 및
    상기 쿠키가 저장되면 상기 새로운 탭이 닫히도록 하는 단계를 더 포함하는, 방법.
  30. 제16항에 있어서,
    상기 사용자에 의한 하나 이상의 추가 입력들을 수신하는 단계 - 상기 추가 입력들은 하나 이상의 설문 조사 질문들의 완료에 대응함 -; 및
    데이터베이스에, 랜덤하게 생성된 식별자 및 사용자 식별자와 연관하여 하나 이상의 추가 입력들을 나타내는 데이터를 저장하는 단계를 더 포함하는, 방법.
  31. 명령들이 모바일 디바이스의 프로세서에 의해 수행될 때, 상기 모바일 디바이스 상에서 실행되는 키보드 애플리케이션이 제16항 내지 제30항 중 어느 한 항에 따른 방법을 수행하게 하는 상기 명령들을 포함하는, 유형(tangible)의 비일시적 컴퓨터 판독가능 메모리.
  32. 시스템에 있어서,
    제31항에 따른 유형의 비일시적 컴퓨터 판독가능 메모리;
    복수의 레코드들을 포함하는 데이터베이스로서, 각각의 레코드는,
    레코드 식별자; 및
    하나 이상의 쿠폰 코드 및 하나 이상의 설문 조사 질문들을 포함하는 데이터를 포함하는, 상기 데이터베이스; 및
    상기 데이터베이스에 통신 가능하게 연결되고, API 호출을 수신한 것에 응답하여 상기 데이터베이스에서 상기 데이터를 로케이팅하도록 구성된 서버를 포함하는, 시스템.
  33. 방법에 있어서,
    모바일 디바이스 상에서 실행되는 웹 브라우저 애플리케이션과 연관된 웹 브라우저 확장에 의해, 웹사이트에 대한 URL을 검출하는 단계;
    상기 모바일 디바이스 상에서 실행되는 키보드 애플리케이션에 의해, 그리고 상기 웹 브라우저 확장으로부터, 상기 URL을 수신하는 단계;
    상기 키보드 애플리케이션에 의해, 상기 URL과 연관된 도메인 네임에 기초하여 검색 쿼리를 생성하는 단계;
    상기 검색 쿼리에 기초하여 데이터를 로케이팅하는 단계 - 상기 데이터는 레코드와 연관되고, 상기 레코드는 레코드 식별자를 포함함 -;
    상기 키보드 애플리케이션에 의해, 상기 키보드 애플리케이션의 그래픽 사용자 인터페이스, GUI 엘리먼트를 상기 레코드 식별자와 연관시키는 단계;
    상기 키보드 애플리케이션에 의해, 상기 GUI 엘리먼트의 선택에 대응하여, 상기 사용자에 의해 입력된 입력을 수신하는 단계;
    상기 입력을 수신한 것에 응답하여,
    상기 키보드 애플리케이션에 의해 그리고 사용자 입력 없이, 상기 URL 및 상기 GUI 엘리먼트의 선택과 연관된 랜덤하게 생성된 식별자를 포함하는 고유 추적 링크를 생성하는 단계 - 상기 URL은 상기 웹사이트에 대한 것이고, 그리고 로케이팅된 데이터와 연관됨 -; 및
    상기 웹사이트에 액세스하기 위해 상기 모바일 디바이스 상에서 실행되는 상기 웹 브라우저 애플리케이션에 상기 고유 추적 링크를 전달하는 단계를 포함하고;
    상기 레코드 식별자 및 상기 사용자 식별자와 연계하는 상기 고유 추적 링크를 데이터베이스에 저장하는 단계; 및
    상기 웹 사이트에 액세스하는 동안 상기 웹 브라우저 애플리케이션에 의해, 상기 GUI 엘리먼트의 선택과 연관된 상기 랜덤하게 생성된 식별자를 포함하는 쿠키를 저장하는 단계를 포함하는, 방법.
  34. 제33항에 있어서,
    상기 입력을 수신한 것에 응답하여, 상기 웹 브라우저 확장에 의해, 그리고 상기 키보드 애플리케이션으로부터, 상기 고유 추적 링크를 수신하는 단계;
    상기 웹 브라우저 확장에 의해 상기 웹 브라우저 애플리케이션 내에 새로운 탭을 여는 단계(opening);
    상기 웹 브라우저 확장에 의해 상기 고유 추적 링크를 상기 새로운 탭에 전달하여 상기 새로운 탭에서 상기 웹 사이트에 액세스하는 단계; 및
    상기 쿠키가 저장된 경우 상기 웹 브라우저 확장에서 상기 새로운 탭을 닫는 단계를 더 포함하는, 방법.
  35. 제33항 또는 제34항에 있어서, 상기 로케이팅된 데이터는 하나 이상의 쿠폰 코드들을 포함하고, 상기 방법은,
    상기 키보드 애플리케이션에 의해, 상기 웹사이트의 웹페이지 내의 텍스트 필드의 선택을 검출하는 단계;
    상기 웹 브라우저 확장에 의해, 그리고 상기 키보드 애플리케이션으로부터, 상기 텍스트 필드의 선택의 표시를 수신하는 단계;
    상기 웹 브라우저 확장에 의해, 상기 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드임을 검출하는 단계;
    상기 키보드 애플리케이션에 의해, 그리고 상기 웹 브라우저 확장으로부터, 상기 텍스트 필드가 쿠폰 코드들에 대해 지정된 텍스트 필드라는 표시를 수신하는 단계; 및
    상기 텍스트 필드가 상기 쿠폰 코드들에 대해 지정된 텍스트 필드라는 표시를 수신한 것에 응답하여, 상기 하나 이상의 쿠폰 코드들로부터 상기 텍스트 필드로 쿠폰 코드를 전달하는 단계를 더 포함하는, 방법.
  36. 제33항에 있어서, 상기 제1 입력에 응답하여, 상기 키보드 애플리케이션에 의해, 상기 쿠폰 코드를 저장하는 단계를 더 포함하는, 방법.
  37. 제33항 또는 제36항에 있어서,
    상기 텍스트 필드가 쿠폰 코드에 대해 지정된 텍스트 필드라는 표시를 수신한 것에 응답하여, 상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 추가 GUI 엘리먼트를 상기 쿠폰 코드와 연관시키는 단계;
    상기 키보드 애플리케이션에 의해, 사용자에 의한 상기 추가 GUI 엘리먼트의 선택에 대응하는 제2 입력을 수신하는 단계를 더 포함하고,
    상기 하나 이상의 쿠폰 코드들로부터 상기 텍스트 필드로 쿠폰 코드를 전달하는 것은 상기 제2 입력에 추가로 응답하는, 방법.
  38. 제33항 내지 제37항 중 어느 한 항에 있어서, 상기 로케이팅된 데이터는 하나 이상의 설문 조사 질문들을 포함하고, 상기 방법은,
    상기 입력을 수신한 것에 응답하여, 상기 키보드 애플리케이션에 의해, 상기 모바일 디바이스의 GUI에 하나 이상의 설문 조사 질문들을 디스플레이하는 단계를 더 포함하는, 방법.
  39. 제38항에 있어서,
    상기 사용자에 의한 하나 이상의 추가 입력들을 수신하는 단계 - 상기 추가 입력들은 상기 하나 이상의 설문 조사 질문들의 완료에 대응함 -; 및
    상기 데이터베이스에, 랜덤하게 생성된 식별자 및 사용자 식별자와 연관하여 상기 하나 이상의 추가 입력들을 나타내는 데이터를 저장하는 단계를 더 포함하는, 방법.
  40. 제33항 내지 제39항 중 어느 한 항에 있어서, 상기 키보드 애플리케이션 및 웹 브라우저 확장은 애플리케이션 프로그래밍 인터페이스, API, 호출들을 통해 통신하는, 방법.
  41. 제33항 내지 제39항 중 어느 한 항에 있어서, 상기 키보드 애플리케이션 및 웹 브라우저 확장은 상기 모바일 디바이스 상의 공유 스토리지를 통해 통신하는, 방법.
  42. 제33항 내지 제39항 중 어느 한 항에 있어서, 상기 키보드 애플리케이션 및 웹 브라우저 확장은 API 호출을 통해 서버로 통신하고, 상기 서버는 상기 키보드 애플리케이션 및 상기 웹 브라우저 확장에 결합되는, 방법.
  43. 제33항 내지 제42항 중 어느 한 항에 있어서, 상기 데이터를 로케이팅하는 단계는, 상기 키보드 애플리케이션에 의해, API 호출을 상기 서버로 포워딩하는 단계를 포함하는, 방법.
  44. 제33항 내지 제42항 중 어느 한 항에 있어서, 상기 데이터를 로케이팅하는 단계는 상기 모바일 디바이스의 로컬 스토리지의 검색을 수행하는 단계를 포함하는 방법.
  45. 제33항 내지 제44항 중 어느 한 항에 있어서, 상기 데이터는 판매자 데이터인, 방법.
  46. 제45항에 있어서, 상기 쿠키는 상기 판매자 데이터와 연관된 판매자가 상기 사용자에 의해 구매가 이루어졌다고 결정할 수 있게 하는, 방법.
  47. 제46항에 있어서, 상기 사용자에 의해 행해진 상기 구매에 응답하여 상기 판매자에 의해 발행된 보상을 수신하는 단계를 더 포함하는, 방법.
  48. 제33항 내지 제47항 중 어느 한 항에 있어서, 상기 데이터는 상기 판매자와 연관된 활성 거래를 포함하는 판매자 데이터이고, 상기 GUI 엘리먼트를 상기 데이터와 연관시키는 단계는 상기 활성 거래를 나타내는 텍스트를 디스플레이하는 단계를 포함하는, 방법.
  49. 명령들이 모바일 디바이스의 프로세서에 의해 수행될 때, 상기 모바일 디바이스 상에서 실행되는 키보드 애플리케이션 및 웹 브라우저 확장이 제33항 내지 제48항 중 어느 한 항에 따른 방법을 수행하게 하는 상기 명령들을 포함하는 컴퓨터 판독가능 메모리.
  50. 시스템에 있어서,
    제49항에 따른 컴퓨터 판독가능 메모리;
    복수의 레코드들을 포함하는 데이터베이스로서, 각각의 레코드는,
    레코드 식별자;
    데이터; 및
    상기 데이터와 연관된 웹 사이트의 URL를 포함하는, 상기 데이터베이스; 및
    상기 데이터베이스에 통신 가능하게 연결되고, 상기 API 호출을 수신한 것에 응답하여 상기 데이터베이스에서 상기 데이터를 로케이팅하도록 구성된 서버를포함하는, 시스템.
KR1020237031269A 2021-03-03 2022-03-03 모바일 디바이스 상의 사용자 입력을 인터셉트하기 위한 방법 및 시스템 KR20230148336A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202163156153P 2021-03-03 2021-03-03
US63/156,153 2021-03-03
US17/236,646 US11237725B1 (en) 2021-03-03 2021-04-21 Tracking link generation using keyboard interception on mobile devices
US17/236,646 2021-04-21
US202163239227P 2021-08-31 2021-08-31
US63/239,227 2021-08-31
PCT/GB2022/050570 WO2022185066A1 (en) 2021-03-03 2022-03-03 Method and system for intercepting user inputs on a mobile device

Publications (1)

Publication Number Publication Date
KR20230148336A true KR20230148336A (ko) 2023-10-24

Family

ID=83116589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237031269A KR20230148336A (ko) 2021-03-03 2022-03-03 모바일 디바이스 상의 사용자 입력을 인터셉트하기 위한 방법 및 시스템

Country Status (3)

Country Link
US (2) US20220284050A1 (ko)
KR (1) KR20230148336A (ko)
WO (1) WO2022185066A1 (ko)

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8868451B2 (en) * 2004-06-15 2014-10-21 David Greaves Technology platform for electronic commerce and a method thereof
KR100672277B1 (ko) * 2005-05-09 2007-01-24 엔에이치엔(주) 개인화 검색 방법 및 검색 서버
JP4221055B1 (ja) * 2008-05-12 2009-02-12 株式会社クリエイティヴ・リンク ウェブページ作成方法、ウェブページ作成システム、連携サーバ装置及びコンピュータプログラム
US20130144674A1 (en) * 2011-12-01 2013-06-06 Samsung Electronics Co. Ltd. System and method for providing mobile advertising services
US20150106181A1 (en) * 2013-10-15 2015-04-16 Couponcabin Llc Method and system for providing a coupon during an online checkout process
WO2016068455A1 (ko) * 2014-10-30 2016-05-06 주식회사 플런티코리아 적응적인 키보드 인터페이스를 제공하기 위한 방법 및 시스템, 대화 내용과 연동되는 적응적 키보드를 이용한 답변 입력 방법
US10140017B2 (en) * 2016-04-20 2018-11-27 Google Llc Graphical keyboard application with integrated search
US11430000B1 (en) * 2017-02-15 2022-08-30 Massachusetts Mutual Life Insurance Company Online system with browser executable
US10733622B1 (en) * 2017-04-10 2020-08-04 Wildfire Systems, Inc. Application user interface monetization system
US20180315041A1 (en) * 2017-04-30 2018-11-01 Justin Wynn Method of Automated Gift Card/Coupon Purchasing and Input Upon Checkout
WO2018204754A1 (en) * 2017-05-04 2018-11-08 Walmart Apollo, Llc Mobile coupon system
US10482504B2 (en) * 2017-08-24 2019-11-19 William McMichael Systems and methods for analyzing input data and presenting information
US10606477B1 (en) * 2018-01-11 2020-03-31 Sprint Communications Company L.P. Intelligent keyboard
US20230052456A1 (en) * 2021-03-03 2023-02-16 Kindred Soul Ltd Tracking link generation using a keyboard application
US11237725B1 (en) * 2021-03-03 2022-02-01 Kindred Soul Ltd. Tracking link generation using keyboard interception on mobile devices

Also Published As

Publication number Publication date
WO2022185066A1 (en) 2022-09-09
US20230393733A1 (en) 2023-12-07
US20220284050A1 (en) 2022-09-08

Similar Documents

Publication Publication Date Title
US11295321B2 (en) System and method for interacting with a web portal
US11151593B2 (en) Intents for offer-discovery systems
US11354694B2 (en) Application user interface monetization system
US10002396B2 (en) System and method for transitioning from a first site to a second site
US11250082B2 (en) Text processing of message data for item query submission
US11989768B2 (en) Dynamically rendered interface elements during online chat sessions
KR20170129706A (ko) 소셜 네트워킹 시스템을 통한 판매자와의 사용자 통신
JP2014527252A (ja) レジ精算に基づくデジタルプロモーションの配布
RU2770436C2 (ru) Система и способ предоставления мобильной рекламы
US20220300998A1 (en) System that activates monetization and applies a payment method
US20220284063A1 (en) Method and system for intercepting user inputs
US11288642B1 (en) Systems and methods for online payment transactions
US10810635B2 (en) Server apparatus, terminal apparatus, non-transitory computer-readable storage medium having information processing program stored therein, information processing system, information processing method, and data structure
US20230052456A1 (en) Tracking link generation using a keyboard application
CA2876002C (en) Intents for offer-discovery systems
US20230393733A1 (en) Method and system for intercepting user inputs on a mobile device
CN117222996A (zh) 用于拦截移动装置上的用户输入的方法和系统
KR101493015B1 (ko) 마우스 이벤트 기반 가치 제공을 위한 광고 출력 방법