SYSTEMS, METHODS AND COMPUTER PROGRAM PRODUCTS FOR FACILITATING DISPLAY OF CONTENT WITHIN APPLICATION PROGRAMS EXECUTING ON ELECTRONIC DEVICES

20190050894 ยท 2019-02-14

Assignee

Inventors

Cpc classification

International classification

Abstract

An application program interface (API) is operably associated with application programs executing on an electronic device and enables the application programs to retrieve, store, and display content. The API enables application programs to communicate with other application programs and to send/retrieve content to/from other application programs. In addition, the API is configured to perform various event accounting functions. A gateway communicates with an electronic device application program via the API and is configured to retrieve content from a content server in response to receiving requests from the application programs. The gateway is configured to serve content retrieved from the content server to the electronic device, as well as to other servers and/or devices. Methods, apparatus, and computer program products are provided for dynamically selecting advertisements for use within user-requested content wherein the advertisements are stored locally within a user client device.

Claims

1-40. (canceled)

41. A computer program product that facilitates the display of content within electronic devices, the computer program product comprising a computer usable storage medium having computer readable program code embodied in the medium, the computer readable program code comprising: computer readable program code that selects content stored within an electronic device for display by an application program executing on the electronic device; computer readable program code that displays the selected content within the application program; and computer readable program code that notifies a remotely located content server that the selected content has been displayed.

42. The computer program code according to claim 41, further comprising computer readable program code that processes user responses to content displayed by the application program.

43. The computer program code according to claim 42, wherein the computer readable program code that processes user responses to content comprises computer readable program code that displays content within the application program in response to user activation of the content.

44. The computer program code according the claim 41, further comprising computer readable program code that notifies a server about content displayed by the application program.

45. The computer program code according the claim 41, further comprising computer readable program code that notifies a server about user interaction with content displayed by the application program.

46. The computer program code according to claim 41, wherein the content comprises promotional content.

47-69. (canceled)

70. A client device, comprising: a Web browser; a display; a plurality of stored advertisements that are configured to be displayed by the Web browser within the display; and an ad agent in communication with the Web browser, comprising: means for requesting a remote ad server to select an advertisement for insertion within content displayed by the Web browser within the display; means for receiving an identification of an advertisement selected by the remote ad server; means for retrieving the selected advertisement from the plurality of stored advertisements; and means for inserting the retrieved advertisement within content displayed by the Web browser via the display.

71. The client device according to claim 70, wherein the ad agent further comprises: means for retrieving advertisements from remote ad servers; and means for storing retrieved advertisements within the client device.

72. The client device according to claim 70, further comprising means for notifying a remote ad server of display of an advertisement within the display.

73. The client device according to claim 70, wherein the client device is a handheld device.

74. A client device, comprising: a Web browser; a display; a plurality of stored advertisements that are configured to be displayed by the Web browser within the display; and an ad agent in communication with the Web browser, comprising: means for selecting an advertisement for insertion within content displayed by the Web browser within the display; means for retrieving the selected advertisement from the plurality of stored advertisements; and means for inserting the retrieved advertisement within content displayed by the Web browser via the display.

75. The client device according to claim 74, wherein the ad agent further comprises: means for retrieving advertisements from remote ad servers; and means for storing retrieved advertisements within the client device.

76. The client device according to claim 74, further comprising means for notifying a remote ad server of display of an advertisement within the display.

77. The client device according to claim 74, wherein the client device is a handheld device.

78. A computer program product that provides dynamically selected advertising within content requested by a client device, the computer program product comprising a computer usable storage medium having computer readable program code embodied in the medium, the computer readable program code comprising: computer readable program code that requests content from a server; computer readable program code that receives the requested content and a link to an ad server, wherein the requested content includes a portion designated to receive a dynamically selected advertisement therewithin, and wherein the link is configured to cause the client device to request an advertisement from the ad server; computer readable program code that requests the ad server to select an advertisement for insertion within the requested content designated portion, computer readable program code that receives an identification of an advertisement selected by the ad server; computer readable program code that retrieves the selected advertisement from within the client device; and computer readable program code that displays the requested content and selected advertisement via a display of the client device.

79. The computer program product according to claim 78, further comprising: computer readable program code that retrieves one or more advertisements from an ad server; and computer readable program code that stores the retrieved one or more advertisements within the client device.

80. The computer program product according to claim 78, wherein the content is a Web page.

81. The computer program product according to claim 78, further comprising computer readable program code that notifies the ad server of usage of the selected advertisement.

82. The computer program product according to claim 78, wherein the client device is a handheld device.

83-87. (canceled)

Description

BRIEF DESCRIPTION OF THE DRAWINGS

[0025] FIGS. 1 and 2 schematically illustrate conventional client-server communications associated with providing advertising within user-requested content.

[0026] FIGS. 3A-3B illustrate a handheld electronic device having an API according to embodiments of the present invention that facilitates the selection, retrieval, storage, and display of content within application programs executing therewithin.

[0027] FIG. 4 illustrates a system that facilitates the selection, retrieval, storage, and display of promotional content within various electronic devices, according to embodiments of the present invention.

[0028] FIG. 5 illustrates a specific implementation of the system of FIG. 4 that facilitates the selection, retrieval, storage, and display of promotional content within various electronic devices, according to embodiments of the present invention.

[0029] FIGS. 6A-6B are flowcharts that illustrate operations for local content displaying and accounting (FIG. 6A) and for communicating with a remote content (or other) server (FIG. 6B), according to embodiments of the present invention.

[0030] FIG. 7 illustrates a specific implementation of the system of FIG. 4 that facilitates the sharing of content among two or more application programs executing (or executable) on an electronic device, according to embodiments of the present invention.

[0031] FIG. 8 is a flowchart that illustrates operations for displaying promotional content, such as advertisements and/or electronic coupons, within an application program executing within an electronic device, according to embodiments of the present invention

[0032] FIG. 9 is a block diagram representation of a client device having a local ad agent according to embodiments of the present invention, wherein the ad agent is used to select an advertisement, and wherein the local ad agent is configured to retrieve the selected advertisement from local storage within the client device.

DETAILED DESCRIPTION OF THE INVENTION

[0033] The present invention now is described more fully hereinafter with reference to the accompanying drawings, in which preferred embodiments of the invention are shown. This invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the invention to those skilled in the art.

[0034] As also will be appreciated by one of skill in the art, the present invention may be embodied as methods, data processing systems, and/or computer program products. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment running on general purpose hardware or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product on a computer-usable storage medium having computer-usable program code embodied in the medium. Any suitable computer readable medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.

[0035] Computer program code for carrying out operations of the present invention may be written in an object oriented programming language (e.g., JAVA, Smalltalk or C++) and/or may also be written in a conventional procedural programming language (e.g., C) or in various other programming languages. Software embodiments of the present invention do not depend on implementation with a particular programming language. The present invention is described below with reference to block diagram and flowchart illustrations of methods, apparatus (systems) and computer program products according to embodiments of the invention.

[0036] It will be understood that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other data processing apparatus (e.g., personal computer, portable computer, handheld computer, PDA, pager, cellular telephone, Web-enabled radiotelephone, other a mobile/wireless device) to produce a machine, such that the instructions, which execute via the processor of the computer or other data processing apparatus, create structures for implementing the functions specified in the block diagram and/or flowchart block or blocks. Each block, and combinations of blocks, can be implemented by a device which performs the specified functions or steps, or combinations of hardware and computer instructions.

[0037] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instructions which implement the function specified in the block diagram and/or flowchart block or blocks.

[0038] The computer program instructions may also be loaded onto a computer or other data processing apparatus to cause a series of operational steps to be performed on the computer or other apparatus to produce a computer implemented process or method such that the instructions which execute on the computer or other apparatus provide steps for implementing the functions specified in the block diagram and/or flowchart block or blocks.

[0039] It should be noted that, in some alternative embodiments of the present invention, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. Furthermore, in certain embodiments of the present invention, such as object oriented programming embodiments, the sequential nature of the flowcharts may be replaced with an object model such that operations and/or functions may be performed in parallel or sequentially.

[0040] Referring to FIGS. 3A-3B, a handheld computer 40 is illustrated with an e-mail application program executing therewithin. An application program interface (API) is operably available to the e-mail application program and enables the e-mail application program to select, retrieve, store, and display content 41a, 41b, as will be described below.

[0041] As known to those skilled in the art, an API is a method prescribed by a computer system by which a programmer writing an application program can make requests of the system or another application program. The API according to embodiments of the present invention enables the e-mail application program 42 (as well as other application programs, such as browsers, etc.) to select and retrieve content from a local database that contains information retrieved from remotely located content servers, display the retrieved content, and perform various event (e.g., impressions and/or user interactions) accounting functions (e.g., ad servers, etc.).

[0042] Referring now to FIG. 4, a system 50 that facilitates the selection, retrieval, storage, and display of various types of content (e.g., promotional content, etc.) within various devices (e.g., handheld devices, etc.), according to embodiments of the present invention, is schematically illustrated. The term content includes, but is not limited to, promotional content, informational content, text-based content, audio content, video content, etc. The illustrated system 50 includes a client device 40 that can communicate with a content server 80 that is configured to serve packages of content, such as advertising and/or electronic coupons (e.g., an ad server). These communications may be direct or through an intermediate gateway 60. The communications occur via a communications network 70, where the connectivity of the client device may be transient in nature (i.e., it is not required to have permanent network connections).

[0043] The client device 40 may be virtually any type of electronic device that can communicate (at least occasionally) with other devices via a communications network including, but not limited to, personal computers, portable computers, handheld computers/devices, PDAs, pagers, cellular telephones, Web-enabled radiotelephones, and/or other mobile/wireless devices. The client device 40 includes an application program 42, and an API 44 operably available to the application program 42 and with a content agent 45 that enables the application program 42 to retrieve content from the content server 80 and store it locally. Communications between the content agent 45 and content server 80 are illustrated as going through the gateway 60; however, it is understood that this is not required. Content agent 45 may communicate directly with a content server 80. An agent is a program that gathers information and/or performs some service. Agents are well understood by those of skill in the art and need not be described further herein.

[0044] The API 44 preferably includes logic for communicating with the gateway 60 (and/or directly with the content server 80), logic for selecting and retrieving content from the content server 80, potentially via the gateway 60, and for storing (caching) the content within the client device 40. The API 44 may include logic for selecting content stored within the client device 40 for display by the executing application program 42. The API 44 may include logic for processing user responses to content displayed by the application program 42. The API 44 may include accounting logic for notifying the content server 80 about content displayed by the application program and about user interactions with displayed content.

[0045] When the device 40 is offline (i.e., without a connection to the network 70), the API 44 accesses information stored locally at the content agent 45. The content agent is capable of returning content pre-fetched from a content server 80. The caching agent 45 is also capable of storing and accumulating accounting data thru the API 44.

[0046] When the device is online (i.e., with a connection to the network 70), the content agent 45 may pre-fetch content from the content server 80 (potentially through a gateway 60) to be stored locally. The caching agent 45 may also transfer previously accumulated accounting information to the content server 80.

[0047] The gateway 60, if present, is configured to communicate with the client content agent 45. The gateway 60 is configured to retrieve content from the content server 80 in response to receiving requests from the content agent 45, usually at the request of application program 42 through the API 44. The gateway 60 is configured to serve content retrieved from the content server 80 to the client device 40.

[0048] Referring now to FIG. 5, a specific implementation of the system 50 of FIG. 4 is illustrated. In FIG. 5, a system 50 that facilitates the selection, retrieval, storage, and display of promotional content within various client devices, according to embodiments of the present invention, is schematically illustrated. It is understood that the term promotional content includes, but is not limited to, advertisements, electronic coupons, and the like. The illustrated system 50 includes a client device 40 that can communicate with a gateway 60 via a communications network 70, and one or more promotional content servers 80 (e.g., ad servers) that are configured to serve packages of promotional content, such as advertising and/or electronic coupons.

[0049] The client device 40 may be virtually any type of electronic device that has the ability to intermittently communicate with other devices via a communications network including, but not limited to, personal computers, wireless communications devices, radiotelephones, PDAs, hand-held computers/devices, Web-enabled phones, and the like. The client device 40 includes an application program 42 configured to display promotional content during execution thereof, and an API 44 operably available to the application program 42 that enables the application program 42 to select and retrieve promotional content from the content agent 40.

[0050] The illustrated API 44 includes logic 44a for communicating with the gateway 60, logic 44b for retrieving promotional content from one or more of the promotional content servers 80 via the gateway 60 and for storing (caching) the promotional content within the client device 40. The retrieval and caching logic 44b may be configured to specify restrictions on promotional content, such as size and number of promotional content units in packages of promotional content served by the promotional content server 80. The retrieval and caching logic 44b may also be configured to select and retrieve content based on various user preferences and/or device preferences.

[0051] The illustrated API 44 includes logic 44e for selecting promotional content stored within the client device 40 for display by the executing application program 42. The illustrated API 44 includes logic 44d for processing user responses to promotional content displayed by the application program 42. For example, the user response logic 44d can be configured to display content (e.g., previously cached content) in response to user activation of promotional content displayed within the executing application program 42.

[0052] The illustrated API 44 also includes accounting logic 44c for notifying the promotional content servers 80 (or other devices) about promotional content displayed by the application program. The accounting logic 440 is preferably configured to track impressions (i.e., each time particular promotional content is displayed) and interactions (i.e., each time a user clicks on particular displayed promotional content).

[0053] The illustrated gateway 60 is configured to communicate with the application program 42 via the client device API 44. The gateway 60 is configured to select and retrieve promotional content from one or more of the promotional content servers 80 in response to receiving requests from the application program 42. The gateway 60 is configured to serve promotional content retrieved from one of the promotional content servers 80 to the client device 40.

[0054] The illustrated gateway 60 includes a plurality of server-side components 62 that are configured to communicate with client devices operating on specific platforms. For example, client devices operating on the Palm OS platform will communicate with the gateway 60 via server-side component 62a. Similarly, client devices operating on the BREW platform will communicate with the gateway 60 via server-side component 62b; client devices operating on the J2ME platform will communicate with the gateway 60 via server-side component 62c; and client devices operating on the PocketPC platform will communicate with the gateway 60 via server-side component 62d. In addition, the server-side components 62 are configured to convert the format of promotional content retrieved from the promotional content servers 80 into formats compatible with a respective client device 40.

[0055] The illustrated gateway 60 also provides an open API for carriers that enables them to interact with subscriber databases, location information services, and e-wallet and payment services.

[0056] Referring now to FIGS. 6A-6B, various operations performed by an agent on a client device in accordance with embodiments of the present invention will be described. Referring to FIG. 6A, operations for displaying content within an application program executing within a device, according to embodiments of the present invention, are illustrated. An API within a device selects content stored within the device for display by an application program executing on the device (Block 100). The selected content is displayed within the application program (Block 110). User responses to the displayed content are processed (Block 120). For example, cached content may be displayed to a user in response to user activation of content displayed within an executing application program. Information regarding content that was displayed and/or interacted with by a user is stored for later transmittal to a content server (Block 130).

[0057] Referring now to FIG. 6B, when a device has an active network connection, it communicates its locally collected accounting data (e.g., information about what has been displayed and what has been interacted with by a user) to a remote server (Block 150). The device also sends a request to a remote server for additional content, including in the request any local preferences or profile information that are relevant (Block 160). The device then receives a response from a remote server consisting of one or more packages of content as well as any restrictions on the use of that content (i.e., time of day, frequency control, etc.) (Block 170).

[0058] Table 1 below illustrates an exemplary subset of API calls that a developer using JAVA could use to fetch promotional content, display the promotional content and then handle user responses to the displayed promotional content, according to embodiments of the present invention.

TABLE-US-00001 TABLE 1 API Call Purpose public boolean sync(String Get a package of ads. spotId); public byte [ ] getAd (String Select one of the ads spotId); in the package. public byte [ ] Get the click-through getClickThroughResponse( ); for that ad.

Example 1

[0059] A handheld device application program contacts a gateway to request a package of ads for a specific inventory item. The application program may start with a splash screen that shows an ad. That splash screen would be represented in an ad serving solution as a spot or sitejust like a banner ad content element on a web site.

[0060] A gateway fulfills the request by contacting the specified ad server and forwarding the delivery request to the ad server. The ad server responds to the gateway by serving a document that describes everything the handheld device needs to cache, render and account for. In the example document below, media refers to a specific creative item. A media element can be a binary file or text. It can also specify a URL to use for the user's responses to the ad. An example ad package could look like this:

TABLE-US-00002 <!DOCTYPE maml PUBLIC -//WAPFORUM//DTD WML 1.1//EN http:///maml.dtd> <microcaster> <media-set> <media id=98 mediaURL=http://ad.server.net/media/1/0/98_markup.txt redirectURL=http://www.host.com/exec/order?product=<id> altResponse=/> </media-set> <placement-set> <ad-placement id=75 server-windcaster media=98 maxImpressions=0/> </placement-set> </microcaster>

[0061] At some point after the application program has delivered impressions for a set of ads it will contact the gateway to upload accounting information to the underlying ad server. Accounting information includes the id of an ad placement, a number of impressions delivered, the number of responses from users and, optionally, the device id of the user.

[0062] The format of an exemplary accounting message that is sent to the ad server is as follows:

TABLE-US-00003 <!DOCTYPE maml PUBLIC -//WAPFORUM//DTD WML 1.1//EN http://ad.windcaster.com/DTDs/maml.dtd> <microcaster> <accounting> <ad-placement id=<id> deviceId=<dId> spot=<spotId> impressions=<n> responses=<m>/> </accounting> </microcaster>

Example 2

[0063] FIG. 7 illustrates another specific implementation of the system 50 of FIG. 4. In FIG. 7, a system 50 is provided that facilitates the sharing of content among two or more application programs 42a, 42b executing (or executable) on a client device 40. The illustrated system 50 includes a client device 40 that can communicate with a gateway 60 via a communications network 70, and an ad server 80 that is configured to serve promotional content, such as advertising and/or electronic coupons.

[0064] The client device 40 includes an e-mail application program 42a and a datebook application program 42b. When the e-mail application program 42a receives promotional content containing information about an upcoming event, the e-mail application program 42a can interface with the datebook application program 42b, via an ad agent 45, and store information about the upcoming event therein. For example, if promotional content displayed by the e-mail application program 42a contained a date for an upcoming event, this date could be sent to the datebook application 42b, automatically.

Example 3

[0065] Referring now to FIG. 9, a block diagram is provided that illustrates a client device 10 having an ad agent 16 executing therewithin according to embodiments of the present invention. The client device 10 may be, but is not limited to, a personal computer, portable computer, handheld computer/device, PDA, pager, cellular telephone, web-enabled radiotelephone, and/or other mobile/wireless device. The client device 10 includes a Web browser 12 and cache 14 associated therewith. The client device 10 also includes local ad storage (e.g., cache and/or other nonvolatile memory) 18 for storing ads downloaded from remote sources (e.g., ad servers).

[0066] In the illustrated embodiment of FIG. 9, a user, via the client device Web browser 12, has made a request 13 to a Web server 20 for content. The Web server 20 serves a response 15 to the user request that includes the requested content and a hyperlink that indicates the browser should retrieve the information from the local ad agent 16.

[0067] According to the illustrated embodiment of FIG. 9, the Web browser 12, upon receiving the response 15 from the Web server 20, invokes the ad agent 16 within the client device 10 to contact the ad server 22 identified in a link returned in the server response 15. The ad agent 16 sends a request 23 to the ad selection/usage logic 24 of the ad server 22 and receives an identification 25 of an advertisement that should be inserted within the content in the Web server response 15. Using the received advertisement identification 25, the ad agent 16 retrieves the identified advertisement from local ad storage 18 within the client device 10. As such, the transaction with the ad server results in selection of an advertisement, but not a download of the advertisement. Because an advertisement file size is typically much larger than the file size of an identifier, significant savings in time and bandwidth can be realized via the present invention.

[0068] Invocation of the ad agent 16 by the Web browser 12 can occur by various mechanisms. For example, an ad agent protocol identifier (e.g., adagent://ad.adserver.com/XXX) may be utilized as a link to local ad storage instead of a conventional URL to an actual ad server (e.g., a URL preceded by http). Alternatively, a locally stored advertisement may be identified using a URL such as localhost/adagent?ad.adserver.com/XXX. However, it is understood that various methodologies of routing an advertisement request to an ad agent may be utilized in accordance with embodiments of the present invention.

[0069] Referring now to FIG. 8, a flow chart is provided describing the operations of FIG. 9. Initially, a user, via a client device having a browser (e.g., a Web browser or microbrowser executing therewithin), requests in content (e.g., a Web page) from a server (e.g., a Web server) in communication with the client device via a network (e.g., the Internet or an intranet) (Block 200). Exemplary client devices may include, but are not limited to, personal computers, portable computers, handheld computers/devices, PDAs, pagers, cellular telephones, web-enabled radiotelephones, and/or other mobile/wireless devices.

[0070] The client device receives from the server the requested content and a link to a remote ad server that directs the client to request a dynamically selected advertisement from the local ad agent (Block 210). Dynamic advertisement selection via ad servers is well known to those of skill in the art and need not be described further herein. Also understood by those skilled in the art, user requested content may include one or more portions designated to receive dynamically selected advertisements therewithin. Upon receiving an identifier of the advertisement from the local ad agent, a client inserts the advertisement within a designated portion of the requested content and displays the content and advertisement via a display.

[0071] According to embodiments of the present invention, upon receiving a link to a local ad agent with the requested content (Block 210), the client requests the information from the local ad agent (Block 215). In the illustrated embodiment, the ad agent on the client device is configured to pass that request to a remote ad server, where the ad server selects an advertisement for insertion within the designated content portion (Block 220). Upon receiving an identification of an advertisement selected by the ad server (Block 230), the ad agent retrieves the selected advertisement from data storage within the client device (Block 250), and returns it to the browser where the requested content and selected advertisement are displayed within the client device (Block 260).

[0072] An ad agent according to embodiments of the present invention may also be configured to notify a remote ad server of display and/or user interaction with a selected advertisement (Block 270). In addition, advertisements stored within a client device preferably are prefetched from a source, such as a remote ad server, prior to a user requesting content from a server via the client device. For example, advertisements may be downloaded and stored on a wireless device, such as a PDA, when the wireless device is connected to a networked computer (i.e., a computer that is connected to the Internet and/or other network) for synchronization. Likewise, notification of user interaction or display of an advertisement can also happen when the wireless device is connected to the network.

[0073] According to other embodiments of the present invention, an ad agent within a client device may be configured to perform ad selection locally for insertion within user-requested content. For example, upon receiving a link to an ad server with user-requested content, a client device may request an ad agent to select an advertisement from local storage, in lieu of sending a request to the identified ad server to select an advertisement (Block 240). Upon selecting an advertisement, the ad agent retrieves the selected advertisement from local storage within the client device (Block 250), and displays the requested content and selected advertisement within a display of the client device (Block 260), as described above.

[0074] The foregoing is illustrative of the present invention and is not to be construed as limiting thereof. Although a few exemplary embodiments of this invention have been described, those skilled in the art will readily appreciate that many modifications are possible in the exemplary embodiments without materially departing from the novel teachings and advantages of this invention. Accordingly, all such modifications are intended to be included within the scope of this invention as defined in the claims. Therefore, it is to be understood that the foregoing is illustrative of the present invention and is not to be construed as limited to the specific embodiments disclosed, and that modifications to the disclosed embodiments, as well as other embodiments, are intended to be included within the scope of the appended claims. The invention is defined by the following claims, with equivalents of the claims to be included therein.