Dynamic content display time adjustment
By dynamically adjusting the display interval of content items by monitoring the user response rate, the problem of the content item display frequency not adapting to the inconsistent user response time was solved, thus optimizing the user experience and resource utilization.
Patent Information
- Application Number
- CN202210089834.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2015-02-24
- Filing Date
- 2016-01-26
- Publication Date
- 2025-12-05
- Estimated Expiration
- 2036-01-26
AI Technical Summary
In existing technologies, the frequency of content item display cannot be dynamically adjusted, leading to increased user frustration or wasted resources, especially when user response times are inconsistent.
By monitoring user response rates, the display interval of content items can be dynamically adjusted to optimize the positive response rate, and the display interval can be lengthened or shortened to reduce user frustration or resource consumption.
It enables dynamic adjustments based on user response behavior, optimizing user experience and resource utilization, and reducing user frustration and server resource waste.
Smart Images

Figure CN114596110B_ABST
Abstract
Description
[0001] Divisional
[0002] This application is a divisional of Chinese Patent Application No. 201680011907.5, filed January 26, 2016, which is based on and claims priority to U.S. Nonprovisional Patent Application No. 14 / 630,071, filed February 24, 2015, entitled "DYNAMIC CONTENT DISPLAY TIME ADJUSTMENT," the contents of which are incorporated by reference in their entirety.
[0003] Related Applications
[0004] This application claims priority to and the benefit of U.S. Nonprovisional Patent Application No. 14 / 630,071, filed February 24, 2015, entitled "DYNAMIC CONTENT DISPLAY TIME ADJUSTMENT," the contents of which are incorporated by reference in their entirety. BACKGROUND
[0005] Content items, such as advertisements or offers, can be delivered to and / or periodically displayed by a computing device until a user of the device takes an action to acknowledge or accept the content. In one example, a demo or trial version of an application can be executed by the device, with periodic display of an offer to download or purchase a full version of the application. In a similar example, a full version of an application can be executed on a remote computing device and streamed to the device, allowing a user to try the application before downloading and / or installing the application. This can allow investigation of whether the application performs smoothly on the device, whether the application has desired features, etc., before expending time, bandwidth, or money to download and install the application. SUMMARY
[0006] Executing an application on a remote computing device and streaming a display of the application to a user's device can require that the remote computing device have a large amount of resources (e.g., memory, processing time, power, bandwidth, etc.), especially as the number of users and client devices trying the application increases. To limit the amount of resources used to stream the application, the user's device can periodically display an offer or advertisement or similar content item, requesting that the user select to install or purchase the application, end the preview or trial of the application, or continue the trial period. If the periodic messages are displayed too frequently, the user can feel annoyed or frustrated. However, if the periodic messages are displayed too infrequently, resources of the remote computing device can be wasted, as the user can have been willing to select to download the application long ago.
[0007] The time interval for periodically displaying content such as advertisements or offers can be dynamically adjusted based on the response rate of the users. Some users can determine that they are interested in the displayed content or the corresponding application and wish to accept the offer within fifteen seconds, while other users can require a minute, two minutes, or more before they decide to accept the offer and download, purchase, or obtain the application or the offered item, or cancel the preview of the application. Presenting such content every 15 seconds can capture positive responses from the first group, but can seriously annoy the second group. Thus, the presentation time of the content can be dynamically adjusted based on the monitored acceptance / rejection rate to optimize the positive response rate according to a predetermined target response rate, and to avoid displaying the content when the users are less likely to positively respond. Specifically, if the number of positive responses at a particular content presentation time is lower than the target response rate, the interval before showing the content can be lengthened, thereby potentially reducing user frustration. Conversely, if the number of positive responses is higher than the target number, the interval before showing the content can be reduced, thereby potentially reducing unnecessary consumption of server resources.
[0008] While primarily described in terms of server-executed and streamed applications for the client device to preview, the systems and methods discussed herein can be applied to any type of periodically displayed content item that users can accept or postpone / reject, with the content being displayed again at a later time, by repeatedly displaying an offer to download, purchase, or obtain the application. In one implementation, the content item can be a pop-up window on an installed application executing in a trial mode or a demo mode that provides a link to purchase the application or to enter a separately obtained license code, sometimes referred to as an "offer screen." In another implementation, the content item can be an interstitial or banner advertisement displayed in a streaming media application or on a website that provides streaming media, such as an advertisement to purchase a streamed video, television program, song, album, movie, or other such streamed content, and / or content related to the streamed content (such as other works by the same artist / producer). Thus, the description herein can refer to a first content item (such as a trial application or demo application, a streamed preview of an application, a locally-executed application, streamed media or locally played media, or other such content); and an interactive second content item (such as an offer, advertisement, link, survey, or other such content) that is repeatedly displayed one or more times until the user accepts the second content item or provides a positive response to the second content item. By dynamically adjusting the display time, user frustration can be reduced while increasing the support rate. In this manner, content can be provided to users such that the use of resources of the remote computer that initially executed the content can be optimized.
[0009] One implementation disclosed herein is a method for determining an initial display interval for an offer to download a streaming application. The method includes streaming, by a content delivery provider executed by a first computing device, an application executed by the first computing device on behalf of each computing device in a plurality of computing devices to each computing device in the plurality of computing devices. The method further includes transmitting, by the content delivery provider, an offer to download the application to each computing device in the plurality of computing devices after a first initial display interval, the first initial display interval comprising a predetermined time between the beginning of streaming the application and displaying the offer. The method further includes receiving a number of positive user interactions with the offer after the first initial display interval and a total number of positive user interactions with the offer. The method further includes adjusting the initial display interval by a factor proportional to a desired first display quantile divided by the number of positive user interactions after the first initial display interval. The method further includes streaming the application executed by the first computing device to a second computing device and transmitting the offer to download the application to the second computing device after the adjusted initial display interval.
[0010] In some implementations, the method includes retransmitting, by the content delivery provider, the offer to a subset of the plurality of computing devices after a second display interval in response to not receiving a positive user interaction with the offer after the first display interval, the second display interval comprising a second predetermined time between transmitting the offer and retransmitting the offer. In another implementation, the method includes receiving, by the content delivery provider, a number of positive user interactions with the offer after the second display interval and adjusting the initial display interval further comprises increasing the initial display interval by multiplying the second display interval by the desired first display quantile and dividing by a sum of a number of positive user interactions with a first transmission of the offer and a number of positive user interactions with a second transmission of the offer. In yet another implementation, the method includes retransmitting, by the content delivery provider, the offer to a second subset of the plurality of computing devices after a third display interval in response to not receiving a user interaction with the offer after the second initial display interval, receiving, by the content delivery provider, a number of positive user interactions with the offer after the third display interval and adjusting the initial display interval further comprises increasing the initial display interval by multiplying the second display interval plus the third display interval by the desired first display quantile and dividing by a sum of a number of positive user interactions with a first transmission of the offer, a number of positive user interactions with a second transmission of the offer, and a number of positive user interactions with a third transmission of the offer.
[0011] In some embodiments, the method includes determining, by the content delivery provider, that a number of positive user interactions with the offer after the first display interval divided by a total number of positive user interactions with the offer is less than a predetermined first display interaction ratio; and adjusting the initial display interval is performed in response to the determination.
[0012] In other embodiments, the desired first display quantile includes a predetermined first display interaction ratio multiplied by a total number of positive user interactions with the offer. In yet other embodiments, the method includes determining, by the content delivery provider, that the total number of positive user interactions with the offer is greater than an optimization data threshold. In yet other embodiments, the method includes determining, by the content delivery provider, that the adjusted initial display interval does not exceed an upper bound or a lower bound; and transmitting the offer to the second computing device after the adjusted initial display interval is performed in response to the determination. In some embodiments, an application associated with the positive user interaction can be implemented on a computing device of the plurality of computing devices in response to each positive user interaction with the offer.
[0013] In another aspect, the disclosure relates to a system for determining an initial display interval of an offer to download a streaming application, the system including a first computing device in communication with a plurality of client computing devices via a network interface of the first computing device, the first computing device executing a virtualization engine and a content delivery server. The virtualization engine is configured to stream an application executed by the virtualization engine on behalf of each computing device of the plurality of computing devices to each computing device of the plurality of computing devices; and transmit an offer to download the application to each computing device of the plurality of computing devices after a first initial display interval, the first initial display interval including a predetermined time between the start of streaming the application and displaying the offer. The content delivery server is configured to receive a number of positive user interactions with the offer after the first initial display interval and a total number of positive user interactions with the offer; and adjust the initial display interval by a factor proportional to a ratio of a desired first display quantile to the number of positive user interactions after the first initial display interval. The virtualization engine is further configured to stream the application executed by the virtualization engine to a second computing device; and transmit the offer to download the application to the second computing device after an adjusted initial display interval.
[0014] In some embodiments, the virtualization engine is further configured to: responsive to not receiving a user interaction with the offer after the first initial display interval, retransmit the offer to the subset of the plurality of computing devices after a second display interval, the second display interval comprising a second predetermined time between transmitting the offer and retransmitting the offer. In yet another embodiment, the virtualization engine is further configured to: receive a number of positive user interactions with the offer after the second display interval; and the content delivery server is configured to increase the initial display interval by multiplying the second display interval by the expected first display quantile and dividing by a sum of: a number of positive user interactions with a first transmission of the offer, and a number of positive user interactions with a second transmission of the offer. In yet another embodiment, the virtualization engine is further configured to: responsive to not receiving a user interaction with the offer after a second initial display interval, retransmit the offer to a second subset of the plurality of computing devices after a third display interval; and receive a number of positive user interactions with the offer after the third display interval; and the content delivery server is further configured to increase the initial display interval by adding the second display interval to the third display interval, multiplying by the expected first display quantile, and dividing by a sum of: a number of positive user interactions with a first transmission of the offer, a number of positive user interactions with a second transmission of the offer, and a number of positive user interactions with a third transmission of the offer.
[0015] In some embodiments, the content delivery server is further configured to: determine that a received number of positive user interactions with the offer after the first display interval divided by a total number of positive user interactions with the offer is less than a predetermined first display interaction ratio; and adjusting the initial display interval is performed in response to the determination. In other embodiments, the expected first display quantile comprises a predetermined first display positive interaction ratio multiplied by the total number of positive user interactions with the offer. In yet another embodiment, the content delivery server is further configured to: determine that the total number of positive user interactions with the offer is greater than an optimization data threshold. In yet another embodiment, the content delivery server is further configured to: determine that the adjusted initial display interval does not exceed an upper bound or a lower bound; and transmitting the offer to the second computing device after the adjusted initial display interval is performed in response to the determination.
[0016] In yet another aspect, the application relates to a computer-readable storage medium storing instructions that, when executed by one or more data processors, cause the one or more data processors to perform operations comprising: streaming an application to each of a plurality of computing devices on behalf of each of the plurality of computing devices; and transmitting an offer to download the application to each of the plurality of computing devices after a first initial display interval, the first initial display interval comprising a predetermined time between the beginning of streaming the application and displaying the offer. Execution of the instructions further causes the one or more data processors to: receive a number of positive user interactions with the offer after the first initial display interval, and a total number of positive user interactions with the offer; and adjust the initial display interval by a factor proportional to a desired first display quantile divided by the number of positive user interactions after the first initial display interval. Execution of the instructions further causes the one or more data processors to: stream the application to a second computing device, and transmit the offer to download the application to the second computing device after the adjusted initial display interval.
[0017] In one embodiment, execution of the instructions further causes the one or more data processors to: responsive to not receiving a positive user interaction with the offer after the first initial display interval, retransmit the offer to a subset of the plurality of computing devices after a second display interval, the second display interval comprising a second predetermined time between transmitting the offer and retransmitting the offer. In yet another embodiment, execution of the instructions further causes the one or more data processors to: receive a number of positive user interactions with the offer after the second display interval; and increase the initial display interval by multiplying the second display interval by the desired first display quantile divided by a sum of: a number of positive user interactions with a first transmission of the offer, and a number of positive user interactions with a second transmission of the offer. In yet another embodiment, execution of the instructions further causes the one or more data processors to: responsive to not receiving a user interaction with the offer after the second initial display interval, retransmit the offer to a second subset of the plurality of computing devices after a third display interval; receive a number of positive user interactions with the offer after the third display interval; and increase the initial display interval by adding the second display interval to the third display interval, multiplying by the desired first display quantile, and dividing by a sum of: a number of positive user interactions with a first transmission of the offer, a number of positive user interactions with a second transmission of the offer, and a number of positive user interactions with a third transmission of the offer.
[0018] These embodiments are not meant to limit or restrict the scope of the disclosure, but are meant to assist in the understanding of the disclosure. It will be appreciated that features described in the context of one aspect or embodiment can be applied, in combination or in isolation, to other aspects or embodiments. Specific embodiments are developed to realize one or more of the following advantages. BRIEF DESCRIPTION OF DRAWINGS
[0019] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the disclosure will become apparent from the description, the drawings, and the claims, in which:
[0020] Figure 1A is a depiction of an embodiment of a computing device displaying a first content item comprising a preview of a streamed application;
[0021] Figure 1B is a depiction of an embodiment of a computing device displaying a second content item comprising an interactive dialogue on a preview of a streamed application of Figure 1A
[0022] Figure 1C is a depiction of an embodiment of a computing device displaying a locally executed application and a second content item comprising a banner advertisement;
[0023] Figure 1D is a chart of active engagement with content items by a plurality of users at a plurality of display intervals of the content items according to an embodiment;
[0024] Figure 1E is a chart of active engagement with content items by a plurality of users at a plurality of adjusted display intervals of the content items according to an embodiment;
[0025] Figure 1F is another chart of active engagement with content items by a plurality of users at a plurality of display intervals of the content items according to an embodiment;
[0026] Figure 1G is another chart of active engagement with content items by a plurality of users at a plurality of adjusted display intervals of the content items according to an embodiment;
[0027] Figure 1H is another chart of active engagement with content items by a plurality of users at a plurality of display intervals of the content items;
[0028] Figure 2A is a block diagram of a system for dynamic content display time adjustment according to an embodiment;
[0029] Figure 2B is an embodiment of a system Figure 2A block diagram of a computing device of the system of
[0030] Figure 3 is a flowchart of an embodiment of a method for dynamic content display time adjustment.
[0031] Like reference numbers and designations in the various drawings indicate like elements. DETAILED DESCRIPTION
[0032] In some embodiments, the time interval at which the interactive content item is periodically displayed, sometimes referred to as the display interval or the interval between display of content items (or the interval between running the application and the initial display of the content item, sometimes referred to as the initial display interval), can be dynamically adjusted based on the monitored acceptance and rejection or deferral rates to optimize the positive response rate according to a predetermined target response rate and to avoid displaying content when the user is less likely to positively respond. Specifically, if the number of positive responses at a particular content presentation time is below the target response rate, the interval before the content is shown can be lengthened, thereby potentially reducing user frustration and resources spent providing content for display. Conversely, if the number of positive responses is above the target number, the interval before the content is shown can be decreased, thereby potentially reducing unnecessary consumption of server resources.
[0033] In some embodiments, an application can be executed by a server or remote computing device and can be streamed for preview by a client device. Such an application can be referred to as a first content item. In other embodiments, the first content item can include a streamed audio, a streamed video, an application executed in a trial or demo mode, a downloaded application, a website such as a news provider or blog, or any other such content. An interactive second content item can be periodically displayed on the client device with an option to accept or provide a positive response to the second content item. In some embodiments, the second content item can be an offer or advertisement to purchase, download, or unlock the first content item, or an offer to purchase, download, or unlock a content item related to the first content item such as additional downloadable content, access to an entire article on a news website, an album related to a currently playing song, or any other such content. If the user does not positively respond or accept the offer of the second content item, or if the user negatively responds or ignores the second content item, the device can stop or terminate display of the second content item and subsequently redisplay the second content item after a determined time interval. Optimizing positive responses by users to the second item of content can improve use of server resources as streamed applications can consume server resources including processing cycles, memory, bandwidth, and power, especially as the number of users utilizing the streamed application increases.
[0034] Figure 1A FIG. 1 is an illustration of an embodiment of a client computing device 100 displaying a first content item 110 including a preview of a streamed application. In some embodiments, the streamed application can be executed by one or more second computing devices (not shown) such as a server, a cluster of servers, a cloud of servers, or other such devices. In some embodiments, the streamed application can be executed by a physical machine or a virtual machine representing a client device. Streaming the application to the client device can include providing a remote desktop session or similar presentation session in which images, video, and / or audio generated by the streamed application are transmitted to the client device 100 for display and corresponding interactions by the user with the client device (e.g., mouse, touch, or other input device selections; text, audio, or image entry, or other such interactions) are transmitted to the device executing the streamed application to be provided to the application.
[0035] Because streaming applications can consume server resources (including processing loops, memory, bandwidth, and power), especially as the number of users utilizing the streaming application increases, client devices can periodically display interactive secondary content items or messages to allow users to download and / or purchase the streaming application, stop previewing or streaming the application, or continue the trial period. In some implementations, such secondary content items can be displayed continuously, such as via banners or other user interface elements. However, in other implementations, such as in Figure 1A As shown, the streamed application can be displayed in full-screen mode. In this mode, the display may not include space for continuously displaying banners or other interface elements to allow users to download the application or stop streaming. Therefore, in this implementation, periodic "offer screens" or second content items can be transmitted to the client device or generated and displayed on the client device to encourage users to download and / or purchase the streamed application or stop previewing or streaming the application. Figure 1B This is an illustration of an implementation of a client computing device 100' displaying a second content item 115, including an interactive dialogue, on a preview of a streamed application 110'. The second content item 115 may be a pop-up window, an overlay, or other such interface element, and may include optional elements for accepting an offer to purchase the first content item 110', downloading the first content item 110' for local execution, or purchasing related content items as discussed above. In some implementations, as shown, the second content item 115 may include another optional element for rejecting the second content item and continuing to preview or use the first content item 110'. In other implementations, the second content item 115 may be rejected in response to no user interaction with it for a period of time (e.g., 5 seconds, 10 seconds, or 15 seconds (sometimes referred to as a wait timer)). In yet another implementation, the second content item 115 may include another optional element for exiting or stopping the streaming of the first content item 110'. Thus, the user can choose to purchase, download, or unlock the first content item or related content items, reject offers for a period of time, or stop using the first content item.
[0036] As discussed above, periodic quotes or content can also be displayed together with locally executed content or content not streamed. Figure 1C This is an explanatory diagram illustrating an embodiment of a computing device 100 that displays a locally running application 120 and a second content item 125 including a banner advertisement. In some embodiments, the second content item 125 may be displayed periodically, such as by "sliding in" from the edge of the display and similarly by retracting if there is no interaction for a period of time.
[0037] Some users can respond quickly or quickly determine an offer while using a trial mode of an application that they are interested in purchasing / downloading / unlocking content or a preview of a streamed application, while other users can need more time. Thus, assuming that the offer or second content item is displayed within a first time period, a first subset of users (e.g., a first group) can accept or positively respond to the second content item, while a second subset of users (e.g., a second group) can negatively respond or not respond at all. While the first group accepts the offer, the application or first content item can be downloaded or provided to the devices of the first group, and no further offers of the content need be provided to the first group. However, after a delay interval, the second content item or offer can be provided again to the second subset of users. Again, a portion of the second subset can positively respond, while another portion does not respond or negatively responds. This operation can be iteratively repeated until all users have positively responded or cease to use the first content item. If the periodic offer display is too frequent, users can feel annoyed or frustrated. However, if the periodic message display is too infrequent, resources of the remote computing device can be wasted, as users can have been willing to choose to download the application long ago.
[0038] Figure 1Dis a cumulative plot of the number of users according to the display times of the content items 130-136 and the positive interactions 140-146 with the content items according to an embodiment. As shown, the lengths of the intervals between the display times 130-136 can be different. In some embodiments, the intervals can be measured from the time the streaming application is started, the time the application is run, the time the user can utilize the streamed application (e.g., after a splash screen, or a file is created or opened, etc.), the time the user selects the streaming application, or any other such time; and the intervals can end at the time the content item or offer message is displayed. These times can be referred to as initial intervals. Intervals can also be measured between successive displays or subsequent displays of offers or content items, such as from the time the user selects to continue previewing the application or rejects the offer to the subsequent time the offer is displayed again; or from the time the offer is displayed to the time the offer is displayed again. Such times can be referred to as subsequent intervals; second intervals, third intervals, fourth intervals, etc.; or any other such term. In other embodiments, other definitions of intervals can be used (e.g., intervals starting from the time the offer is retrieved from a storage medium for display; the time the offer is transmitted, to account for network latency; etc.). In the illustrated embodiment, a first portion of the users 140 positively respond to the first display of the content item at time 130. A second portion of the users 142 positively respond at the subsequent second display of the content item at time 132. A third portion of the users 144 positively respond at the third display of the content item at time 134. A fourth portion of the users 146 positively respond at the fourth display of the content item at time 136. As discussed above, other instances of displays of the content item can be provided until the cumulative number of positive responses equals 100% of the number of users of the corresponding application or viewers of the streamed media, or any remaining users that have stopped using or viewing the content.
[0039] As shown, a predetermined threshold 148 can be set. This threshold can be referred to as a target acceptance rate or target acceptance threshold, a target installation rate, a target purchase rate, or other such designation. The threshold 148 can be set by an administrator, a content provider, an advertiser, or other such entity. The threshold 148 can be set to a desired positive response rate to the first display of the offer or content item, such as 30%, 50%, 70%, or any other such value. A lower rate can result in a shorter delay before a second content item is displayed, while a higher rate can result in a longer delay before a second content item is displayed.
[0040] As in Figure 1DAs shown, in some embodiments, the cumulative number of positive responses may be less than a threshold 148 at the first display time 130. In the illustrated embodiment, the cumulative number of positive responses at display time 132 (e.g., the number 140 plus 142) may also be less than the threshold 148. The cumulative number of positive responses may exceed the threshold at subsequent times (e.g., the third display time 134 as shown). Therefore, in the illustrated embodiment, the first (and second) display of the second content item produces a positive response ratio less than the threshold 148, indicating that at these display times, a insufficient number of users have decided to make a positive response. Therefore, the initial or first display time 130 may be delayed for a period of time (e.g., after time 132) so that, after adjustment, the positive response ratio for the display at the new first display time is equal to the threshold 148.
[0041] As discussed above, Figure 1E This is a chart showing the cumulative positive interactions between multiple users based on multiple adjusted display intervals for each content item. As shown in the figure, [the chart is related to...]. Figure 1D Compared to the previous implementation, the first display time has been delayed by 130', and therefore, more users have decided to respond positively to the display of content items, resulting in a positive acceptance rate equal to the threshold 148. As shown in the figure, the remaining undecided users respond positively at delay times 132' and 134'.
[0042] exist Figure 1E In the embodiment illustrated in the diagram, the first display time 130' has been adjusted so that the positive acceptance ratio 140' equals the threshold 148. In practice, this level of precision may not be achievable with a first adjustment based on the initial display time. Instead, the initial display time can be automatically delayed or advanced through multiple adjustment iterations based on previously used display times 130 to 136. In one such embodiment, upon obtaining... Figure 1DThe system can then adjust the initial display time 130' to equal time 134, as this is the first point at which the ratio exceeds the threshold 148. Subsequently, if the ratio of positive interactions at this new adjusted first display time equals the value 144 (e.g., the total number of users that should have responded at times 130, 132, and 134), then the ratio will exceed the threshold 148. In a second adjustment iteration, the first display time can be advanced by a fraction, such as between times 132 and 134, or 130', as shown. Through multiple adjustment iterations, the initial display time is thus adjusted so that the response ratio equals the threshold 148. Moreover, because the system can continue to monitor the positive response ratio, if user behavior changes (e.g., due to a sale, increased interest in the content, holiday shopping season, etc.), the system can dynamically adjust the first display interval, if necessary, to ensure an optimal or desired positive response ratio.
[0043] Figure 1F and Figure 1G similar graphs to Figure 1D and Figure 1E are illustrated, respectively. However, in the graph illustrated in Figure 1F , the ratio of positive interactions 160 at the first display time 150 exceeds the threshold 148. This is similar to the second adjustment iteration discussed above. If the content item or offer is shown at an earlier time, some of these users that positively respond can have already responded. Thus, as with Figure 1G , in Figure 1F , the initial display time 150' has been advanced so that fewer users positively respond, where the ratio 160' equals the threshold 148. As discussed above, this adjusted display time 150' can be obtained after one or more adjustment iterations.
[0044] To illustrate how the initial display time can be adjusted in some embodiments, Figure 1His another graph of the number of users interacting positively with a content item according to a number of display intervals of the content item. As shown, at a first display time DT1 170, a first number of users 180 accepts or responds positively. This value can be recorded in a database or index that identifies the number of users that accepted, the display time, and / or the initial display interval 190A (which is equal to the display time DT1), and in some embodiments, the index or number of displays (e.g., 1). At a subsequent second display time DT2 172, a second number of users 182 accepts or responds positively. This value can also be recorded in the database at a second index or number of displays (e.g., 2). Similarly, a third number of accepting users 184 can be recorded at an index of the third display time DT3 (e.g., 3); a fourth number of accepting users 186 at an index of the third display time DT4 (e.g., 4); and so on until no further users accept or respond positively, a predetermined maximum display time or interval is reached, a predetermined index value is reached, a total number of positive interactions 192 (e.g., the sum of values 180-186) exceeds a predetermined percentage of the number of users to which the first content item was streamed or delivered, and so on.
[0045] Thus, in one embodiment, the index can include:
[0046] Index entry number Display interval Display time Number of positive interactions 1 DI1 DT1 Number of positive interactions at DT1 2 DI2 DT2 Number of positive interactions at DT2 3 DI3 DT3 Number of positive interactions at DT3 N DI n ]] DT n ]]> The number of positive interactions at the DT n
[0047] In some embodiments, the index can include a ratio of cumulative positive interactions to the total number of positive interactions at each entry, although this again can be readily determined: for any index m, the ratio of positive interactions (the sum of the number of positive interactions at DT1 through DT m ) divided by the sum of the number of positive interactions at DT1 through DT n or the total number of positive interactions.
[0048] In some embodiments, the index can not include display intervals or display times, as one of these can be readily determined by the other: for any index m, DT m is equal to the sum of DI1 through DI m ; and conversely, for any DI m , is equal to DT m minus DT m-1In another implementation, the display interval at any index after the initial display interval can be determined based on a back-off ratio set to a predetermined value, typically greater than or equal to 1, although in some implementations it is possible to be less than 1. The back-off ratio can be used to reduce the display frequency of the content item to reduce user frustration, especially for users that take the longest time to determine whether to accept an offer. The display interval at any index m > 1 can be equal to the previous display interval DI m-1 multiplied by the back-off ratio. If the initial display interval is set to 15 seconds, then DI2 equals 30 seconds; DI3 equals 1 minute; and so on. To prevent the interval from growing too long, in some implementations a predetermined upper limit or maximum interval (e.g., 5 minutes) can be set such that any display interval that would be calculated to exceed the maximum interval is instead reset to the maximum interval.
[0049] As discussed above, the ratio of the cumulative number of positive responses at any display time to the total number of positive responses can be compared to a target positive response threshold, and the initial display interval adjusted accordingly. When sufficient positive response data has been collected from users, the content server can dynamically calculate a new display interval. In an illustrative implementation, the target response ratio threshold for the first display time can be specified as 50%, and the content server can have received 70 positive responses, with 50 positive responses received at a first display time of 15 seconds, 15 responses received at a second display time of 45 seconds, and 5 responses received at a third display time of 105 seconds. This indicates an initial display time of 15 seconds and a back-off ratio of 2. Because the number of positive responses at the first display time exceeds 50% of the target response ratio threshold, or 35 responses out of the total of 70 responses, the server can identify that the first quantile or set of responses exceeds the threshold, and the corresponding first display interval time should be reduced. In other instances, if the cumulative number of positive responses does not exceed the threshold until the second or later quantile or set of responses, the first display interval time will be extended.
[0050] As discussed above, the new first interval is calculated by adding the previous interval time to the identified quantile at which the cumulative response ratio exceeds the threshold (e.g., the first quantile in the example given above, so the previous interval equals 0) to the delayed interval for the specified quantile multiplied by the target threshold ratio (e.g., 50%) multiplied by the total number of positive responses (e.g., 70) divided by the cumulative number of positive responses at the identified quantile (e.g., 50). In summary, the adjusted first interval is calculated as follows for the identified quantile x at which the ratio of the cumulative total of responses exceeds the target threshold ratio:
[0051] New first interval = DT x-1 + DIx ([Target Threshold Ratio * Total Number of Positive Responses] / Cumulative Number of Positive Responses at quantile x)
[0052] Using the given values above, the new first interval becomes:
[0053] Adjusted DI1 = 0 + 15 * ([.5 * 70] / 50) = 15 * (35 / 50) = 10.5 seconds.
[0054] Thus, with a backoff ratio of 2, DI2 is (10.5 * 2) seconds or 21 seconds; and DI3 is (21 * 2) seconds or 42 seconds. In many embodiments, as discussed above, the display intervals can be constrained according to a predetermined maximum value. Similarly, the intervals can be constrained according to a predetermined minimum value (especially in cases where the backoff ratio can be less than 1). Thus, the DI for any quantile x can be defined as: x = Min[Max(backoff ratio * DI
[0055] DI x = Min[Max(backoff ratio * DI x-1 , maximum interval value), minimum interval value]
[0056] Figure 2A is a block diagram of a system for dynamic content display time adjustment according to an embodiment. As shown, in some embodiments, a plurality of client devices 200A-200N can communicate with one or more virtualization servers 204A-204N, an application installation server 206, and / or a content item server 210 via a network 202. In other embodiments that do not use application virtualization (such as with locally installed applications or streamed media), the virtual servers 204 can not be included.
[0057] The client devices 200A-200N (generally referred to as client devices 200, local devices 200, or user devices 200) can be laptop computers, desktop computers, tablet computers, smart phones, set-top boxes, smart televisions, wearable computers, or any other type and form of computing device. As discussed above, the client devices 200 discussed in more detail below can receive and display a first content item (such as a streamed application, a streamed media, a downloaded and locally executed application, or any other such content); and an interactive second content item (such as an offer or advertisement for content related to the first content item). Figure 2B The client devices 200 discussed in more detail below can receive and display a first content item (such as a streamed application, a streamed media, a downloaded and locally executed application, or any other such content); and an interactive second content item (such as an offer or advertisement for content related to the first content item).
[0058] The network 202 can comprise any type and form of network, including a wide area network (WAN) (such as the Internet), a local area network (LAN), a wireless network, a cellular network, an ad hoc network, a mesh network, a pseudo network with physical storage device swapping, or an asynchronous network (such as a "sneakernet"), or any other type and form of network for providing communication between a client device and one or more servers. In some embodiments, the network 202 can comprise a combination of several networks, and can include one or more intermediary devices (not shown), such as gateways, routers, firewalls, switches, or other such devices.
[0059] The virtualization servers 204A-204N (generally virtualization servers 204) can comprise one or more physical computing devices, and / or one or more virtual computing devices executed by one or more physical computing devices. In some embodiments, the virtualization servers 204 can execute an application in a sandbox or virtual environment on behalf of a client device, and can provide visual and audio feedback of the application to the client device via a presentation layer protocol (such as a remote desktop protocol), and receive interactions with the application (e.g., selections, text input, etc.) from the client device via a protocol from the client device.
[0060] The application installation server 206 can be one or more physical computing devices or virtual computing devices executed by one or more physical computing devices for delivering applications to client devices for local installation. The application installation server 206 can be an online application store that allows purchasing and / or downloading and installing applications. In some embodiments, the application installation server 206 can provide an interface for a client device to request a preview application that is installed on a virtualization server 204 and connected to the client device as discussed above. The application installation server 206 can maintain or communicate with an application storage 208, which can comprise one or more storage devices for storing applications, installation packages, or other such content.
[0061] The content item server 210 can be one or more physical computing devices or virtual computing devices executed by one or more physical computing devices for delivering content items (such as interactive offers or advertisements as discussed above) to client devices. In some embodiments, the content items can be stored in one or more storage devices 212. In other embodiments, as discussed above, an interactive content item (such as an offer or advertisement) can be delivered to a client with a locally executed application, or can be generated by the application during execution in a trial mode or a demo mode. In such embodiments, the content item server 210 can not be included.
[0062] Figure 2B is a block diagram of a computing device of a system in accordance with an implementation Figure 2A The client device 200 can be any number of different types of user electronic devices configured to communicate via the network 202, including but not limited to: a laptop computer, a desktop computer, a tablet computer, a smart phone, a digital video recorder, a set-top box for a television, a video game console, or any other type and form of computing device or combination of devices, as discussed above. In some implementations, the type of client device 200 can be classified as a mobile device, a desktop device, or a device intended to remain stationary or configured to access the network 202 primarily via a local area network, or another class of electronic device such as a wearable device.
[0063] In many implementations, the client device 200 includes a processor 252 and a memory 254. The memory 254 can store machine instructions that, when executed by the processor 252, cause the processor 252 to perform one or more of the operations described herein. The processor 252 can include a microprocessor, an ASIC, an FPGA, or the like, or combinations thereof. In many implementations, the processor 252 can be a multi-core processor or a processor array. The memory 254 can include, without limitation, electronic, optical, magnetic, or any other storage or memory device capable of providing the processor 252 with program instructions. The memory 254 can include a floppy disk, a CD-ROM, a DVD, a magnetic disk, a memory chip, a ROM, a RAM, an EEPROM, an EPROM, a flash memory, an optical media, or any other suitable memory from which the processor 252 can read instructions. The instructions can include code from any suitable computer programming language, such as, but not limited to, C, C++, C#, JAVA, JAVASCRIPT, PERL, HTML, XML, PYTHON, and VISUAL BASIC.
[0064] The client device 200 can include one or more network interfaces 256. The network interfaces 256 can include any type and form of interfaces, including: Ethernet (including 10 Base T, 100 Base T, or 1000 Base T ("Gigabit"); any kind of 802.11 wireless (such as 802.11a, 802.11b, 802.11g, 802.11η, or 802.11ac); cellular (including CDMA, LTE, 3G, or 4G cellular); Bluetooth or other short-range wireless connection; or any combination of these or other interfaces for communicating with the network 126. In many embodiments, the client device 200 can include multiple network interfaces 256 of different types, allowing for connection to various networks 202 or the network 202 (such as the Internet) via different sub-networks.
[0065] The client device 200 can include one or more user interfaces 258. The user interfaces 258 can be any electronic interfaces through which a user can interact with the client device 200, such as by generating sensory information (e.g., visual on a display, one or more sounds, tactile feedback, etc.) to convey data to the user and / or transforming received sensory information from the user into electronic signals. According to various embodiments, the one or more user interfaces can be internal to the housing of the client device 200, such as a built-in display, touch screen, microphone, etc., or external to the housing of the client device 200, such as a monitor connected to the client device 200, speakers connected to the client device 200, etc.
[0066] The client device 200 can include applications 260 in the memory 254 or can execute applications 260 using the processor 252. The applications 260 can be any type and form of applications, applets, scripts, services, daemons, routines, or other executable logic. In one embodiment, the applications 260 can be a web browser, while in another embodiment, the applications 260 can be a video game. The applications 260 can include functionality to display content received via the network interfaces 256 and / or generated locally by the processor 252, as well as to transmit interactions received via the user interfaces 258 (such as requests for websites, selections of survey response options, input of text strings, etc.). In other embodiments, the applications 260 can be virtualized client applications for communicating via presentation layer protocols with the virtualization server 204 and / or the virtualization engine 264, discussed below.
[0067] Client device 200 may also include application installation engine 262. Application installation engine 262 may be an application, server, daemon, routine, or other executable logic for downloading and / or installing applications from a provider. In some implementations, application installation engine 262 may be an interface to an online application store. As discussed above, application installation engine 262 may include interfaces for selecting to download or purchase applications, or for previewing applications via a virtualization server.
[0068] As described above Figure 2A The computing device 250 discussed may be a virtualization server 204, an application server 206, and / or a content server 210 (generally referred to as server 250). Like the client device 200, server 250 may include one or more processors 252, memory 254, a network interface 256, and a user interface 258. In some embodiments where server 250 is referred to as a headless server, server 250 may not include user interface 258, but may communicate with client 200, which has user interface 258, via network 202.
[0069] Server 250 may include virtualization engine 264. Virtualization engine 264 may include applications, servers, daemons, routines, or other executable logic for executing applications on behalf of client device 200 in a virtual or sandbox environment and for communicating with the client device via presentation layer protocols as discussed above. In response to a client device's request to preview an application stored in application storage 266, virtualization engine 264 may instantiate a virtual environment. Virtualization engine 264 may install the application into the virtual environment and present the application to the client device. As discussed herein, virtualization engine 264 may also periodically present offers, advertisements, or prompts to download and install the application locally.
[0070] Application storage device 266 may include one or more applications or application installation packages. Applications may be delivered to client device 200 for installation and local execution by application installation engine 262, and / or applications may be provided to virtualization engine 264 or a virtual environment provided by virtualization engine 264 on server 250 or another server 250 for execution and display to client device 200.
[0071] The memory 254 can also include a content delivery engine 268. The content delivery engine 268 can include an application, server, daemon, routine, or other executable logic for periodically presenting interactive second content items to allow users to accept, purchase, or download first content items (e.g., applications being previewed, media streams, etc.) and for dynamically determining display time intervals. In some embodiments, the generation or presentation of content can be performed by an application in communication with the content delivery engine 268 of the server 250 or the virtualization engine 264. The content delivery engine 268 can receive from each application or client device 200 and / or from the application delivery engine 278 or virtualization engine 264 an identification of an acceptance or positive response, as well as an identification of a display interval, display time, or display iteration for content. In many embodiments, the data can be anonymous or can not include personal identifiers or identifiers of the client device 200. As discussed above, the content delivery engine 268 can aggregate data until a predetermined amount of data has been received and then can recalculate the initial display interval time and / or other display intervals or presentation times. In some embodiments, such as in embodiments in which the interactive content includes graphics, audio, or video, the content store 270 can store corresponding data to be delivered to the client device and / or virtualization engine 264. In some embodiments, the memory 254 can maintain an iteration counter 274 in order to maintain an index position when comparing cumulative bin results to a response rate threshold. The memory 254 can also maintain a display interval database or index of display intervals and / or display times, as well as the number of positive responses received from client devices and / or virtualization engines or applications corresponding to each display. The memory 254 can also include a timer 272 for counting up to a display time or counting down to a display interval. In many embodiments, the timer 272 can be performed by an application on the client or an application in the virtual environment.
[0072] As discussed above, the memory 254 can also include an application delivery engine 278 for delivering applications to a virtual environment executed by the client device 200 and / or the application installation engine 262. The application delivery engine 278 can be a server that maintains an online application store accessible by the application installation engine 262. The application delivery engine 278 can be configured to, in response to a request from the client device to preview a selected application, instruct the virtualization engine 264 to instantiate a virtual environment and install the application for display to the client device.
[0073] Memory 254 can also include additional storage devices, such as storage of applications, advertisements or offers, web pages, images, audio files, video files, data files, or any other type and form of data. In some embodiments, memory 254 can store one or more applications for execution by processor 252 of server 250, including an FTP server, a web server, a mail server, a file sharing server, a peer-to-peer server, or other such applications for delivering content stored in content storage device.
[0074] Figure 3 is a flowchart of an embodiment of a method for dynamic content display time adjustment. As discussed above, in some embodiments, the method can be performed by an application executing on a client computing device, while in other embodiments, the method can be performed by an application executing on behalf of a client device by a virtualization server, by a content delivery server, or any other such device. In some embodiments, the first portion of the method (such as steps 305-335) can be performed by an application executing on a client device or in a virtual environment, while the second portion (such as steps 345-385) can be performed by a content delivery server or an application delivery server.
[0075] In step 305, in some embodiments, an iteration counter or quantile counter can be set to a starting or initial value, such as 1. A delay timer or countdown timer can be set to a first delay interval DI1 or first delay time DT1 value previously assigned by a content delivery server or administrator.
[0076] In step 310, the interactive content item can be displayed by the client device, such as an offer or advertisement to purchase, download, or unlock an application executing on the client and / or in the virtualization environment, or to purchase another content item related to the streamed content item. The display of the content item can include the client device receiving the content item from the content server, the virtualization server receiving the content item from the content server, the virtualization server or client device transmitting a request for the content item and receiving a response including the content item from the content server, the application or application installation engine of the client device generating the content item locally, or any other such means. As discussed above, the content item can be a pop-up or overlay window, a banner, a dialog box, or any other such interface element. The content item can include a button or element for providing a positive response or acceptance. The content item can also include a second button or element for rejecting or deferring the offer or advertisement for a delay interval. In some embodiments, the offer or advertisement can be rejected and deferred in response to the display timer expiring. The content item can also include a third button or element for exiting the application or stopping the reception of the media stream (in some embodiments, exiting the application and stopping the reception of the media stream). Figure 3
[0077] In step 315, the client device and / or the content delivery server or virtualization server can determine whether the user has accepted the content item or positively responded to the content item. In some embodiments, in response to a selection of an interface element, the device or server can determine that the user has accepted or positively responded or otherwise indicated acceptance (e.g., a verbal confirmation received via a microphone, a gesture on a touchpad or received via another device, an entered password or text string, etc.). Conversely, in response to the display timer expiring, or a selection of a defer or reject option or element as discussed above, the device or server can determine that the user has not accepted or positively responded.
[0078] If the user has not positively responded or selected to defer or reject the offer, the content item can be rejected, allowing the user to return to use of the previewed application or media stream or other content. In step 320, the device or server can increment an iteration counter 320 for displaying the content item. This allows the device or server to keep track of the number of presentations or content items to the user before the user eventually accepts an offer.
[0079] In step 325, in some embodiments, the device or server can multiply the delay interval by a back-off ratio as discussed above. The back-off ratio can be assigned by an administrator or content provider, and can be often greater than or equal to 1, although values less than 1 are also possible. In step 330, the device or server can compare the result of the multiplication to a preset maximum delay interval and / or a preset minimum delay interval. If the result is within the range of the minimum and / or maximum, the result can be set as the new delay interval in step 335 for the next delay time. A timer can be set to the interval and activated, or the presentation time can be calculated. Conversely, in step 340, if the result of the multiplication is greater than the allowed maximum or less than the allowed minimum, the result can be adjusted to equal the corresponding maximum or minimum interval. Once fixed to the corresponding maximum or minimum interval, the value can be set as the new delay interval in step 335 as discussed above.
[0080] In some embodiments, steps 325-340 can be performed by the client device, virtualization server, or content delivery server during each iteration as shown in the flowchart. In other embodiments, the delay intervals and / or delay times can be calculated in advance. Once an initial delay interval is set or determined, and a back-off ratio and any minimum or maximum range are set, each other interval can be calculated in advance. Thus, in such embodiments, steps 325-340 can be replaced with a single step of retrieving the next delay interval or presentation time from a data table and setting a timer accordingly.
[0081] Steps 315-340 can be iteratively repeated until the user positively responds to the content item in step 315. The identification of the positive response, as well as an iteration counter value indicating the iteration in which the user positively responded, can be transmitted to the content delivery server for dynamic recalculation of the initial interval time. In some embodiments, in response to each positive user interaction with an offer, an application can be implemented on a computing device associated with the positive user interaction among the plurality of computing devices. The content delivery provider can, for example, transmit data to the computing device associated with the positive user interaction among the plurality of computing devices that allows the computing device to execute the application, such that the content delivery provider can cease streaming the application to the computing device. In some embodiments, in step 345, in response to the positive response, a second content item can be delivered to the client device, such as a requested application for local installation, an unlock code or token, an album, a television show, a movie, or other such related content as discussed above.
[0082] In step 350, in response to receiving the identification of positive responses and the iteration counter, the content delivery server can increment the counter or value in the data table corresponding to the number of positive responses for the iteration counter or quantile. The counter can be incremented for each positive response having the same iteration counter value, and the counter can represent the total number of positive responses received within the corresponding display iteration of the offer.
[0083] In step 355, in some embodiments, the content delivery server can determine whether enough positive responses have been received such that the initial interval can be optimized. Optimization based on a small number of responses can result in dramatic fluctuations in the initial interval value, while optimization based on a large number of responses can result in many users experiencing an incorrect and frustrating delay interval timing. Thus, a number of responses can be required before steps 360-385 are performed, such as 100 responses, 500 responses, 1000 responses, or any other such value. In another embodiment, steps 360-385 can be performed periodically regardless of the number of responses, such as once an hour, once a day, once a week, or any other such value.
[0084] If there is not enough data to optimize, the method can be repeated until sufficient data has been received or a predetermined period of time has expired before proceeding to step 360. In step 360, the content delivery server can retrieve the value identifying the number of positive responses at the first display interval or the first iteration counter value, store the value as y. The content delivery server can also calculate the sum of the values identifying the number of positive responses for all display intervals or the total number of positive responses. In step 365, the content delivery server can determine whether y divided by the total number of positive responses is greater than or equal to a target ratio. If so, the interval timing can need to be decreased. If not, the interval timing can need to be lengthened.
[0085] If x divided by the total number of positive responses is not greater than or equal to the target ratio, in step 370, the content delivery server can select the next iteration or index in the data table and retrieve the corresponding value identifying the number of positive responses within the iteration or quantile. In step 375, the retrieved value can be added to y such that y is equal to the cumulative number of positive responses received at the corresponding delay interval.
[0086] Steps 365-375 can be iteratively repeated until an iteration or quantile display interval is identified in which the cumulative number of positive responses divided by the total number of positive responses is greater than or equal to the target ratio.
[0087] In step 380, a new initial delay interval can be calculated as discussed above, where DT x-1equal to the display time of the previous decile or the sum of all delay intervals up to the display time of the previous decile; DI x equal to the delay interval of the selected decile x; and y is equal to the cumulative number of positive responses received at and up to decile x:
[0088] New first interval = DT x-1 + DI x * ([target ratio * total number of positive responses] / y)
[0089] Thus, the new interval is expanded or reduced in response to the ratio of y to the total being below or above the target ratio.
[0090] Once the new initial delay is calculated, the other delay intervals can be calculated as discussed above in steps 325-340. In step 385, the data table identifying the number of positive responses received at each decile can be reset so that new data can be collected. The new delay intervals can also be provided to the client device or virtualization server as discussed above, and the method can be repeated. As discussed above, through multiple iterations, the first interval is automatically adjusted to approach an optimal value so that the ratio of positive responses received at the first display time or decile equals the target threshold ratio.
[0091] Thus, the systems and methods discussed herein provide for automatic and dynamic iterative adjustment and optimization of delay intervals prior to displaying offers, advertisements, "offer screens," or other such content. The methods and systems can also be employed in any implementation in which a content item or other entity is displayed to a user for acceptance or rejection within a period of time, including: product registration or warranty dialogues, software update or upgrade dialogues, notification of new blog content, or any other such interactive accept / reject dialogue.
[0092] Implementations of the subject matter and operations described in this specification can be implemented in a digital electronic circuit, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on one or more computer storage media for execution by, or to control the operation of, data processing apparatus. Alternatively or additionally, the program instructions can be encoded on a propagated signal that is generated to carry the information for execution by, or to control the operation of, data processing apparatus. The computer storage medium can be a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them, or includes in or on them. Furthermore, a computer storage medium can be, or include, a source or destination of computer program instructions encoded in a propagated signal. The computer storage medium can also be, or include, one or more separate components or media (e.g., multiple CDs, disks, or other storage devices) that collectively store the computer program instructions. Thus, a computer storage medium can be tangible.
[0093] The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0094] The term "client" or "server" includes all kinds of apparatus, devices, and machines for processing data, such as a programmable processor, a computer, a system on a chip, or multiple ones of the foregoing or combinations thereof. The apparatus can include special purpose logic, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing infrastructures, and grid computing infrastructures.
[0095] A computer program, which can also be referred to or referred to as a program, software, a software application, an app, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and
[0096] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be implemented by, and aways of, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Devices suitable for the execution of a computer program include, by way of example, general purpose
[0097] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data (e.g., magnetic, magneto-optical disks, or optical disks). However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0098] To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display), OLED (organic light-emitting diode), TFT (thin-film-transistor), plasma, other flexibly configured display, or any other monitor for displaying information to the user and a keyboard, a pointing device, e.g., a mouse, a trackball, etc., or a touch screen, a touch pad, etc., by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a user using a device to send and receive documents to and from a web browser on a user's client device in response to requests received from the web browser; and a user can interact with a computer by providing input to a web browser on a user's client device in response to a web page received from the computer.
[0099] Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. The communication network can include one or more local area networks ("LANs") and wide area networks ("WANs"), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0100] The features disclosed herein can be implemented on a smart television module (or connected television module, hybrid television module, etc.), which can include processing circuitry 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 can be physically integrated with a television, or the smart television module can 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. The smart television module can be configured to allow viewers to search across the web, local cable TV channels, satellite TV channels for videos, movies, photos and other content, or to store the content on a local hard drive. A set-top box (STB) or set-top unit (STU) can include an information appliance device that can contain a tuner and connect to a television, and an external source of signals, so as to change the television channels or the content thereof, accessed by a user. The smart television module can be configured to provide a home screen or top level screen including icons for a number of different applications, such as a web browser and a number of streaming media services, connected cable or satellite media source, or other web "channels," etc. The smart television module can be further configured to provide an electronic program guide to a user. A companion application of the smart television module can operate on a mobile computing device to provide additional information to a user about available programming, to allow the user to control the smart television module, etc. In alternative embodiments, the features can be implemented on a laptop computer or other personal computer, a smart phone, other mobile telephone, a handheld computer, a tablet PC, or other computing device.
[0101] While this specification contains many specifics, these should not be construed as limitations on the scope of any invention or of what may be claimed, but rather as descriptions of features specific to particular embodiments. Certain features that are, for clarity, described above in the context of separate embodiments, can also be provided in combination in a single embodiment. Conversely, various features that are, for brevity, described above in the context of a single embodiment, can also be provided separately or in any suitable subcombination. In addition, while the above description has been made with respect to particular embodiments, it is to be recognized that many modifications and variations of the specific system components described above can be resorted to without departing from the spirit and scope of the following claims.
[0102] Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring such order nor that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing can be advantageous. Moreover, the separation of various system components in the implementations described above should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated in a single software product or packaged into multiple software products.
[0103] Accordingly, particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve the desired results. In certain implementations, multitasking and parallel processing can be advantageous.
Claims
1. A method for determining an initial interval for displaying a prompt for a download streaming application, the method comprising: streaming, by a content delivery provider executed by a first computing device, an application executed by the first computing device on behalf of each computing device of a plurality of computing devices to each computing device of the plurality of computing devices; transmitting, by the content delivery provider, a content item including a prompt for downloading an application to each computing device of the plurality of computing devices for display at a first display time after beginning streaming the application to each computing device of the plurality of computing devices; identifying, by the content delivery provider, a first number of user interactions of a predetermined type with the prompt of the content item displayed at the first display time for a predetermined amount of time in connection with streaming the application; calculating, by the content delivery provider, a second display time based on the first display time, a target response number, and the first number of user interactions with the prompt of the content item at the first display time; streaming, by the content delivery provider, the application executed by the first computing device to a second computing device; and transmitting, by the content delivery provider, the content item including the prompt for downloading the application to the second computing device for display at the second display time after beginning streaming the application to the second computing device.
2. The method of claim 1, wherein, transmitting the content item including the prompt to each computing device of the plurality of computing devices further comprises retransmitting the content item including the prompt to a subset of the plurality of computing devices at a retransmission display time in response to not receiving the user interactions of the predetermined type with the prompt of the content item at the first display time, the retransmission display time corresponding to a second amount of time between transmitting the content item including the prompt and retransmitting the content item including the prompt.
3. The method of claim 2, further comprising: receiving, by the content delivery provider, a second number of user interactions of the predetermined type with the prompt of the content item at the retransmission display time; and wherein calculating the second display time further comprises increasing the second display time by multiplying the retransmission display time by the target response number and dividing by a sum of the first number of user interactions with the prompt of the content item and the second number of user interactions with the prompt of the content item.
4. The method of claim 3, further comprising: retransmitting the content item including the prompt to a second subset of the plurality of computing devices at a third display time in response to not receiving user interactions with the prompt of the content item at the first display time, the third display time corresponding to a second amount of time between retransmitting the content item including the prompt to the subset of the plurality of computing devices and retransmitting the content item including the prompt to the second subset of the plurality of computing devices; receiving, by the content delivery provider, a third number of user interactions of the predetermined type with the prompt of the content item at the third display time; and wherein calculating the second display time further comprises increasing the second display time by adding the second display time to the third display time multiplied by the target response number and divided by a sum of the first number of user interactions with the prompt of the content item, the second number of user interactions with the prompt of the content item, and the third number of user interactions with the prompt of the content item.
5. The method of claim 1, further comprising: determining, by the content delivery provider, that a first number of user interactions with the prompt of the content item at the first display time divided by a total number of user interactions of the predetermined type with the prompt of the content item is less than a predetermined interaction ratio; and wherein calculating the second display time is performed in response to determining that the first number of user interactions with the prompt of the content item at the first display time divided by a total number of user interactions of the predetermined type with the prompt of the content item is less than a predetermined interaction ratio.
6. The method of claim 1, wherein, the target response number comprises a predetermined interaction ratio multiplied by a total number of user interactions of the predetermined type with the prompt of the content item.
7. The method of claim 1, further comprising: determining, by the content delivery provider, that a total number of user interactions of the predetermined type with the prompt of the content item is greater than an optimization data threshold.
8. The method of claim 1, further comprising: determining, by the content delivery provider, that the second display time does not exceed an upper bound or a lower bound; and wherein transmitting the content item including the prompt to the second computing device at the second display time is performed in response to determining that the second display time does not exceed an upper bound or a lower bound.
9. A system for determining an initial interval to display a content item including a prompt of a download streaming application, the system comprising: a first computing device having one or more processors coupled with memory, the first computing device to communicate with a plurality of computing devices via a network interface of the first computing device, the first computing device configured to: stream an application performed by the first computing device on behalf of each computing device of the plurality of computing devices to each computing device of the plurality of computing devices; transmit a content item including a prompt for the download application to each computing device of the plurality of computing devices for display at a first display time after beginning streaming the application to each computing device of the plurality of computing devices; identify a first number of user interactions of a predetermined type with the prompt of the content item displayed at the first display time for a predetermined amount of time along with streaming of the application; calculate a second display time based on the first display time, a target response number, and the first number of user interactions with the prompt of the content item at the first display time; stream the application performed by the first computing device to a second computing device, and transmit the content item including the prompt for the download application to the second computing device for display at the second display time after beginning streaming the application to the second computing device.
10. The system of claim 9, wherein, The first computing device is further configured to, in response to not receiving the predetermined type of user interaction with the content item including the prompt at the first display time, retransmit the content item including the prompt to a subset of the plurality of computing devices at a retransmission display time, the retransmission display time corresponding to a second amount of time between transmitting the content item including the prompt and retransmitting the content item including the prompt.
11. The system of claim 10, wherein, The first computing device is further configured to identify a second number of the predetermined type of user interaction with the prompt of the content item at the retransmission display time; and wherein the first computing device is configured to increase the second display time by multiplying the retransmission display time by the target response number and dividing by a sum of the first number of user interactions with the prompt of the content item and the second number of user interactions with the prompt of the content item.
12. The system of claim 11, the first computing device is further configured to: in response to not receiving the predetermined type of user interaction with the prompt of the content item at the second display time, retransmit the content item including the prompt to a second subset of the plurality of computing devices at a third display time; receive a third number of the predetermined type of user interaction with the prompt of the content item at the third display time; and increase the second display time by adding the second display time to the third display time multiplied by the target response number and divided by a sum of the first number of user interactions with the prompt of the content item, the second number of user interactions with the prompt of the content item, and the third number of user interactions with the prompt of the content item.
13. The system of claim 9, wherein, The first computing device is further configured to determine that the first number of user interactions with the prompt of the content item at the first display time divided by a total number of the predetermined type of user interaction with the prompt of the content item is less than a predetermined interaction ratio; and wherein calculating the second display time is performed in response to determining that the first number of user interactions with the prompt of the content item at the first display time divided by a total number of the predetermined type of user interaction with the prompt of the content item is less than a predetermined interaction ratio.
14. The system of claim 9, wherein, The target response number includes a predetermined interaction ratio multiplied by a total number of user interactions with the prompt of the content item.
15. The system of claim 9, wherein, The first computing device is further configured to determine that the total number of the predetermined type of user interaction with the prompt of the content item is greater than an optimization data threshold.
16. The system of claim 9, wherein, The first computing device is further configured to determine that the second display time does not exceed an upper bound or a lower bound; and wherein transmitting the content item including the prompt to the second computing device at the second display time is performed in response to determining that the second display time does not exceed an upper bound or a lower bound.
17. A computer-readable storage medium storing instructions that when executed by one or more data processors, cause the one or more data processors to perform operations comprising: streaming an application to each of a plurality of computing devices on behalf of each of the plurality of computing devices, transmitting, to each of the plurality of computing devices, a content item including a prompt to download the application for display at a first display time after the streaming of the application to each of the plurality of computing devices is initiated, identifying a first number of user interactions of a predetermined type with the prompt of the content item displayed at the first display time for a predetermined amount of time in connection with the streaming of the application, calculating a second display time based on the first display time, a target response number, and the first number of user interactions with the prompt of the content item at the first display time, streaming the application to a second computing device, and transmitting, to the second computing device, the content item including the prompt to download the application for display at the second display time after the streaming of the application to the second computing device is initiated.
18. The computer-readable storage medium of claim 17, wherein, The execution of the instructions further causes the one or more data processors to: responsive to not receiving user interactions of the predetermined type with the prompt of the content item at the first display time, retransmit the content item including the prompt to a subset of the plurality of computing devices at a retransmission display time, the retransmission display time corresponding to a second amount of time between the transmission of the content item including the prompt and the retransmission of the content item including the prompt.
19. The computer-readable storage medium of claim 18, wherein, The execution of the instructions further causes the one or more data processors to: receive a second number of user interactions with the prompt of the content item at the retransmission display time, and increase the second display time by multiplying the retransmission display time by the target response number and dividing by a sum of the first number of user interactions with the prompt of the content item and the second number of user interactions with the prompt of the content item.
20. The computer-readable storage medium of claim 19, wherein, The execution of the instructions further causes the one or more data processors to: responsive to not receiving the user interactions of the predetermined type with the prompt of the content item at the second display time, retransmit the content item including the prompt to a second subset of the plurality of computing devices at a third display time, receive a third number of user interactions of the predetermined type with the prompt of the content item at the third display time, and increase the first display time by adding the second display time to the third display time multiplied by the target response number and divided by a sum of the first number of user interactions with the prompt of the content item, the second number of user interactions with the prompt of the content item, and the third number of user interactions with the prompt of the content item.
Citation Information
Patent Citations
Targeted content streaming banners
US20140047005A1