Device configuration based content selection

Systems and methods include receiving an indication of a hardware or software configuration of a client device. Content associated with a downloadable application is identified by matching installation requirements for the application to the hardware or software configuration of the device.

BACKGROUND

As development tools continue to evolve, the number of applications available for mobile and desktop devices is rapidly increasing. Applications are now available from entities that range from amateur programmers to software companies employing thousands of software developers. The types of applications available to users are diverse, allowing users to pick and choose how they want their devices to operate.

SUMMARY

Implementations of the systems and methods for content selection based on the configuration of a device are disclosed herein. One implementation is a method of selecting content for presentation by a device. The method includes receiving, at one or more processors, a content selection request to select third-party content for presentation by the device. The method also includes receiving an indication of a hardware or software configuration of the device. The method further includes identifying content associated with a downloadable application by matching installation requirements for the application to the hardware or software configuration of the device. The content includes a command configured to cause the device to navigate to an online service from which the application is available for download in response to the device receiving input from an interface device.

Another implementation is a system for selecting content for presentation by a device. The system includes one or more processors configured to receive a content selection request to select third-party content for presentation by the device. The one or more processors are also configured to receive an indication of a hardware or software configuration of the device. The one or more processors are further configured to identify content associated with a downloadable application by matching installation requirements for the application to the hardware or software configuration of the device. The content includes a command configured to cause the device to navigate to an online service from which the application is available for download in response to the device receiving input from an interface device.

A further implementation is a computer-readable storage medium having machine instructions stored therein, the instructions being executable by one or more processors to cause the one or more processors to perform operations. The operations include receiving a content selection request to select third-party content for presentation by a device. The operations also include receiving an indication of a hardware or software configuration of the device. The operations further include identifying content associated with a downloadable application by matching installation requirements for the application to the hardware or software configuration of the device. The content includes a command configured to cause the device to navigate to an online service from which the application is available for download in response to the device receiving input from an interface device.

These implementations are mentioned not to limit or define the scope of the disclosure, but to provide an example of an implementation of the disclosure to aid in understanding thereof. Particular implementations may be developed to realize one or more of the following advantages.

DETAILED DESCRIPTION

According to some aspects of the present disclosure, first-party and third-party content may be provided to a client device. As used herein, first-party content refers to the primary online content requested or displayed by the client device. For example, first-party content may be a webpage requested by the client or a stand-alone application (e.g., a video game, a chat program, etc.) running on the device. Third-party content, in contrast, refers to additional content that may be provided in conjunction with the first-party content. For example, third-party content may be a public service announcement or an advertisement that appears in conjunction with a requested webpage (e.g., a search result webpage from a search engine, a webpage that includes an online article, a webpage of a social networking service, etc.) or within a stand-alone application (e.g., an advertisement within a game, a messaging program, a navigation program, etc.).

Generally, a first-party content provider may be any content provider that allows another content provider (i.e., a third-party content provider) to provide content in conjunction with that of the first-party. The first-party content provider may or may not be compensated for allowing a third-party provider to provide content with the first-party provider's content. For example, the first-party provider may receive compensation for allowing certain paid public service announcements or advertisements to be provided in conjunction with the first-party provider's content.

A first-party content provider may allow a content selection service to determine which third-party content is to be provided in conjunction with the first-party provider's content. One or more third-party content providers may also use the content selection service to provide third-party content in conjunction with content from any number of first-party providers. In some cases, the content selection service may dynamically select which third-party content is presented in conjunction with a first-party provider's content. For example, a first-party webpage may display different advertisements selected by the service during different visits to the webpage. The content selection service may determine which third-party content is provided based on any number of factors. For example, a third-party advertisement for golf clubs may appear on a webpage devoted to reviews of golf resorts. The content selection service may also conduct a content auction to select the third-party content to be provided from among the various third-party content providers.

For third-party content that promotes a software application, the content may include a link that allows a user to purchase and/or download the application. However, the downloadable application may be configured for use only by specific types of devices based on the devices' hardware and/or software configurations (e.g., a device's operating system, other installed applications on the device, etc.). According to various implementations, a content selection service that selects third-party content for presentation by a device may be configured to allow a third-party content provider to either explicitly or implicitly limit the types of devices to which the third-party content is sent. For example, a third-party advertiser that is offering a game for download may explicitly specify that they only want advertisements for the game to be sent to mobile devices having a particular hardware configuration or running a specific version of an operating system. In another example, the system requirements may be retrieved automatically by the service from another source such as a website or an application marketplace from which the application is available for download.

Referring now toFIG. 1, a block diagram of a computer system100is shown, according to various implementations. System100includes a client device102which communicates with other computing devices via a network106. Client device102may execute a web browser or other application (e.g., a video game, a messenger program, a media player, a social networking application, a navigation program, etc.) to retrieve content from other devices over network106. For example, client device102may communicate with any number of content sources108,110(e.g., a first content source through nth content source). Content sources108,110may provide webpage data and/or other content, such as images, video, audio, or applications to client device102. Computer system100may also include a content selection service104configured to select content to be provided to client device102. For example, content source108may provide a first-party webpage to client device102that includes additional third-party content selected by content selection service104. In another example, content selection service104may select a third-party advertisement for presentation within a non-browser application running on client device102.

Network106may be any form of computer network that relays information between client device102, content sources108,110, and content selection service104. For example, network106may include the Internet and/or other types of data networks, such as a local area network (LAN), a wide area network (WAN), a cellular network, satellite network, or other types of data networks. Network106may also include any number of computing devices (e.g., computer, servers, routers, network switches, etc.) that are configured to receive and/or transmit data within network106. Network106may further include any number of hardwired and/or wireless connections. For example, client device102may communicate wirelessly (e.g., via WiFi, cellular, radio, etc.) with a transceiver that is hardwired (e.g., via a fiber optic cable, a CATS cable, etc.) to other computing devices in network106.

Client device102may be any number of different types of user electronic devices configured to communicate via network106(e.g., a laptop computer, a desktop computer, a tablet computer, a smartphone, a digital video recorder, a set-top box for a television, a video game console, combinations thereof, etc.). Client device102is shown to include a processor112and a memory114. Memory114may store machine instructions that, when executed by processor112cause processor112to perform one or more of the operations described herein. Processor112may include one or more microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), other forms of processing circuits, or combinations thereof. Memory114may include, but is not limited to, electronic, optical, magnetic, or any other storage or transmission device capable of providing processor112with program instructions. Memory114may include a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ROM, RAM, EEPROM, EPROM, flash memory, optical media, or any other suitable memory from which processor112can read instructions.

Client device102may include one or more user interface devices. A user interface device may be any electronic device that conveys data to a user by generating sensory information (e.g., a visualization on a display, one or more sounds, etc.) and/or converts received sensory information from a user into electronic signals (e.g., a keyboard, a mouse, a pointing device, a touch screen display, a microphone, etc.). The one or more user interface devices may be internal to the housing of client device102(e.g., a built-in display, microphone, etc.) or external to the housing of client device102(e.g., a monitor connected to client device102, a speaker connected to client device102, etc.), according to various implementations. For example, client device102may include an electronic display116, which displays webpages and other data received from content sources108,110and/or content selection service104. In various implementations, display116may be located inside or outside of the same housing as that of processor112and/or memory114. For example, display116may be an external display, such as a computer monitor, television set, or any other stand-alone form of electronic display. In other examples, display116may be integrated into the housing of a laptop computer, mobile device, or other form of computing device having an integrated display.

Content sources108,110may be one or more electronic devices connected to network106that provide content to devices connected to network106. For example, content sources108,110may be computer servers (e.g., FTP servers, file sharing servers, web servers, etc.) or combinations of servers (e.g., data centers, cloud computing platforms, etc.). Content may include, but is not limited to, webpage data, a text file, a spreadsheet, images, search results, and other forms of electronic documents. Similar to client device102, content sources108,110may include processors122,126and memories124,128, respectively, that store program instructions executable by processors122,126. For example, memory124of content source108may include instructions such as web server software, FTP serving software, or other types of software that cause content source108to provide content via network106.

Similar to content sources108,110, content selection service104may be one or more electronic devices connected to network106. Content selection service104may be a computer server (e.g., FTP servers, file sharing servers, web servers, etc.) or a combination of servers (e.g., a data center, a cloud computing platform, etc.). Content selection service104may have a processor118and a memory120that stores program instructions executable by processor118. In cases in which content selection service104is a combination of computing devices, processor118may represent the collective processors of the devices and memory120may represent the collective memories of the devices.

Client device102may identify itself to content selection service104through the use of one or more device identifiers. Device identifiers may include, but are not limited to, cookies, universal device identifiers (UDIDs), device serial numbers, telephone numbers, or network addresses. For example, content selection service104may set a cookie on client device102when client device102visits a particular webpage. On subsequent webpage visits, the cookie may be sent by client device102to content selection service104, allowing content selection service104to attribute the different webpage visits to the same client device.

According to various implementations, content sources108,110may provide webpage data to client device102that includes one or more content tags. In general, a content tag may be any piece of webpage code associated with the action of including third-party content with a first-party webpage. For example, a content tag may define a slot on a webpage for third-party content, a slot for out of page third-party content (e.g., an interstitial slot), whether third-party content should be loaded asynchronously or synchronously, whether the loading of third-party content should be disabled on the webpage, whether third-party content that loaded unsuccessfully should be refreshed, the network location of a content source that provides the third-party content (e.g., content sources108,110, content selection service104, etc.), a network location (e.g., a URL) associated with clicking on the third-party content, how the third-party content is to be rendered on a display, a command that causes client device102to set a browser cookie (e.g., via a pixel tag that sets a cookie via an image request), one or more keywords used to retrieve the third-party content, and other functions associated with providing third-party content with a first-party webpage. In other words, a content tag may cause client device102to send a content selection request to content selection service104. For example, content source108may provide webpage data that causes client device102to retrieve third-party content from content selection service104. In another implementation, content may be selected by content selection service104and provided by content source108as part of the first-party webpage data sent to client device102. In a further example, content selection service104may cause client device102to retrieve third-party content from a specified location, such as memory114or content sources108-110.

Content sources108,110may also provide an executable application to client device102. Applications may include, but are not limited to, messaging programs (e.g., chat programs, email programs, text messaging programs, etc.), navigation programs, games, scheduling programs (e.g., programs that allow a user maintain a list of appointments, etc.), social networking applications, and content-streaming programs (e.g., audio streaming applications, video streaming applications, etc.). In other implementations, an application installed on client device102may be pre-installed (e.g., by the manufacturer or retailer) and configured to receive content from content sources108,110. For example, a pre-installed media player application may be configured to download or stream a song from content source108. An application executed by client device102may be configured to provide a device identifier for the application to content selection service104. For example, the application may be configured to generate and/or provide a UDID or other device identifier to content selection service104. Such a device identifier may be provided by client device102to content selection service104as part of a content selection request. For example, a game on client device102may request an advertisement from content selection service104to be presented within the game.

Content selection service104may receive and use history data associated with a device identifier to select relevant content for the user of client device102. History data may be any data associated with a device identifier that is indicative of actions or events at client device102(e.g., visiting a webpage, interacting with presented content, conducting a search, making a purchase, downloading content, etc.). For example, a cookie may be sent from client device102to content selection service104when the user of client device102visits a particular webpage devoted to a topic. In another example, a non-browser application on client device102may provide history data to content selection service104when a particular type of event occurs in the application (e.g., the player reaches a new level of a game, a song or video clip finishes playing, etc.). In further examples, history data may include data regarding whether a particular piece of third-party content has already been provided to client device102or another device associated with the user of client device102(e.g., to control how often a particular piece of selected content is presented to a user). Based in part on the analyzed history data, content selection service104may select third-party content to be provided in conjunction with first-party content (e.g., as part of a displayed webpage, as a pop-up, within a video game, within another type of application, etc.).

Content selection service104may analyze received history data associated with a device identifier to identify one or more topics that may be of interest to the corresponding user. Content selection service104may then associate an identified topic with the device identifier. For example, content selection service104may perform text and/or image analysis on a webpage from content source108, to determine one or more topics of a webpage visited by the device identifier. In some implementations, a topic may correspond to a predefined interest category used by content selection service104. Such an interest category may be associated with the device identifier by content selection service104. For example, a webpage devoted to the topic of golf may be classified under the interest category of sports. If history data for a device identifier signifies a visit to the golf-related webpage, the interest category of sports may be associated with the device identifier and used by content selection service104to select content for the device identifier. In some cases, interest categories used by content selection service104may conform to a taxonomy (e.g., an interest category may be classified as falling under a broader interest category). For example, the interest category of golf may be /Sports/Golf, /Sports/Individual Sports/Golf, or under any other hierarchical category.

For situations in which personal information about the user of client device102is collected or used to select third-party content, the user may be provided with an opportunity to control whether programs or features that may collect personal information (e.g., information about a user's social network, social actions or activities, a user's preferences, or a user's current location) do so, or an opportunity to control whether or how to receive content from content selection service104that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used by content selection service104, so that personally identifiable information is removed when generating parameters (e.g., demographic parameters). 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 (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about him or her and used by content selection service104.

The third-party content selected by content selection service104may be provided by content selection service104to client device102via network106. For example, content source110may upload the third-party content to content selection service104. Content selection service104may then provide the third-party content to client device102to be presented in conjunction with a first-party webpage provided by content source108or in a stand-alone application executed by client device102. In other implementations, content selection service104may provide an instruction to client device102that causes client device102to retrieve the selected third-party content (e.g., from memory114of client device102, from content source110, etc.).

Third-party content selected by content selection service104for presentation by client device102may be associated with an application available for download from one of content sources108-110or content selection service104itself. For example, content selection service104may select and provide an advertisement that advertises an application (e.g., a game, a media player, etc.) or other data file (e.g., a music file, a video file, etc.) available for download. The third-party content associated with a downloadable application may be hotlinked or otherwise interactive such that clicking or otherwise interacting with the content via a user interface device causes client device102to navigate to the content source from which the application is available. In some implementations, the linked content source is an application market. For example, client device102may execute an application specifically configured to access the application market in response to the user of client device102clicking on an advertisement for a game application. In other implementations, the content source is a webpage or website provided by one of content sources108-110from which the application is available for download. For example, clicking on an advertisement for a downloadable game may cause client device102to launch a web browser that navigates to a webpage from which the application is available.

Content selection service104may select third-party content associated with a downloadable application based on a hardware and/or software configuration of client device102. In some implementations, the hardware or software configuration of client device102may be reported to content selection service104via a web browser executed by client device102. For example, a hypertext transfer protocol (HTTP) request for third-party content from client device102may include a browser agent header. A HTTP browser agent header may include, for example, information such as the type or version of the application making the request, the operating system of client device102, or information regarding the layout engine of the application making the request. In some implementations, a webpage script may be included as part of a content tag on a webpage accessed by client device102. The script may retrieve information regarding the configuration of client device102and report the configuration of client device102to content selection service104. In some implementations, content selection service104may store system configuration data regarding client device102in conjunction with a device identifier for client device102(e.g., a cookie, a universal device identifier, an IP address, etc.) and retrieve the configuration data when a content selection request containing the request is received by content selection service104.

In some cases, content selection service104selects third-party content for presentation within a non-browser application on client device102(e.g., an application in which the third-party content is not presented in conjunction with a webpage). The application may store or access data regarding the configuration of client device102and report the configuration data to content selection service104. For example, a non-browser application executed by client device102may report on the device model, operating system, installed applications, or other such information to content selection service104. According to further implementations, a software library or software development kit (SDK) used by a non-browser application on client device102may report the configuration of client device102to content selection service104.

Content selection service104may match a configuration of client device102to system requirements for an application or other data file associated with third-party content, to determine whether the content is eligible to be selected for presentation by client device102. For example, a navigation application may be installable only by mobile devices having a particular hardware platform. If client device102has a hardware platform that differs from the requirements of the application, content selection service104may determine that an advertisement for the application is not eligible to be selected for presentation by client device102. In another example, content selection service104may determine that third-party content associated with a music file is ineligible to be selected for presentation by client device102if the configuration of client device102is such that the music file cannot be played by client device102(e.g., client device102has no speakers, client device102lacks the requisite software, etc.).

In some implementations, the system requirements of an application associated with third-party content may be specified explicitly to content selection service104by a provider of the application. For example, an application developer may specify device configurations when creating an advertising campaign via content selection service104to provide an advertisement only to devices having certain configurations.

In further implementations, content selection service104may automatically retrieve system requirements for an application from the content source from which the application is available for download. For example, content selection service104may parse the text of a webpage, application market, or the like from which the application is available for download to determine the system requirements of the application. In some cases, content selection service104may use unique application identifiers to distinguish the system requirements of different applications. Content selection service104may determine the system requirements of an application as an offline process (e.g., as a periodic batch job) or in real time when a content selection request is received from client device102. In some implementations, content selection service104may receive the system requirements for an application via a feed from the application marketplace or other source from which the application is available. Content selection service104may also utilize parameters set by a third-party content provider to control how the system requirements are determined (e.g., content selection service104may allow a content provider to either manually specify the system requirements of the application or elect to have content selection service104automatically detect the system requirements by setting an auto-detect parameter).

In addition to the system configuration of client device102, content selection service104may base the selection of third-party content on any number of other factors. In some implementations, content selection service104may conduct a content auction among third-party content providers to determine which third-party content is selected for presentation by client device102. For example, content selection service104may compare bids associated with the different third-party content to determine which content is to be selected. Content selection service104may also determine a quality score associated with each piece of third-party content and use the quality score to select which third-party content is selected. In general, a quality score is a measure of the likelihood of the user of client device102clicking on a particular piece of third-party content, should it be selected. Such a quality score may be determined based on the previous performance of the third-party content and/or how well a topic of the content matches an identified interest of the user of client device102.

Parameters specified by third-party content providers may also be used to control which third-party content is selected by content selection service104. In some implementations, a third-party content provider may specify a topic of first-party content with which the third-party content is to be presented. For example, a developer of a football game application may specify that advertisements for the game are only to appear on webpages devoted to football. In further implementations, a third-party content provider may specify an interest category. If a device identifier for client device102is associated with the specified interest category, the third-party content may be eligible for selection. In a further implementation, content selection service104may select third-party content for client device102based on a geographic location of client device102. For example, a third-party content provider may specify to content selection service104that they wish advertisements for the game to only be selected for devices located in the United States of America.

According to further implementations, content selection service104may also be configured to select first-party content that is eligible for presentation by client device102based on the configuration of client device102. In other words, certain first-party content may also be filtered by client device102based on whether or not an application or other data file associated with the first-party content is supported by the configuration of client device102. For example, assume that content source108is a search engine that provides first-party search results to client device102. Also, assume that client device102performs a search for “golf games” via the search engine. In such a case, content selection service104may restrict the first-party links on the search result page based in part on whether a search result links to a game that can be installed and played by client device102.

Referring now toFIG. 2, an illustration is shown of electronic display116displaying an example webpage222. Electronic display116is in electronic communication with processor112which causes visual indicia to be displayed on electronic display116. As shown, processor112may execute a web browser200stored in memory114of client device102, to display indicia of content received by client device102via network106. In other implementations, another application executed by client device102may incorporate some or all of the functionality described with regard to web browser200(e.g., a video game, a chat application, etc.).

Web browser200may operate by receiving input of a uniform resource locator (URL) via a field202from an input device (e.g., a pointing device, a keyboard, a touch screen, etc.). For example, a URL may be entered into field202. Processor112may use the inputted URL to request data from a content source having a network address that corresponds to the entered URL. In other words, client device102may request first-party content accessible at the inputted URL. In response to the request, the content source may return webpage data and/or other data to client device102. Web browser200may analyze the returned data and cause visual indicia to be displayed by electronic display116based on the data.

In general, webpage data may include text, hyperlinks, layout information, and other data that may be used to provide the framework for the visual layout of webpage222. In some implementations, webpage data may be one or more files of webpage code written in a markup language, such as the hypertext markup language (HTML), extensible HTML (XHTML), extensible markup language (XML), or any other markup language. The webpage data may include data that specifies where indicia appear on webpage222, such as text206,208,210. In some implementations, the webpage data may also include additional URL information used by web browser200to retrieve additional indicia displayed on webpage222. For example, the webpage data may also include one or more instructions used by processor112to retrieve images212,214,216from their respective content sources.

Web browser200may include a number of navigational controls associated with webpage222. For example, web browser200may be configured to navigate forward and backwards between webpages in response to receiving commands via inputs204(e.g., a back button, a forward button, etc.). Web browser200may also include one or more scroll bars220, which can be used to display parts of webpage222that are currently off-screen. For example, webpage222may be formatted to be larger than the screen of electronic display116. In such a case, the one or more scroll bars220may be used to change the vertical and/or horizontal position of webpage222on electronic display116.

One or more content tags may be embedded into the code of webpage222that defines a content field located at the position of third-party content218. Another content tag may cause web browser200to request additional content from content selection service104, when webpage222is loaded. In other words, client device102may send a content selection request to content selection service104. Such a request may include one or more keywords, an indication of the visit to webpage222, or other data used by content selection service104to select content to be provided to client device102. In one example, assume that content selection service104has already set a cookie on client device102via web browser200. In such a case, the content selection request may include the cookie, to identify client device102to content selection service104. In response, content selection service104may select third-party content218using the cookie or other device identifier sent as part of the request. For example, content selection service104may analyze history data associated with the cookie and/or history data associated with any other device identifier linked to the cookie, to select third-party content218. If the content selection request does not include a device identifier, content selection service104may set a cookie or other device identifier at this time for use with future requests from client device102.

As a result of content selection service104receiving the cookie set via web browser200whenever client device102visits a website that uses the selection service, content selection service104may also receive history data for the cookie. For example, content selection service104may receive history data indicative of webpage222being visited by the device identifier, when webpage222was visited, and one or more topics of webpage222. In some implementations, content selection service104may use text recognition on webpage222(e.g., on text206,208,210, etc.) and/or image recognition on webpage222(e.g., on images212,214,216, etc.), to determine one or more topics of webpage222. In further implementations, webpage data for webpage222may include metadata that identifies the topic. Such topics may then be used to select content for the cookie and/or any other device identifiers linked to the cookie.

According to various implementations, web browser200may send information regarding the hardware and/or software configuration of client device102to content selection service104as part of a content selection request. If a cookie is included in a content selection request from client device102, content selection service104may store and associate any accompanying system information with the cookie. In some implementations, a header of the content selection request may include hardware and/or software information regarding client device102. For example, web browser200may send a browser agent header that identifies the type of the browser, the operating system of client device102, or other such information as part of an HTTP formatted content selection request. In other examples, other communication protocols that include a browser agent header may be used by web browser200to send a content selection request to content selection service104.

In some cases, a content tag in the code of webpage222may be a script executed by web browser200when webpage222is loaded. In various implementations, the script may determine a hardware and/or software configuration of client device102. For example, an embedded script on webpage222may query which plugins are installed in web browser200or whether client device102uses hardware accelerated graphics. The script may determine any information regarding the hardware or software of client device102. For example, the script may determine the make, model, processor, memory size, operating system, installed software, or the like of client device102. The script may include the determined system information when sending a content selection request to content selection service104.

Content selection service104may select third-party content218based on the system configuration of client device102and any other factors. As shown, third-party content218is an advertisement for a downloadable baseball game application. Interacting with third-party content218may cause web browser200to navigate to a location from which the game is available for download. In various implementations, content selection service104may determine whether third-party content218is eligible for presentation by client device102based on the received hardware and/or software configuration of client device102. For example, content selection service104may filter advertisements and other third-party content for downloadable applications based on the configuration of client device102, prior to selection.

In some implementations, content selection service104may select third-party content218based on factors in addition to the configuration of client device102. Example factors that may be used by content selection service104to select third-party content may include, but are not limited to, the results of a content auction (e.g., content selection service104may compare a bid amount associated with third-party content218to bids from other content providers), a quality score associated with third-party content218(e.g., a measure of the likelihood of the user of client device102clicking on third-party content218), a topic of webpage222, or an interest category associated with a device identifier for client device102. In one example, third-party content218may be selected based in part on a match between a topic of webpage222and a topic of the game application (e.g., based on both the game and webpage222being devoted to baseball). In another example, assume that web browser200is used to visit a number of webpages devoted to baseball. In such a case, a cookie set via web browser200may be associated with the interest category of baseball, which is then used by content selection service104to select third-party content218for presentation on webpage222.

In some implementations, content selection service104may provide third-party content218directly to client device102. In other implementations, content selection service104may send a command to client device102that causes client device102to retrieve third-party content218. For example, the command may cause client device102to retrieve third-party content218from a local memory, if third-party content218is already stored in memory114, or from a networked content source. In this way, any number of different pieces of content may be placed in the location of third-party content218on webpage222. In other words, one user that visits webpage222may be presented with third-party content218and a second user that visits webpage222may be presented with different content. Other forms of content (e.g., an image, text, an audio file, a video file, etc.) may be selected by content selection service104for display with webpage222in a manner similar to that of third-party content218. In further implementations, content selected by content selection service104may be displayed outside of webpage222. For example, content selected by content selection service104may be displayed in a separate window or tab of web browser200, may be presented via another software application (e.g., a text editor, a media player, etc.), or may be downloaded to client device102for later use.

Referring now toFIG. 3, an application displaying selected content is shown, according to one illustrative example. As shown, client device102may execute a navigation application300. In general, navigation application300operates by determining the location of client device102and providing indicia, such as a map, to electronic display116. For example, client device102may include a GPS receiver and/or may use cellular triangulation to determine its location. Navigation application300may use the determined location to retrieve a map of the location either from a local memory or from a remote source. Navigation application300may then provide the map to electronic display116with an indication302of the determined location of client device102. Navigation application300may also include a selectable input304configured to allow the user of client device102to obtain directions to another geographic location. For example, the user of client device102may select input304to obtain driving directions from the location indicated by indication302to another location.

Navigation application300may be configured to send a UDID or other form of device identifier as part of a content selection request to content selection service104. In some implementations, the UDID may be a hashed value, thereby anonymizing the UDID to ensure the privacy of the user of client device102. Such a content selection request may include various information, such as the general or specific location of client device102or the current actions performed via navigation application300. For example, the content selection request may also indicate that navigation application300is currently being used to obtain driving directions to the nearest pizza restaurant.

According to various implementations, the content selection request sent by application300to content selection service104may include information regarding the hardware and/or software configuration of client device102. Hardware and/or software information sent by application300to content selection service104may include, but is not limited to, the make, model, operating system, installed applications, memory size, version information, CPU speed, graphics accelerators, peripheral devices (e.g., whether client device102has a GPS receiver, a camera, etc.), or other such configuration information of client device102. In some implementations, application300may use an SDK associated with content selection service104to include third-party content in the first-party application300. In further implementations, client device102may execute another application (e.g., a different application than application300) that is configured to collect and report system information regarding client device102to content selection service104. The other application may report the system information synchronously with a content selection request from application300or at any other time (e.g., the system information may be reported periodically to content selection service104, in response to a request for system information from content selection service104, etc.).

In response to receiving the content selection request from navigation application300, content selection service104may select third-party content306for presentation within application300. As shown, third-party content306is an advertisement for a downloadable baseball game application. Interacting with third-party content306(e.g., clicking on content306, touching a touch screen in the area of content306, etc.) may cause client device102to launch a web browser or marketplace application that navigates to a location from which the game can be downloaded.

Third-party content306may be selected based in part on the received system information regarding client device102. For example, content selection service104may determine that third-party content306is eligible for presentation in application300based on a match between the system requirements of the baseball game and the received system configuration of client device102. The system requirements of the game may be software-based requirements, such as software that run in conjunction with the game (e.g., a multimedia player, a web browser, etc.) or a particular operating system. The system requirements of the game may also be hardware-based requirements, such as certain peripheral requirements (e.g., the game may require a touch-screen display, etc.), GPU requirements, processing speed requirements, or memory requirements (e.g., available hard disk space, RAM, etc.).

Third-party content306may also be selected based on any other data associated with client device102. In some implementations, content selection service104may select third-party content306based in part on history data associated with a device identifier for client device102. For example, the history data may indicate that client device102was used to visit a number of webpages devoted to baseball. In further implementations, third-party content306may be selected based on a geographic location of client device102. For example, assume that client device102is located near a baseball stadium308. Based in part on the close proximity of client device102to baseball stadium308, third-party content306may be selected for presentation in application300since the game is also related to baseball.

Referring now toFIG. 4, a block diagram is shown of the computer system100ofFIG. 1in which content is selected based on a device configuration, according to some implementations. In the example shown, client device102, content selection service104, and content source110communicate with one another via network106to facilitate the selection of third-party content for presentation by client device102. In particular, third-party content is selected by content selection service104based in part on whether the configuration of client device102is supported by an application associated with the third party content.

Client device102may store and execute any number of first-party applications in which third-party content selected by content selection service104may be presented. As shown, client device102may include a web browser422which is configured to retrieve and display webpages available from content sources via network106(e.g., a search result webpage of an online search engine, a visited webpage, etc.). Client device102may also include non-browser applications424-426(e.g., a first application through nth application). In general, applications424-426differ from web browser422in that web browser422is configured to retrieve webpages in response to a URL specified by the user of client device102. Applications424-426, in contrast, may be configured to only retrieve specific webpages, access predefined online services (e.g., the accessed services are included in the code of applications424-426), launch web browser422to retrieve a webpage, or not use any webpage data at all. For example, applications424-426may be communications programs (e.g., email programs, instant messenger programs, etc.), productivity programs (e.g., text editors, software development programs, spreadsheet applications, etc.), social networking programs, multimedia players (e.g., music players, movie players, etc.), games, navigation programs, or any other form of application.

Web browser422may access a first-party webpage and provide the webpage for presentation on display116. In some implementations, the webpage may include a content tag that causes web browser422to send a content selection request400to content selection service104. Content selection request400may request, for example, third-party content to be selected for presentation in conjunction with the first-party webpage (e.g., as content embedded in the webpage, in a popup window, etc.). In some cases, content selection request400includes a device identifier for client device102, such as a cookie set by content selection service104. Other information that may be included in content selection request400may include a topic of the webpage being accessed by web browser422, the address of the webpage being accessed, or other such information.

Any of applications424-426may also generate content selection request400in addition to, or in lieu of, web browser422making the request. Applications424-426may, in some implementations, utilize a common SDK associated with content selection service104to include third-party content within the applications (e.g., a common SDK on client device102may be invoked by any of applications424-426to generate content selection request400). For example, the developers of applications424-426may use an advertising SDK in the applications to generate advertising revenue when applications424-426are used. Content selection request400may be generated by applications424-426at any time. For example, applications424-426may generate content selection request400periodically, after a certain amount of time has passed during use, at a specific point in time during use (e.g., in between levels of a game, in between songs being played, etc.), or in response to a trigger within the application. Similar to web browser422, applications424-426may include a device identifier (e.g., a UDID or another identifier) in content selection request400.

Web browser422and/or applications424-426may also provide configuration data402to content selection service104. In some implementations, configuration data402is provided in conjunction with content selection request400and may even be part of content selection request400. In other implementations, configuration data402is provided separately from content selection request400, concurrently with content selection request400or at another time. For example, one of applications424-426may send configuration data402to content selection service104periodically (e.g., nightly, weekly, etc.), in response to a configuration change at client device102, or in response to a request for configuration data402from content selection service104.

Configuration data402may include any information regarding the hardware and/or software configuration of client device102. Software configuration information may include, but is not limited to, the applications installed on client device102, the operating system of client device102, the version of software installed on client device102, plug-ins or add-ons for an application on client device102, software-based audio or video accelerators, networking software, encryption software, or the like. Hardware configuration information may include, but is not limited to, the actual make or model client device102, the chipset of processor112, metrics indicative of the use of processor112(e.g., the average % use of processor112at any given time), metrics indicative of the use of memory114(e.g., a metric indicative of the available storage in memory114at any given time), peripheral devices of client device102(e.g., whether display116is a touch screen display, whether client device102includes a GPS receiver, camera, etc.), or other hardware configuration information.

In some implementations, configuration data402is included by web browser422in a browser agent header of content selection request400. For example, web browser422may report configuration information to content selection service104regarding the type of web browser422, the version of web browser422, the operating system of client device102, or any other information regarding web browser422. In other implementations, a script executed by web browser422generates and provides configuration data402to content selection service104. For example, a first-party webpage being accessed by web browser422may include a script that generates configuration data402and provides it to content selection service104with content selection request400.

In further implementations, applications424-426may generate and provide configuration data402to content selection service104. In some cases, configuration data402may include more information regarding the hardware or software configuration of client device102than that of a browser agent header generated by web browser422. For example, applications424-426may have access to the full list of applications installed by client device102(e.g., from an application marketplace application, from the operating system of client device102, etc.) or the peripheral devices of client device102. In some implementations, one of applications424-426may receive configuration data402from another one of applications424-426to provide to content selection service104. For example, one of applications424-426may be an application executed at startup of client device102that verifies the hardware and/or software configuration of client device102(e.g., a configuration monitoring program). When another of applications424-426generates content selection request400, it may also retrieve configuration data402determined by the configuration monitoring program and include configuration data402in content selection request400.

Content selection service104may store and execute any number of software modules to select third-party content for presentation by client device102. As shown, content selection service104may include a content selector404and content filter408, which are software components stored in memory120and executed by processor118. In some cases, content selection service104also stores third-party content406from any number of third-party content providers. In other implementations, third-party content406is stored by other computing devices on network106(e.g., content sources108-110, client device102, etc.). In such cases, content selection service104may provide an indication of the selected third-party content to client device102which then retrieves the third-party content for presentation.

Third-party content406may include text, images, or multimedia files specified by third-party content providers. In some implementations, third-party content406is also interactive (e.g., a user may interact with the content via a user interface device). For example, third-party content406may be configured to cause client device102to perform operations in response to third-party content406being clicked by a user of client device102. The operations may cause client device102to launch a marketplace application (e.g., one of applications422-424) configured to download and install applications to client device102. The operations may also cause web browser422to navigate to a particular webpage or website. For example, clicking on a third-party advertisement for golf clubs may cause web browser422to navigate to an online retail store of the third-party content provider at which golf clubs may be purchased.

Some or all of third-party content406may be associated with applications414available for download from content source110. In some cases, content source110is a web server that serves one or more webpages from which applications414may be downloaded. In other cases, content source110is an online application marketplace from which applications414may be downloaded. Associated with applications414may be system requirements412. System requirements412generally indicate the preferred, supported, or minimum system requirements to download and install applications414. System requirements412may include hardware and/or software requirements for applications414to be installed by client device102. For example, system requirements412may indicate that a particular application in applications414is only available for installation by mobile devices running the “Robot” operating system version 3.0 or higher. In another example, system requirements412may indicate that a touch-screen based game in applications414requires client device102to have a touch-screen display to install the game.

In some implementations, system requirements412may be determined by one or more computing devices in communication with content selection service104. For example, content selection service104may communicate with a farm of computing devices having different configurations. The computing devices may attempt to install and execute applications414to determine system requirements412, if system requirements412are not available from content source110. Thus, the system requirements412of applications414may be determined automatically, in some implementations.

Content selector404is configured to select content410from among third-party content406, in response to receiving content selection request400. Content selector404may then return selected content410to client device102for presentation (e.g. by web browser422or one of applications424-426) or may return an indication that content410was selected (e.g., thereby causing client device102to retrieve the selected third-party content). Content selector404may base the selection of content410on any number of parameters such as a topic of the first-party content with which selected content410is to be presented, an interest category associated with a device identifier in content selection request400(e.g., based on a stored history of visited websites or other online actions performed by client device102), a geographic location of client device102, a quality score associated with content410, or other such information. In some implementations, content selector404may conduct a content auction to select content410. In a content auction, content selector404may compare bids associated with third-party content406to select content410. For example, an advertiser having an advertisement in third-party content406may place a bid of $5 in the auction that indicates the advertiser is willing to pay $5 if the user of client device102clicks on his or her advertisement.

In cases in which third-party content406includes third-party content associated with one of applications414available for download, content selector404may use content filter408to determine which of third-party content406is eligible for selection based on configuration data402. Content filter408may be configured to compare system requirements412for one of applications414to configuration data402received from client device102, to determine whether the third-party content associated with the application is eligible for presentation by client device102(e.g., whether the configuration of client device102meets the installation requirements of the application). Content filter408may notify content selector404as to whether or not a piece of content in third-party content406is eligible for selection. For example, selected content410may be an advertisement for a game available for download and selected based on a determination that client device102can install and run the game.

In various implementations, content filter408may automatically (e.g., without further input from a third-party content provider) retrieve system requirements412from content source110. In some implementations, content filter408may perform text recognition or text analysis on a webpage or download screen from content source110from which one of applications414is available for download, to identify system requirements412. For example, assume that an advertisement in third-party content406for a game in applications414includes a link to the webpage or portion of an application marketplace from which the game is available for download. In such a case, content filter408may traverse the link and analyze the screen or webpage from which the game is available for download to identify the system requirements to install the game. In other implementations, system requirements412may be received by content filter408via a feed from content source110(e.g., content source110may report system requirements412to content selection service104). In some implementations, content filter408may determine whether or not client device102can install a particular application in applications414as an offline process (e.g., not in response to receiving content selection request400). For example, content filter408may uniquely identify applications414, compare configuration data402associated with a device identifier for client device102to system requirements412, and associate the device identifier with only those of applications414eligible for installation by client device102. In response to receiving a content selection request that includes the device identifier, content selection service104may then retrieve the eligible applications and their corresponding third-party content for use by content selector404. In yet further implementations, system requirements412may be manually associated with third-party content406by a third-party content provider or another such entity. For example, an advertiser of a mobile application may specify the system requirements of the application when uploading an advertisement for the application to content selection service104.

After selected content410is presented by web browser422or one or applications424-426, the user of client device102may decide to learn more about the corresponding application or download the application outright. In some implementations, selected content410is interactive content and redirects client device102to a webpage or marketplace screen from which the application may be downloaded. In other implementations, selected content410is not interactive (e.g., an impression-based advertisement or the like). If the user of client device102decides to download the corresponding application, client device102may issue a download request416to content source110for the application. In response, content source110may provide installation data418to client device102. Installation data418may be executed automatically upon download or in response to input from the user of client device102(e.g., the user clicks on an install icon, the user confirms the installation, etc.). As a result of the installation process, downloaded application420is installed into memory114and made available for use by the user of client device102.

Referring now toFIG. 5, a flow diagram is shown of a process500for selecting third-party content based on a device configuration, according to various implementations. In general, process500allows third-party content (e.g., an advertisement or the like) featuring a downloadable application to be selected for presentation by a client device based on whether or not the client device is able to install and run the application. Process500may be implemented by one or more computing devices executing stored machine instructions. For example, process500may be implemented by a content selection service, such as content selection service104shown inFIGS. 1 and 3.

Process500may include receiving a content selection request (block502). In some implementations, the content selection request is received from a web browser executed by the client device. For example, a first-party webpage being accessed by a the web browser may include a content tag or other instruction that causes the web browser to generate a content selection request. In another implementation, the content selection request may correspond to a search being performed by the web browser via an online search engine. For example, a search for “most popular games” may indicate that third-party content should be selected for presentation as part of the search result webpage. In further implementations, the content selection request may be received from a non-browser application executed by the client device. The content selection request may be received in response to a particular action being performed by the client device (e.g., visiting a webpage, performing a web search, etc.), reaching a trigger point within a non-browser application (e.g., upon completing a level in a game, reaching the end of played media content, etc.), or at predetermined time intervals (e.g., every five minutes when an application is run).

Process500may include receiving device configuration data for the client device (block504). The device configuration data may indicate a hardware and/or software configuration of the client device. For example, the device configuration data may indicate the type or version of an installed application or other software component on the device (e.g., the operating system of the device, an application on the device, a plug-in for an application on the device, etc.), the presence of a hardware peripheral on the device (e.g., a camera, touch-screen display, GPS receiver, etc.), the make or model of the device, or performance metrics regarding the hardware of the device (e.g., the clock speed of the device's processor, the amount of RAM or hard disk available on the device, etc.).

The device configuration data may be received as part of the content selection request, in conjunction with the content selection request, or at another time, according to various implementations. In some implementations, the device configuration data is included as part of a browser agent header of the content selection request. In further implementations, a webpage script or monitoring application on the client device may generate the device configuration data. In further implementations, a non-browser application in which the third-party content is to be presented may generate the device configuration data.

Process500may include identifying third-party content associated with an application eligible for download by the client device (block506). In some cases, a third-party advertisement or the like may feature an application available for download. In such cases, system requirements for the application may be compared to the received device configuration data to determine whether the application is eligible for download by the client device. For example, the downloadable application may require that the client device has a particular type or version of operating system to install the application. In another example, the downloadable application may require that the client device have a particular type of peripheral or set of installed software, to support the application. In some implementations, the third-party content may be prevented from being selected if the corresponding application has already been installed by the client device (e.g., as indicated by the received device configuration data).

The system requirements of a downloadable application may be manually specified or automatically detected, according to various implementations. In some implementations, the system requirements for the application may be specified manually with the third-party content. In other implementations, a link associated with the third-party content (e.g., a link to a location from which the application can be downloaded) may be traversed automatically, to determine the system requirements of the application. For example, a content selection service may analyze the text of the webpage or screen of an application marketplace, to identify system requirements for the downloadable application. In further implementations, the system requirements may be provided to a content selection service from the download source. For example, an application marketplace may provide a feed (e.g., an XML feed, a text feed, etc.) that includes data regarding the available applications and the system requirements of the applications. Such a feed may be provided to the content selection service periodically, in response to an update to the system requirements of an application (e.g., a new application becomes available, a new version of an application becomes available, etc.), or in response to a request from the content selection service.

Process500may include providing the identified third-party content for presentation by the client device (block508). In various implementations, the third-party content may be selected for presentation by the client device based on any number of factors in addition the to corresponding application being eligible for download by the client device. Factors that may be used to select the third-party content may include, but are not limited to, a geographic location of the client device, search terms used by the client device as part of a search, a quality score associated with the third-party content, a topic of the first-party content with which the third-party content is to be presented, an interest category associated with a device identifier for the client device, the results of a content auction, campaign parameters associated with the third-party content (e.g., parameters that control how and when the third-party content provider participates in a content auction), or other such factors. For example, a user may conduct a search for “baseball video games” via an online search engine. In response, an advertisement for a particular video game may be included in the search results, if the game is determined to be eligible for download by the client device. By controlling the selection of third-party content to only devices that can install the featured application, the third-party content provider may realize a higher return on investment for advertising the application. In addition, users are only presented with third-party content featuring applications that they can actually download and use, thereby ensuring that the third-party content is relevant to the users.

The features disclosed herein may be implemented on a smart television module (or connected television module, hybrid television module, etc.), which may include a processing circuit configured to integrate Internet connectivity with more traditional television programming sources (e.g., received via cable, satellite, over-the-air, or other signals). The smart television module may be physically incorporated into a television set or may include a separate device such as a set-top box, Blu-ray or other digital media player, game console, hotel television system, and other companion device. A smart television module may be configured to allow viewers to search and find videos, movies, photos and other content on the web, on a local cable TV channel, on a satellite TV channel, or stored on a local hard drive. A set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and connect to a television set and an external source of signal, turning the signal into content which is then displayed on the television screen or other display device. A smart television module may be configured to provide a home screen or top level screen including icons for a plurality of different applications, such as a web browser and a plurality of streaming media services, a connected cable or satellite media source, other web “channels”, etc. The smart television module may further be configured to provide an electronic programming guide to the user. A companion application to the smart television module may be operable on a mobile computing device to provide additional information about available programs to a user, to allow the user to control the smart television module, etc. In alternate embodiments, the features may be implemented on a laptop computer or other personal computer, a smartphone, other mobile phone, handheld computer, a tablet PC, or other computing device.