Launching applications from webpages

This specification describes technologies relating to launching applications from content items in webpages. In general, one aspect of the subject matter described in this specification can be embodied in methods that include receiving a content item including a first data element that identifies an application and a second data element that identifies a product. The methods may further include displaying the content item, receiving a user selection of the content item, and, in response, automatically checking if the application is installed on a user device. The methods may further include transmitting a request, including the first data element, to a server and installing the application identified by the first data element on the user device. The methods may further include launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

TECHNICAL FIELD

The present disclosure relates to launching applications from content items in web pages.

BACKGROUND

The Internet provides access to a wide variety of resources. For example, video and/or audio files, as well as web pages for particular subjects or particular news articles, are accessible over the Internet. Access to these resources presents opportunities for content items (e.g., advertisements) to be provided with the resources. The pairing of content items with requested resources can generate value. For example, a web page can include content slots in which advertisements or other content items can be presented. These content slots can be defined in the web page or defined for presentation with a web page, for example, in a pop-up window. Paired online content may include a link to a landing page with additional information thought to be of interest to a user.

Applications for mobile devices are often available for download from application vendors that run maintain servers for this purpose.

SUMMARY

This specification describes technologies relating to launching applications from content item in a webpage. In general, one aspect of the subject matter described in this specification can be embodied in a method that includes receiving a content item that includes a first data element that identifies an application and a second data element that identifies a product. The method may further include displaying the content item and receiving a user selection of the content item. The method may further include, in response to receiving the user selection, automatically checking if the application is installed on a user device. The method may further include transmitting a request to a server, wherein the request includes the first data element, and installing the application identified by the first data element on the user device. The method may further include launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

In general, one aspect of the subject matter described in this specification can be embodied in a method that includes transmitting a content item including a first data element that identifies an application, a second data element that identifies a product, and a set of instructions. The set of instructions, when executed by a user device in response to user selection of the content item, cause the processing device to perform operations including automatically checking if the application is installed on the user device and launching the application with the second data element as an input so that the first content displayed by the application relates to the product. The set of instructions may be a script. The operations may further include transmitting conversion tracking information.

In general, one aspect of the subject matter described in this specification can be embodied in a system that includes a data processing apparatus and a memory coupled to the data processing apparatus. The memory having instructions stored thereon which, when executed by the data processing apparatus cause the data processing apparatus to perform operations including receiving a content item that includes a first data element that identifies an application and a second data element that identifies a product. The operations may further include displaying the content item and receiving a user selection of the content item. The operations may further include, in response to receiving the user selection, automatically checking if the application is installed on a user device. The operations may further include transmitting a request to a server, wherein the request includes the first data element, and installing the application identified by the first data element on the user device. The operations may further include launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

In general, one aspect of the subject matter described in this specification can be embodied in a system that includes a data processing apparatus and a memory coupled to the data processing apparatus. The memory having instructions stored thereon which, when executed by the data processing apparatus cause the data processing apparatus to perform operations including transmitting a content item including a first data element that identifies an application, a second data element that identifies a product, and a set of instructions. The set of instructions, when executed by a user device in response to user selection of the content item, cause the processing device to perform operations including automatically checking if the application is installed on the user device and launching the application with the second data element as an input so that the first content displayed by the application relates to the product. The set of instructions may be a script. The operations may further include transmitting conversion tracking information.

In general, one aspect of the subject matter described in this specification can be embodied in a system that includes a network interface configured to receive a content item that includes a first data element that identifies an application and a second data element that identifies a product. The system may further include a display configured to display the content item. The system may further include a user interface configured to receive a user selection of the content item. The system may further include means for, in response to receiving the user selection, automatically checking if the application is installed. The system may further include a network interface configured to transmit a request to a server, wherein the request includes the first data element. The system may further include a module configured to install the application identified by the first data element. The system may further include means for launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

In general, one aspect of the subject matter described in this specification can be embodied in a system that includes a network interface configured to transmit a content item including a first data element that identifies an application, a second data element that identifies a product, and a set of instructions. The set of instructions, when executed by a user device in response to user selection of the content item, cause the processing device to perform operations including automatically checking if the application is installed on the user device and launching the application with the second data element as an input so that the first content displayed by the application relates to the product. The set of instructions may be a script. The operations may further include transmitting conversion tracking information.

In general, one aspect of the subject matter described in this specification can be embodied in a mobile device that includes a wireless network interface configured to receive a content item that includes a first data element that identifies an application and a second data element that identifies a product. The system may further include a display configured to a present the content item. The system may further include a user interface configured to receive a user selection of the content item. The system may further include means for, in response to receiving the user selection, automatically checking if the application is installed. The system may further include a wireless network interface configured to transmit a request to a server, wherein the request includes the first data element. The system may further include means for launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

In general, one aspect of the subject matter described in this specification can be embodied in a computer readable storage media storing software including instructions executable by a processing device that upon such execution cause the processing device to perform operations that include receiving a content item that includes a first data element that identifies an application and a second data element that identifies a product. The operations may further include displaying the content item and receiving a user selection of the content item. The operations may further include, in response to receiving the user selection, automatically checking if the application is installed on a user device. The operations may further include transmitting a request to a server, wherein the request includes the first data element, and installing the application identified by the first data element on the user device. The operations may further include launching the application with the second data element as an input so that the first content displayed by the application relates to the product.

In general, one aspect of the subject matter described in this specification can be embodied in a computer readable storage media storing software including instructions executable by a processing device that upon such execution cause the processing device to perform operations that include transmitting a content item including a first data element that identifies an application, a second data element that identifies a product, and a set of instructions. The set of instructions, when executed by a user device in response to user selection of the content item, cause the processing device to perform operations including automatically checking if the application is installed on the user device and launching the application with the second data element as an input so that the first content displayed by the application relates to the product. The set of instructions may be a script. The operations may further include transmitting conversion tracking information.

These and other embodiments can each optionally include one or more of the following features. A purchase transaction for the product may be completed using the application. Conversion tracking information may be transmitted. The content item may include an address for a server that maintains a conversion log. The content item may include a third data element that identifies a minimum version for the application. A check may be performed to determine if an installed version of the application is older than the minimum version for the application. The second data element may be stored in a message queue for applications until the application is launched. The server may provide download of applications. The server may redirect the request to a second server that provides download of applications. The application may be automatically launched after installation. Icons for a plurality of applications that are configured to process the second data element may be displayed and a user selection of the application may be received. Applications not matching the first data element may be prevented from processing the second data element.

Particular embodiments of the invention can be implemented to realize none, one or more of the following advantages. Some implementations may facilitate purchase of products associated with content items by deep-linking from the content item in a webpage directly to related content presented in a specialized application adapted to facilitate purchase transactions. Some implementations may enhance user experience by streamlining the process of finding and purchasing products. Some implementations may facilitate brand promotion for advertisers by linking an advertiser's specialized application to products that users are interested in and encouraging users to adopt the advertiser's online shopping application. Users of an advertiser's application may be more likely to make future purchases from the advertiser, rather than competitors. Some implementations may help to increase the install base for an advertiser's application.

DETAILED DESCRIPTION

Many mobile applications allow users to make purchases from within the application. For example, users may purchase books through a BookStore App or a camera through a Shopping App. It may be difficult to directly promote the adoption of these applications because the products they sell rather than the applications themselves may be the primary driver of user interest. Allowing publishers or advertisers to create content items that deep-link directly to the content within their applications may lead to better user-experience as well as create opportunities for the publisher to drive more business.

For example, a user may use a device (e.g. a mobile device) to search for a product. A user search query for a camera may result in a content item (e.g. an advertisement) that is included in a search result webpage. The content item may include data elements that allow for a deep-link into the camera section of a Shopping App associated with the content item. Similarly, content items on a webpage about a book review should be able to deep-link into the specific section about the book in the BookStore App.

Data elements identifying a product of interest may be passed into an application when it is launched to facilitate this deep-linking. A user device may be configured to handle the case where an application specified by a content item is not installed on the device. When a user selects (e.g., clicks on) the content item, if the application is installed, the application may be launched with the associated product related data elements as inputs so that the content (e.g., a landing page) related to the product is displayed in the application. If the application is not currently installed, a user may be presented with a download screen for the application served from an application vendor system. With user authorization, the application may be downloaded and installed on a user device. When the installation is complete, the application may be launched with the deep-link information.

In some implementations, instructions (e.g., a JavaScript script) for checking whether a designated application is installed and launching the application may be included in the content item.

A content item is any data that can be provided over a network. For example, an advertisement, including a link to a landing page is a content item.

Deep-linking is making a hyperlink that points to a specific content (e.g., a webpage or image) on a destination website, instead of that website's main or home page. Such links may be called deep-links. For example, an online merchant's website may have a main or home page that welcomes visitors and helps them to find content or products of interest. A visitor may navigate to other webpages within the website that include content related to particular products. A link that directs a user to a webpage for a particular product on the merchant's website, without viewing the main or home page, is an example of a deep-link.

FIG. 1is a block diagram of an example online environment100in which user devices may use specialized applications to access online content (e.g., landing pages) associated with content items (e.g., advertisements). The example environment100includes a network102, e.g., a local area network (LAN), wide area network (WAN), the Internet, or a combination thereof. The network102connects websites104, user devices106, content providers (e.g., advertisers108), the advertisement management system110. The example environment100may include many thousands of websites104, user devices106, and advertisers108.

A website104includes one or more resources105associated with a domain name and hosted by one or more servers. An example website is a collection of webpages formatted in hypertext markup language (HTML) that can contain text, images, multimedia content, and programming elements, e.g., scripts. Each website104is maintained by a publisher, e.g., an entity that controls, manages and/or owns the website104.

A resource105includes any data that can be provided over the network102. A resource105is identified by a resource address that is associated with the resource105. Resources include HTML pages, word processing documents, and portable document format (PDF) documents, images, video, and feed sources, to name only a few examples. The resources can include content, e.g., words, phrases, images and sounds that may include embedded information (e.g., meta-information in hyperlinks) and/or embedded instructions (e.g., JavaScript scripts).

A user device106is an electronic device that is under control of a user and is capable of requesting and receiving resources over the network102. Example user devices106include personal computers, mobile communication devices, and other devices that can send and receive data over the network102. A user device106typically includes a user application (e.g., a web browser) to facilitate the sending and receiving of data over the network102and the presentation of content to a user.

A user device106can request resources105from a website104. In turn, data representing the resource105can be provided to the user device106for presentation by the user device106. The data representing the resource105can also include data specifying a portion of the resource or a portion of a user display (e.g., a presentation location of a pop-up window or in a slot of a web page) in which advertisements or other content can be presented. These specified portions of the resource or user display are referred to as advertisement slots or impressions.

To facilitate searching of these resources, the environment can include a search system112that identifies the resources by crawling and indexing the resources provided by the publishers on the websites104. Data about the resources can be indexed based on the resource to which the data corresponds. The indexed and, optionally, cached copies of the resources are stored in an indexed cache114.

User devices106can submit search queries116to the search system112over the network102. In response, the search system112accesses the indexed cache114to identify resources that are relevant to the search query116. The search system112identifies the resources in the form of search results118and returns the search results118to the user devices106in search results pages. A search result118is data generated by the search system112that identifies a resource that is responsive to a particular search query, and includes a link to the resource. An example search result118can include a web page title, a snippet of text or a portion of an image extracted from the web page, and the URL of the web page. Search results pages can also include one or more advertisement slots in which advertisements or other content can be presented.

When a resource105or search results118are requested by a user device106, the advertisement management system110receives a request for additional content (e.g., advertisements) to be provided with the resource105or search results118. The request for advertisements can include characteristics of the advertisement slots that are defined for the requested resource or search results page, and these requests are provided to the advertisement management system110.

For example, a reference (e.g., URL) to the resource for which the advertisement slot is defined, a size of the advertisement slot, and/or media types that are available for presentation in the advertisement slot can be provided to the advertisement management system110. Similarly, keywords associated with a requested resource (“resource keywords”) or a search query116for which search results are requested can also be provided to the advertisement management system110to facilitate identification of advertisements that are relevant to the resource or search query116.

Based on data included in the request for advertisements, the advertisement management system110can select advertisements that are eligible to be provided in response to the request (“eligible advertisements”). For example, eligible advertisements can include advertisements having characteristics matching the characteristics of advertisement slots and that are identified as relevant to specified resource keywords or search queries116.

The advertisement management system110can select from the eligible advertisements that are provided for presentation in advertisement slots of a resource or search results page based on results of an auction. For example, the advertisement management system110can receive bids from advertisers and allocate the advertisement slots to the highest bidders at the conclusion of the auction. The bids are amounts that the advertisers are willing to pay for presentation (or selection) of their advertisement with a resource or search results page. For example, a bid can specify an amount that an advertiser is willing to pay for each 1000 impressions (i.e., presentations) of the advertisement, referred to as a CPC bid. Alternatively, the bid can specify an amount that the advertiser is willing to pay for a selection (i.e., a click-through) of the advertisement or a conversion following selection of the advertisement. The highest bidders can be determined based on the bids alone, or based on the bids of each bidder being multiplied by one or more factors (e.g., quality scores derived from advertisement performance, landing page scores, and the like).

A conversion occurs when a user performs a particular action related to an advertisement provided with a resource or search results page. What constitutes a conversion may vary from case to case and can be determined in a variety of ways. For example, a conversion may occur when a user clicks on an advertisement and is referred to a landing page. Another conversion may occur when a user consummates a purchase before leaving that landing page or within a predetermined period of time (e.g., 30 days) after first visiting the landing page. A conversion can also be defined by an advertiser to be any measurable/observable user action. User actions may include, for example, downloading a white paper, navigating to at least a given depth of a website, viewing at least a certain number of web pages, spending at least a predetermined amount of time on a website or web page, registering on a website, etc. Other actions that constitute a conversion can also be used.

The advertisement management system may store and access data regarding past allocations of content items and user interactions in a data store119. The data store119is a data store that stores data representing previous user interactions with publisher websites and advertisements. For example, in response to receiving a request for an advertisement, the advertisement management system110can store data identifying the website to which the request corresponds and identifying the request as an impression for the website. Additionally, the advertisement management system110can store data representing the advertisements that were provided in response to the request and any user actions (e.g., clicks or conversions) that are detected following presentation of the advertisements. The data store119may also store user session logs.

The advertisement management system110may also include an application URL module120. The application URL module may be used to generate or modify a formatted URL for a content item. For example, the application URL module may receive a content item from an advertiser108that includes a URL for a landing page. The URL may be formatted and include data elements specifying a preferred application for viewing the landing page and aspects of a product or products associated with the content item. The application URL module may modify the URL by adding data elements related to conversion tracking. For example, the application URL module may add the URL for a conversion tracking server as a Common Gateway Interface (CGI) parameter. The application URL module120may transmit modified content items through a server system interface component of the advertisement management system110. In some implementations, the application URL module may generate a deep-linking application specific landing page URL based on unformatted data elements associated with the content item received from an advertiser108.

The online environment100may also include an application vendor system125. The application vendor system may include one or more servers that offer applications for download. Some applications may be available free of charge, while other applications may require a purchase transaction prior to download. In some implementations, the application URL module120may modify an application specific landing page URL to include, as a CGI parameter, the URL for an application vendor system server that offers download of the application associated with a content item.

A user device106may include an application finder module130. The application finder module may be used to check whether the user device has the application specified by a content item installed. If necessary, the application finder module may facilitate download of the application from the application vendor system125and installation of the application on the user device. The application finder module may further facilitate the launch of the application with input parameters that allow the application to automatically load content for a product associated with the content item.

The application finder module130may be implemented as software that is executed on a processing apparatus, such as the mobile device300illustrated inFIGS. 3-6.

The advertising management system110may be implemented as software that is executed on a processing apparatus, such as one or more computing devices (e.g., a computer system as illustrated inFIG. 7).

FIG. 2is a flow chart of an example process200for launching an application based on user selection of a content item in a webpage. The content item may designate a product and an application that may be used to review further information about the product. When a user selects the content item from a webpage, the designated application is launched with a reference to the designated product so that information related to the product is the first content displayed by the application. If the application is not already installed, the user is directed to a server that offers download of the application. After download and installation of the application, the application may be automatically launched with the reference to the product. The user may interact with this content through the application, possibly to purchase the product.

The process200may be implemented by an application finder module that is executed by a user's mobile computing device (e.g., illustrated inFIG. 7). For example, process200may be implemented by the App Finder552that is executed by the mobile device described inFIGS. 3-6.

A content item associated with an application and a product is received202. For example, the content item may be an advertisement that includes a URL for a landing page with more information that may be of interest to a user. The URL may identify an application that may be used to view the contents of the landing page. The URL may further include one or more data elements specifying a product associated with the content item. In some implementations, the content item may further include a URL for a conversion tracking server (e.g., a component of advertisement management system110). The conversion tracking server may maintain a log of conversions for content items. For example, a content item associated with a song available for download may include a URL in the format:

http://www.company.com/companyAppID/<artist_name>/<album_name>/<song_name>?conversion_url=<url>
where www.company.com is a URL for an advertiser's webserver, the data element “companyAppID” is a sequence of alphanumeric characters that identifies an application, <artist_name>, <album_name>, and <song_name> are data elements that identify a product (e.g., a song), and conversion_url is a CGI parameter set to the value of <url>, which may be a URL of a conversion tracking server. In some implementations, the content item may further include a data element specifying a minimum version number for the application required to support the content of a designated landing page.

In some implementations, the content item may be generated in part by an advertiser108ofFIG. 1. In some implementations, the content item may be generated in part and transmitted by the App URL module120of the advertisement management system110ofFIG. 1.

The content may be received202by a user device106(e.g., a cell phone). The content item may be received via a network interface component of the user device. In some implementations, the content may be received202through a wireless network interface on a user device (e.g. antenna305illustrated inFIG. 3).

The content item is displayed204to a user. The content item may be processed, along with the rest of a webpage in which it is served, by a browser application (e.g., browser551illustrated inFIG. 5) running on a user device106ofFIG. 1. The browser application may render an image based on the content item that may then be displayed on the display of a user device (e.g., display301illustrated inFIG. 3). For example, the content item may include a link that is labeled “View in Company App”.

A user selection of the content item is received206. A user may select the content item by using a user interface device (e.g., a keypad, a mouse, a j-mouse, or touchpad) on a user device. For example, a user may select the content item by clicking on a portion of display301using pointing device304of the mobile device300illustrated inFIG. 3.

A user device is checked208to determine if the application specified by the content item is installed. For example, a list of registered applications stored by the operating system on a user device is searched for value matching a data element in the content item that identifies an application. In some implementations, the version number of an installed application may be checked by comparing it to a minimum version number specified by a data element in the content item.

When the user selection is received, an application finder module130may be run on a user device106to process the data elements (e.g., URL components or parameters) associated with the content item and check208whether the specified application is installed. For example, application finder552, illustrated inFIG. 5, may be run to check208whether the application associated with the content item is installed on mobile device300.

If an adequate version of the application is not installed215, a request for the application may be transmitted220to a remote server. For example, a request for the application may be transmitted by a user device106to a server for an application vendor system125. In some implementations, the request may be transmitted220a server for an advertiser108. In some implementations, an advertiser server may redirect the request to a server for an application vendor system.

The request for the application may cause a remote server to respond by transmitting one or more webpages including an offer to download the application. A user may interact with one or more of these webpages to initiate a download222of the application. In some implementations, a download of the application may commence automatically using account information a user has previously registered with an application vendor system. In some implementations, a user may enter billing information through the webpages. In some implementations, a user may authorize a download operation by indicating agreement to terms.

The application may be installed224on the user device. For example, the application identified by the content item may be installed on the mobile device300that is illustrated inFIGS. 3-6.

After installation is complete, or if the application was previously installed215, the application may be launched230with a data element identifying a product associated with the content item as an input parameter. For example, where the content item includes a URL with data elements that specify a song, the application may start up by loading a landing page provided by an advertiser's server that displays information regarding the song and an icon that when selected will allow the user to complete a purchase transaction that will result in the download of the song to the user's device.

In some implementations, one or more data elements identifying a product associated with the content item may be written to a message queue for applications that is maintained by an operating system on a user device. The message may include a unique identifier for the target application. When the application is launched, the application may check the message queue for messages targeted to it and retrieve the previously saved message. The application may decode one or more data elements identifying the product and accept them as input parameters. Based on these input parameters, the application may automatically load and display content (e.g., a specified landing page) associated with the identified product.

The application may be launched automatically when the application is determined to be previously installed. In some implementations, the application is launched automatically after the installation process completes. In some implementations, the launch may be initiated by user input (e.g., input received through pointing device304). In some implementations, a user is presented with icons for multiple applications that may handle the landing page for the content item. For example, applications may be registered with the operating system for a user device in manner that indicates they handle URLs that match a certain pattern. The user may then select among the available applications. In some implementations, applications other than the designated application, i.e. that do not match the data element identifying an application for the content item, that are capable of processing the landing page may be suppressed. For example, the designated application may be automatically launched to process the landing page without presenting a user with a selection of available applications. In some implementations, the user may be presented with only a single option, the identified application, for handling the landing page. A user's permission may be requested to launch the application to view the linked content. For example, a user may be presented with a message: “This link is going to open Company App. Do you want to open this app? (Y/N)”. The message may include a “make this the default behavior” option.

The application may be launched on a user device106(e.g., mobile device300, illustrated inFIGS. 3-6). An application finder module130running on a user device106to may initiate the launch230of the specified application. For example, application finder552, illustrated inFIG. 5, may launch230the application associated with the content item when the application is installed on mobile device300. In some implementations, a user may initiate the launch of the application by a selection entered through user interface device (e.g., keyboard302or pointing device304).

A user may use the application to further interact with content (e.g. a specified landing page) associated with the product and may choose to purchase232the product. The application may facilitate the purchase transaction. For example, the application may present the user with a “buy now” icon. If the user selects (e.g., with pointer device304) the “buy now” icon, the user may be presented with webpages that may be used to complete a purchase transaction, e.g. by entering billing information and indicating assent to sales terms. In some implementations, billing information for a user may be preregistered so that manifesting assent by selecting the “buy now” icon is sufficient to complete the purchase transaction.

The application may transmit234conversion data to a server. The application may accept a data element specifying a conversion tracking server as an input parameter. For example, the application may accept the conversion_url as a CGI input parameter. When a purchase or other transaction is completed by the user, the application may transmit data reflecting the transaction to a designated conversion server (e.g., a server with a URL matching the value of the conversion_url data element).

In some implementations, instructions (e.g., a JavaScript script) for checking whether a designated application is installed and launching the application may be included in the content item. These instructions may be executed to implement portions of process200rather than relying on a pre-installed module in the user device configured to implement the process. The instructions may be executed by a browser (e.g., browser551ofFIG. 5) application using runtime libraries (e.g., Core Java Libraries531) on a user device. The instructions may cause the browser to automatically check if the application is installed on the user device. The instructions may further cause the application to be launched with a data element specifying a product associated with the content item as an input parameter so that the first content displayed by the application relates to the product. The instructions may cause a request for the application to be transmitted from the user device106to an application vendor system server125. The instructions may cause the data reflecting a conversion to be transmitted from the user device to a conversion tracking server (e.g., a component of advertisement management system110). The content item, including a data element specifying the application, a data element specifying the product, and the instructions may be transmitted from an advertisement management server110to a user device106.

Referring now toFIG. 3, the exterior appearance of an exemplary mobile device300that implements application finder module130(shown inFIG. 1) is illustrated. Briefly, and among other things, the device300includes a processor configured to launch and, if necessary, install an application based on user selection of a content item in a webpage.

In more detail, the hardware environment of the device300includes a display301for displaying text, images, and video to a user; a keyboard302for entering text data and user commands into the device300; a pointing device304for pointing, selecting, and adjusting objects displayed on the display301; an antenna305; a network connection306; a camera307; a microphone309; and a speaker310. Although the device300shows an external antenna305, the device300can include an internal antenna, which is not visible to the user.

The display301can display video, graphics, images, and text that make up the user interface for the software applications used by the device300, and the operating system programs used to operate the device300. Among the possible elements that may be displayed on the display301are a new mail indicator311that alerts a user to the presence of a new message; an active call indicator312that indicates that a telephone call is being received, placed, or is occurring; a data standard indicator314that indicates the data standard currently being used by the device300to transmit and receive data; a signal strength indicator315that indicates a measurement of the strength of a signal received by via the antenna305, such as by using signal strength bars; a battery life indicator316that indicates a measurement of the remaining battery life; or a clock317that outputs the current time.

The display301may also show application icons representing various applications available to the user, such as a web browser application icon319, a phone application icon320, a search application icon321, a contacts application icon322, a mapping application icon324, an email application icon325, or other application icons. In one example implementation, the display301is a quarter video graphics array (QVGA) thin film transistor (TFT) liquid crystal display (LCD), capable of 16-bit or better color.

A user uses the keyboard (or “keypad”)302to enter commands and data to operate and control the operating system and applications. The keyboard302includes standard keyboard buttons or keys associated with alphanumeric characters, such as keys326and327that are associated with the alphanumeric characters “Q” and “W” when selected alone, or are associated with the characters “*” and “1” when pressed in combination with key329. A single key may also be associated with special characters or functions, including unlabeled functions, based upon the state of the operating system or applications invoked by the operating system. For example, when an application calls for the input of a numeric character, a selection of the key327alone may cause a “1” to be input.

In addition to keys traditionally associated with an alphanumeric keypad, the keyboard302also includes other special function keys, such as an establish call key330that causes a received call to be answered or a new call to be originated; a terminate call key331that causes the termination of an active call; a drop down menu key332that causes a menu to appear within the display301; a backward navigation key334that causes a previously accessed network address to be accessed again; a favorites key335that causes an active web page to be placed in a bookmarks folder of favorite sites, or causes a bookmarks folder to appear; a home page key336that causes an application invoked on the device300to navigate to a predetermined network address; or other keys that provide for multiple-way navigation, application selection, and power and volume control.

The user uses the pointing device304to select and adjust graphics and text objects displayed on the display301as part of the interaction with and control of the device300and the applications invoked on the device300. The pointing device304is any appropriate type of pointing device, and may be a joystick, a trackball, a touch-pad, a camera, a voice input device, a touch screen device implemented in combination with the display301, or any other input device.

The antenna305, which can be an external antenna or an internal antenna, is a directional or omni-directional antenna used for the transmission and reception of radiofrequency (RF) signals that implement point-to-point radio communication, wireless local area network (LAN) communication, or location determination. The antenna305may facilitate point-to-point radio communication using the Specialized Mobile Radio (SMR), cellular, or Personal Communication Service (PCS) frequency bands, and may implement the transmission of data using any number or data standards. For example, the antenna305may allow data to be transmitted between the device300and a base station using technologies such as Wireless Broadband (WiBro), Worldwide Interoperability for Microwave ACCess (WiMAX), 3GPP Long Term Evolution (LTE), Ultra Mobile Broadband (UMB), High Performance Radio Metropolitan Network (HIPERMAN), iBurst or High Capacity Spatial Division Multiple Access (HC-SDMA), High Speed OFDM Packet Access (HSOPA), High-Speed Packet Access (HSPA), HSPA Evolution, HSPA+, High Speed Upload Packet Access (HSUPA), High Speed Downlink Packet Access (HSDPA), Generic Access Network (GAN), Time Division-Synchronous Code Division Multiple Access (TD-SCDMA), Evolution-Data Optimized (or Evolution-Data Only) (EVDO), Time Division-Code Division Multiple Access (TD-CDMA), Freedom Of Mobile Multimedia Access (FOMA), Universal Mobile Telecommunications System (UMTS), Wideband Code Division Multiple Access (W-CDMA), Enhanced Data rates for GSM Evolution (EDGE), Enhanced GPRS (EGPRS), Code Division Multiple Access-2000 (CDMA2000), Wideband Integrated Dispatch Enhanced Network (WiDEN), High-Speed Circuit-Switched Data (HSCSD), General Packet Radio Service (GPRS), Personal Handy-Phone System (PHS), Circuit Switched Data (CSD), Personal Digital Cellular (PDC), CDMAone, Digital Advanced Mobile Phone System (D-AMPS), Integrated Digital Enhanced Network (IDEN), Global System for Mobile communications (GSM), DataTAC, Mobitex, Cellular Digital Packet Data (CDPD), Hicap, Advanced Mobile Phone System (AMPS), Nordic Mobile Phone (NMP), Autoradiopuhelin (ARP), Autotel or Public Automated Land Mobile (PALM), Mobiltelefonisystem D (MTD), Offentlig Landmobil Telefoni (OLT), Advanced Mobile Telephone System (AMTS), Improved Mobile Telephone Service (IMTS), Mobile Telephone System (MTS), Push-To-Talk (PTT), or other technologies. Communication via W-CDMA, HSUPA, GSM, GPRS, and EDGE networks may occur, for example, using a QUALCOMM MSM7200A chipset with a QUALCOMM RTR6285™ transceiver and PM7540™ power management circuit.

The wireless or wired computer network connection306may be a modem connection, a local-area network (LAN) connection including the Ethernet, or a broadband wide-area network (WAN) connection such as a digital subscriber line (DSL), cable high-speed internet connection, dial-up connection, T-1 line, T-3 line, fiber optic connection, or satellite connection. The network connection306may connect to a LAN network, a corporate or government WAN network, the Internet, a telephone network, or other network. The network connection306uses a wired or wireless connector. Example wireless connectors include, for example, an INFRARED DATA ASSOCIATION (IrDA) wireless connector, a Wi-Fi wireless connector, an optical wireless connector, an INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS (IEEE) Standard 802.11 wireless connector, a BLUETOOTH wireless connector (such as a BLUETOOTH version 1.2 or 3.0 connector), a near field communications (NFC) connector, an orthogonal frequency division multiplexing (OFDM) ultra wide band (UWB) wireless connector, a time-modulated ultra wide band (TM-UWB) wireless connector, or other wireless connector. Example wired connectors include, for example, an IEEE-1394 FIREWIRE connector, a Universal Serial Bus (USB) connector (including a mini-B USB interface connector), a serial port connector, a parallel port connector, or other wired connector. In another implementation, the functions of the network connection306and the antenna305are integrated into a single component.

The camera307allows the device300to capture digital images, and may be a scanner, a digital still camera, a digital video camera, or other digital input device. In one example implementation, the camera307is a 3 mega-pixel (MP) camera that utilizes a complementary metal-oxide semiconductor (CMOS).

The microphone309allows the device300to capture sound, and may be an omni-directional microphone, a unidirectional microphone, a bi-directional microphone, a shotgun microphone, or other type of apparatus that converts sound to an electrical signal. The microphone309may be used to capture sound generated by a user, for example when the user is speaking to another user during a telephone call via the device300. Conversely, the speaker310allows the device to convert an electrical signal into sound, such as a voice from another user generated by a telephone application program, or a ring tone generated from a ring tone application program. Furthermore, although the device300is illustrated inFIG. 3as a handheld device, in further implementations the device300may be a laptop, a workstation, a midrange computer, a mainframe, an embedded system, telephone, desktop PC, a tablet computer, a PDA, or other type of computing device.

FIG. 4is a block diagram illustrating an internal architecture400of the device300. The architecture includes a central processing unit (CPU)401where the computer instructions that comprise an operating system or an application are processed; a display interface402that provides a communication interface and processing functions for rendering video, graphics, images, and texts on the display301, provides a set of built-in controls (such as buttons, text and lists), and supports diverse screen sizes; a keyboard interface404that provides a communication interface to the keyboard302; a pointing device interface405that provides a communication interface to the pointing device304; an antenna interface406that provides a communication interface to the antenna305; a network connection interface407that provides a communication interface to a network over the computer network connection306; a camera interface408that provides a communication interface and processing functions for capturing digital images from the camera307; a sound interface409that provides a communication interface for converting sound into electrical signals using the microphone309and for converting electrical signals into sound using the speaker310; a random access memory (RAM)410where computer instructions and data are stored in a volatile memory device for processing by the CPU401; a read-only memory (ROM)411where invariant low-level systems code or data for basic system functions such as basic input and output (I/O), startup, or reception of keystrokes from the keyboard302are stored in a non-volatile memory device; a storage medium412or other suitable type of memory (e.g. such as RAM, ROM, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, floppy disks, hard disks, removable cartridges, flash drives), where the files that comprise an operating system414, application programs415(including, for example, a web browser application, a widget or gadget engine, and or other applications, as necessary) and data files416are stored; a navigation module417that provides a real-world or relative position or geographic location of the device300; a power source419that provides an appropriate alternating current (AC) or direct current (DC) to power components; and a telephony subsystem420that allows the device300to transmit and receive sound over a telephone network. The constituent devices and the CPU401communicate with each other over a bus421.

The CPU401can be one of a number of computer processors. In one arrangement, the computer CPU401is more than one processing unit. The RAM410interfaces with the computer bus421so as to provide quick RAM storage to the CPU401during the execution of software programs such as the operating system application programs, and device drivers. More specifically, the CPU401loads computer-executable process steps from the storage medium412or other media into a field of the RAM410in order to execute software programs. Data is stored in the RAM410, where the data is accessed by the computer CPU401during execution. In one example configuration, the device300includes at least 128 MB of RAM, and 256 MB of flash memory.

The storage medium412itself may include a number of physical drive units, such as a redundant array of independent disks (RAID), a floppy disk drive, a flash memory, a USB flash drive, an external hard disk drive, thumb drive, pen drive, key drive, a High-Density Digital Versatile Disc (HD-DVD) optical disc drive, an internal hard disk drive, a Blu-Ray optical disc drive, or a Holographic Digital Data Storage (HDDS) optical disc drive, an external mini-dual in-line memory module (DIMM) synchronous dynamic random access memory (SDRAM), or an external micro-DIMM SDRAM. Such computer readable storage media allow the device300to access computer-executable process steps, application programs and the like, stored on removable and non-removable memory media, to off-load data from the device300, or to upload data onto the device300.

A computer program product is tangibly embodied in storage medium412, a machine-readable storage medium. The computer program product includes instructions that, when read by a machine, operate to cause a data processing apparatus to store image data in the mobile device. In some embodiments, the computer program product includes instructions that cause a data processing apparatus to launch and, if necessary, install an application based on user selection of a content item in a webpage.

The operating system414may be a LINUX-based operating system such as a mobile device platform; APPLE MAC OS X; MICROSOFT WINDOWS NT/WINDOWS 2000/WINDOWS XP/WINDOWS MOBILE; a variety of UNIX-flavored operating systems; or a proprietary operating system for computers or embedded systems. The application development platform or framework for the operating system414may be: BINARY RUNTIME ENVIRONMENT FOR WIRELESS (BREW); JAVA Platform, Micro Edition (JAVA ME) or JAVA 2 Platform, Micro Edition (J2ME) using the SUN MICROSYSTEMS JAVASCRIPT programming language; PYTHON™, FLASH LITE, or MICROSOFT .NET Compact, or another appropriate environment.

The device stores computer-executable code for the operating system414, and the application programs415such as an email, instant messaging, a video service application, a mapping application word processing, spreadsheet, presentation, gaming, mapping, web browsing, JAVASCRIPT engine, or other applications. For example, one implementation may allow a user to access the GMAIL email application, an instant messaging application, a video service application, a mapping application, or an imaging editing and presentation application. The application programs415may also include a widget or gadget engine, such as a TAFRI™ widget engine, a MICROSOFT gadget engine such as the WINDOWS SIDEBAR gadget engine or the KAPSULES™ gadget engine, a YAHOO! widget engine such as the KONFABULTOR™ widget engine, the APPLE DASHBOARD widget engine, a gadget engine, the KLIPFOLIO widget engine, an OPERA™ widget engine, the WIDSETS™ widget engine, a proprietary widget or gadget engine, or other widget or gadget engine the provides host system software for a physically-inspired applet on a desktop.

Although it is possible to provide for launching and, if necessary, installing an application based on user selection of a content item in a webpage using the above-described implementation, it is also possible to implement the functions according to the present disclosure as a dynamic link library (DLL), or as a plug-in to other application programs such as an Internet web-browser such as the FOXFIRE web browser, the APPLE SAFARI web browser or the MICROSOFT INTERNET EXPLORER web browser.

The navigation module417may determine an absolute or relative position of the device, such as by using the Global Positioning System (GPS) signals, the GLObal NAvigation Satellite System (GLONASS), the Galileo positioning system, the Beidou Satellite Navigation and Positioning System, an inertial navigation system, a dead reckoning system, or by accessing address, internet protocol (IP) address, or location information in a database. The navigation module417may also be used to measure angular displacement, orientation, or velocity of the device300, such as by using one or more accelerometers.

FIG. 5is a block diagram illustrating exemplary components of the operating system414used by the device300, in the case where the operating system414is a mobile device platform. The operating system414invokes multiple processes, while ensuring that the associated phone application is responsive, and that wayward applications do not cause a fault (or “crash”) of the operating system. Using task switching, the operating system414allows for the switching of applications while on a telephone call, without losing the state of each associated application. The operating system414may use an application framework to encourage reuse of components, and provide a scalable user experience by combining pointing device and keyboard inputs and by allowing for pivoting. Thus, the operating system can provide a rich graphics system and media experience, while using an advanced, standards-based web browser.

The operating system414can generally be organized into six components: a kernel500, libraries501, an operating system runtime502, application libraries504, system services505, and applications506. The kernel500includes a display driver507that allows software such as the operating system414and the application programs415to interact with the display301via the display interface402, a camera driver509that allows the software to interact with the camera307; a BLUETOOTH driver510; a M-Systems driver511; a binder (IPC) driver512, a USB driver514a keypad driver515that allows the software to interact with the keyboard302via the keyboard interface404; a WiFi driver516; audio drivers517that allow the software to interact with the microphone309and the speaker310via the sound interface409; and a power management component519that allows the software to interact with and manage the power source519.

The BLUETOOTH driver, which in one implementation is based on the BlueZ BLUETOOTH stack for LINUX-based operating systems, provides profile support for headsets and hands-free devices, dial-up networking, personal area networking (PAN), or audio streaming (such as by Advance Audio Distribution Profile (A2DP) or Audio/Video Remote Control Profile (AVRCP). The BLUETOOTH driver provides JAVA bindings for scanning, pairing and unpairing, and service queries.

The libraries501include a media framework520that supports standard video, audio and still-frame formats (such as Moving Picture Experts Group (MPEG)-4, H.264, MPEG-1 Audio Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR), Joint Photographic Experts Group (JPEG), and others) using an efficient JAVA Application Programming Interface (API) layer; a surface manager521; a simple graphics library (SGL)522for two-dimensional application drawing; an Open Graphics Library for Embedded Systems (OpenGL ES)524for gaming and three-dimensional rendering; a C standard library (LIBC)525; a LIBWEBCORE library526; a FreeType library527; an SSL529; and an SQLite library530.

The operating system runtime502includes core JAVA libraries531, and a Dalvik virtual machine532. The Dalvik virtual machine532is a custom, virtual machine that runs a customized file format (.DEX).

The operating system414can also include Mobile Information Device Profile (MIDP) components such as the MIDP JAVA Specification Requests (JSRs) components, MIDP runtime, and MIDP applications as shown inFIG. 5. The MIDP components can support MIDP applications running on the device300.

With regard to graphics rendering, a system-wide composer manages surfaces and a frame buffer and handles window transitions, using the OpenGL ES524and two-dimensional hardware accelerators for its compositions.

The Dalvik virtual machine532may be used with an embedded environment, since it uses runtime memory very efficiently, implements a CPU-optimized bytecode interpreter, and supports multiple virtual machine processes per device. The custom file format (.DEX) is designed for runtime efficiency, using a shared constant pool to reduce memory, read-only structures to improve cross-process sharing, concise, and fixed-width instructions to reduce parse time, thereby allowing installed applications to be translated into the custom file formal at build-time. The associated bytecodes are designed for quick interpretation, since register-based instead of stack-based instructions reduce memory and dispatch overhead, since using fixed width instructions simplifies parsing, and since the 16-bit code units minimize reads.

The application libraries504include a view system534, a resource manager535, content providers537, and application finder552. The system services505includes a status bar539; an application launcher540; a package manager541that maintains information for all installed applications; a telephony manager542that provides an application level JAVA interface to the telephony subsystem420; a notification manager544that allows all applications access to the status bar and on-screen notifications; a window manager545that allows multiple applications with multiple windows to share the display301; and an activity manager546that runs each application in a separate process, manages an application life cycle, and maintains a cross-application history.

The applications506include a home application547, a dialer application549, a contacts application550, and a browser application551.

The telephony manager542provides event notifications (such as phone state, network state, Subscriber Identity Module (SIM) status, or voicemail status), allows access to state information (such as network information, SIM information, or voicemail presence), initiates calls, and queries and controls the call state. The browser application551renders web pages in a full, desktop-like manager, including navigation functions. Furthermore, the browser application551allows single column, small screen rendering, and provides for the embedding of HTML views into other applications.

FIG. 6is a block diagram illustrating exemplary processes implemented by the operating system kernel600. Generally, applications and system services run in separate processes, where the activity manager546runs each application in a separate process and manages the application life cycle. The applications run in their own processes, although many activities or services can also run in the same process. Processes are started and stopped as needed to run an application's components, and processes may be terminated to reclaim resources. Each application is assigned its own process, whose name is the application's package name, and individual parts of an application can be assigned another process name.

Some processes can be persistent. For example, processes associated with core system components such as the surface manager616, the window manager614, or the activity manager610can be continuously executed while the device300is powered. Additionally, some application-specific process can also be persistent. For example, processes associated with the dialer application621, may also be persistent.

The processes implemented by the operating system kernel600may generally be categorized as system services processes601, dialer processes602, browser processes604, and maps processes605. The system services processes601include status bar processes606associated with the status bar539; application launcher processes607associated with the application launcher540; package manager processes609associated with the package manager541; activity manager processes610associated with the activity manager546; resource manager processes611associated with a resource manager611that provides access to graphics, localized strings, and XML layout descriptions; notification manger processes612associated with the notification manager544; window manager processes614associated with the window manager545; core JAVA libraries processes615associated with the core JAVA libraries531; surface manager processes616associated with the surface manager521; Dalvik virtual machine processes617associated with the Dalvik virtual machine532, LIBC processes619associated with the LIBC library525; and application finder processes620associated with the application finder application library552.

The dialer processes602include dialer application processes621associated with the dialer application549; telephony manager processes622associated with the telephony manager542; core JAVA libraries processes624associated with the core JAVA libraries531; Dalvik virtual machine processes625associated with the Dalvik Virtual machine532; and LIBC processes626associated with the LIBC library525. The browser processes604include browser application processes627associated with the browser application551; core JAVA libraries processes629associated with the core JAVA libraries531; Dalvik virtual machine processes630associated with the Dalvik virtual machine532; LIBWEBCORE processes631associated with the LIBWEBCORE library526; and LIBC processes632associated with the LIBC library525.

The maps processes605include maps application processes634, core JAVA libraries processes635, Dalvik virtual machine processes636, and LIBC processes637. Notably, some processes, such as the Dalvik virtual machine processes, may exist within one or more of the systems services processes601, the dialer processes602, the browser processes604, and the maps processes605.

The memory704stores information within the computing device700. In one implementation, the memory704is a volatile memory unit or units. In another implementation, the memory704is a non-volatile memory unit or units. The memory704may also be another form of computer-readable medium, such as a magnetic or optical disk.

The computing device700may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server720, or multiple times in a group of such servers. It may also be implemented as part of a rack server system724. In addition, it may be implemented in a personal computer such as a laptop computer722. Alternatively, components from computing device700may be combined with other components in a mobile device (not shown), such as device750. Each of such devices may contain one or more of computing device700,750, and an entire system may be made up of multiple computing devices700,750communicating with each other.

The processor752can execute instructions within the computing device750, including instructions stored in the memory764. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device750, such as control of user interfaces, applications run by device750, and wireless communication by device750.

Processor752may communicate with a user through control interface758and display interface756coupled to a display754. The display754may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface756may comprise appropriate circuitry for driving the display754to present graphical and other information to a user. The control interface758may receive commands from a user and convert them for submission to the processor752. In addition, an external interface762may be provide in communication with processor752, so as to enable near area communication of device750with other devices. External interface762may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory764, expansion memory774, memory on processor752, or a propagated signal that may be received, for example, over transceiver768or external interface762.

The computing device750may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone780. It may also be implemented as part of a smartphone782, personal digital assistant, or other similar mobile device.

A number of embodiments have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, an application finder module may be implemented as part of a client application on a user device (e.g., mobile device300) for interfacing with application vendor servers. In some implementations, an application finder module may be implemented as part of an application launcher system service (e.g., application launcher540) on a user device (e.g., mobile device300).

For situations in which the systems discussed herein collect personal information about users, the users may be provided with an opportunity to opt in/out of programs or features that may collect personal information (e.g., information about a user's preferences or a user's current location). In addition, certain data may be anonymized in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be anonymized so that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (for example, to a city, zip code, or state level), so that a particular location of the user cannot be determined.

The processes described herein and variations thereof contain functionality to ensure that party privacy is protected. Likewise, the processes may be programmed to confirm that information about a party is publicly known before divulging that information to another party even before incorporating that information into a social graph.