In some online scenarios, website content can be consumed by both a web browser and by an installable application that has been developed for the website content by a web developer. The installable application typically operates outside the browser context. Such installable applications can, in some instances, be designed by a developer to provide a tailored user experience that is somewhat different than the user experience provided by the web browser. Yet, challenges exist in so far as making users aware of the fact that such applications exist and are available for consumption.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
Various embodiments enable a web browser to promote the availability of an installable application that is associated with a web site to which the web browser has been navigated. The web browser is configured to discover the availability of these applications and, responsively, provide a user experience through which the user can acquire and install such applications, as well as switch to applications that have previously been installed. Thus, through the various embodiments, a user is relieved of the burden of having to navigate to a particular application store and periodically search for applications associated with sites to which they browse.
The detailed description is described with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different instances in the description and the figures may indicate similar or identical items.
Overview
Various embodiments enable a web browser to promote the availability of an installable application that is associated with a website to which the web browser has been navigated. The web browser is configured to discover the availability of these applications and, responsively, provide a user experience through which the user can acquire and install such applications, as well as switch to applications that have previously been installed. Thus, through the various embodiments, a user is relieved of the burden of having to navigate to a particular application store and periodically search for applications associated with sites to which they browse.
In the following discussion, an example environment is first described that is operable to employ the techniques described herein. Example illustrations of the various embodiments are then described, which may be employed in the example environment, as well as in other environments. Accordingly, the example environment is not limited to performing the described embodiments and the described embodiments are not limited to implementation in the example environment.
Example Environment
Computing device 102 includes a web browser 104 to provide functionality as described in this document. The web browser can be implemented in connection with any suitable type of hardware, software, firmware or combination thereof. In at least some embodiments, the web browser is implemented in software that resides on some type of tangible, computer-readable storage medium examples of which are provided below.
Web browser 104 is representative of functionality that enables the user to browse to different websites and consume content associated with those websites. As will be described below in detail, the web browser is configured to promote the availability of an installable application that is associated with a website to which the web browser has been navigated.
The web browser 104 is configured to discover the availability of these applications and, responsively, provide a user experience through which the user can acquire and install such applications, as well as switch to applications that have previously been installed. Thus, through the various embodiments, a user is relieved of the burden of having to navigate to a particular application store and periodically search for applications associated with sites to which they browse. Through the techniques described below, the web browser can enable the user to naturally and easily discover and install applications associated with their browsing habits.
Computing device 102 also includes a gesture module 105 that recognizes gestures that can be performed by one or more fingers, and causes operations to be performed that correspond to the gestures. The gestures may be recognized by module 105 in a variety of different ways. For example, the gesture module 105 may be configured to recognize a touch input, such as a finger of a user's hand 106a as proximal to display device 108 of the computing device 102 using touchscreen functionality. Module 105 can be utilized to recognize single-finger gestures and bezel gestures, multiple-finger/same-hand gestures and bezel gestures, and/or multiple-finger/different-hand gestures and bezel gestures.
The computing device 102 may also be configured to detect and differentiate between a touch input (e.g., provided by one or more fingers of the user's hand 106a) and a stylus input (e.g., provided by a stylus 116). The differentiation may be performed in a variety of ways, such as by detecting an amount of the display device 108 that is contacted by the finger of the user's hand 106 versus an amount of the display device 108 that is contacted by the stylus 116.
Thus, the gesture module 105 may support a variety of different gesture techniques through recognition and leverage of a division between stylus and touch inputs, as well as different types of touch inputs.
In one embodiment, this interconnection architecture enables functionality to be delivered across multiple devices to provide a common and seamless experience to the user of the multiple devices. Each of the multiple devices may have different physical requirements and capabilities, and the central computing device uses a platform to enable the delivery of an experience to the device that is both tailored to the device and yet common to all devices. In one embodiment, a “class” of target device is created and experiences are tailored to the generic class of devices. A class of device may be defined by physical features or usage or other common characteristics of the devices. For example, as previously described the computing device 102 may be configured in a variety of different ways, such as for mobile 202, computer 204, and television 206 uses. Each of these configurations has a generally corresponding screen size and thus the computing device 102 may be configured as one of these device classes in this example system 200. For instance, the computing device 102 may assume the mobile 202 class of device which includes mobile telephones, music players, game devices, and so on. The computing device 102 may also assume a computer 204 class of device that includes personal computers, laptop computers, netbooks, and so on. The television 206 configuration includes configurations of device that involve display in a casual environment, e.g., televisions, set-top boxes, game consoles, and so on. Thus, the techniques described herein may be supported by these various configurations of the computing device 102 and are not limited to the specific examples described in the following sections.
Cloud 208 is illustrated as including a platform 210 for web services 212. The platform 210 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 208 and thus may act as a “cloud operating system.” For example, the platform 210 may abstract resources to connect the computing device 102 with other computing devices. The platform 210 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the web services 212 that are implemented via the platform 210. A variety of other examples are also contemplated, such as load balancing of servers in a server farm, protection against malicious parties (e.g., spam, viruses, and other malware), and so on.
Thus, the cloud 208 is included as a part of the strategy that pertains to software and hardware resources that are made available to the computing device 102 via the Internet or other networks.
The gesture techniques supported by the gesture module may be detected using touchscreen functionality in the mobile configuration 202, track pad functionality of the computer 204 configuration, detected by a camera as part of support of a natural user interface (NUI) that does not involve contact with a specific input device, and so on. Further, performance of the operations to detect and recognize the inputs to identify a particular gesture may be distributed throughout the system 200, such as by the computing device 102 and/or the web services 212 supported by the platform 210 of the cloud 208.
Generally, any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), manual processing, or a combination of these implementations. The terms “module,” “functionality,” and “logic” as used herein generally represent software, firmware, hardware, or a combination thereof. In the case of a software implementation, the module, functionality, or logic represents program code that performs specified tasks when executed on or by a processor (e.g., CPU or CPUs). The program code can be stored in one or more computer readable memory devices. The features of the gesture techniques described below are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
In the discussion that follows, various sections describe example embodiments. A section entitled “Browser-based Application Discovery” describes how a web browser can discover installable applications in accordance with one or more embodiments. Next, a section entitled “Example Method” describes an example method in accordance with one or more embodiments. Last, a section entitled “Example Device” describes aspects of an example device that can be utilized to implement one or more embodiments.
Having described example operating environments in which the browser can be utilized, consider now a discussion of an example browser in accordance with one or more embodiments.
Browser-Based Application Discovery
Control area 306 includes various navigational instrumentalities including, by way of example and not limitation, a backward navigation button 310, a forward navigation button 312, an icon 314 associated with a website, and an address field within which a URL 316 can be displayed.
In operation, when a user navigates to a particular website, the web browser receives an HTML file, parses the HTML file and displays content described in the file in the web browser user interface 302. In one or more embodiments, the web developers can advertise the availability of a particular installable application in a couple of different ways such that the web browser can become knowledgeable of the availability. For example, in at least some embodiments, in-page markup can be utilized to advertise the availability of an application. Accordingly, this approach includes, in the HTML itself, markup indicating the availability of an application. Alternately or additionally, the availability of a particular application associated with the website can be included as part of the HTTP header that is received when the web browser navigates to a particular website.
Regardless of how the availability of an application is advertised, once the web browser becomes knowledgeable of the availability of an application, the web browser can take steps to inform the user of the availability of an application. As an example, consider
There, computing device 300 includes a button 400 that has replaced icon 314 (
There, selectable pop-up display 600 is presented responsive to the user touch-selecting button 400 (
There, content associated with the application store and, more particularly, the current application of interest, is displayed within the computing device's display device. Notice in this example that additional information is included such as a section 700 with an overview, details, and reviews. A user-selectable display 702 is presented to enable user to purchase or otherwise acquire the application of interest. In this example the display resides in the form of a “get” button. If the user selects this display, the user can acquire the application and have it installed locally on their computing device.
Subsequently, when the user navigates to the same website using their web browser, they can be exposed to a different user experience associated with enabling them to switch to the currently installed application. As an example, consider
There, the user has again navigated to the website associated with “MaxTV” and has touch-selected button 400. Responsive to touch-selecting button 400, the user can be presented with a menu option that provides them the choice of switching to the application since it is currently installed. As an example, consider
There, a display or button 900 is presented and provides the user with the choice to switch to the associated application. If the user opts to select the button 900, the web browser can enable switching to the associated application.
In one or more embodiments, when the web browser enables switching to the associated application, the web browser can provide contextual information associated with the state of the current navigation to the application so that the user experience is preserved during and after the transition. Any suitable way of providing contextual information to the application can be utilized. In at least some embodiments, contextual information can be passed to the application by passing the URL associated with the webpage the user was currently consuming. As an example, consider
There, application content 1000 is displayed within the display device of computing device 300. Here, the application can provide a tailored user experience for the user. In this example, the web browser has been placed in the background and none of the instrumentalities within the control area are displayed. Rather, content of the application is rendered in the manner defined by the application developer. In this particular example, the user interface of the application is a “chromeless” user interface that is devoid of navigation instrumentalities typically associated with a web browser.
Having considered embodiments in which a web browser can facilitate acquisition of and switching to applications, consider now an example method in accordance with one or more embodiments.
Example Method
Step 1100 navigates to a website. This step can be performed in any suitable way. In the example above, this step is performed, in part, by receiving an HTML file, parsing through the file for file content, and rendering website content in a user interface. Step 1102 ascertains whether the website has any information associated with an installable application. Any suitable type of information can be utilized. In the example above, such information resides in the form of a globally unique identifier that can be provided in the HTML itself. Alternatively, such information can be included in the HTTP header. If there is no information associated with an installable application, step 1104 does not show an associated user interface. If, on the other hand, there is information associated with an installable application, step 1106 ascertains whether the application has been installed. If the application has not been installed, step 1108 displays an application store button sufficient to enable user to navigate to an application store to acquire the installable application. Step 1110 receives selection of the application store button, and step 1112 activates an application store page to expose the user to an acquisition experience in which they can acquire the installable application.
If, on the other hand, the application is installed, step 1114 ascertains whether the version of the installed application is acceptable. For example, a web developer may have modified the application and updated it. If the version is not acceptable by, for example, being out of date, the method branches to step 1108 as described above. If, on the other hand, the version of the installed application is acceptable, step 1116 displays a switching user interface. The switching user interface enables the user to opt to switch to the installed application. An example of such a user interface is described above. Step 1118 receives a switch selection associated with switching to the installed application. Step 1120 activates the installed application with contextual information associated with the user's current webpage. Using the installed application, the user can now have a tailored experience in which their webpage context is preserved.
Having described an example method in accordance with one or more embodiments, consider now a discussion of an example device that can be utilized to implement the embodiments described above.
Example Device
Device 1200 also includes communication interfaces 1208 that can be implemented as any one or more of a serial and/or parallel interface, a wireless interface, any type of network interface, a modem, and as any other type of communication interface. The communication interfaces 1208 provide a connection and/or communication links between device 1200 and a communication network by which other electronic, computing, and communication devices communicate data with device 1200.
Device 1200 includes one or more processors 1210 (e.g., any of microprocessors, controllers, and the like) which process various computer-executable or readable instructions to control the operation of device 1200 and to implement the embodiments described above. Alternatively or in addition, device 1200 can be implemented with any one or combination of hardware, firmware, or fixed logic circuitry that is implemented in connection with processing and control circuits which are generally identified at 1212. Although not shown, device 1200 can include a system bus or data transfer system that couples the various components within the device. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.
Device 1200 also includes computer-readable media 1214, such as one or more memory components, examples of which include random access memory (RAM), non-volatile memory (e.g., any one or more of a read-only memory (ROM), flash memory, EPROM, EEPROM, etc.), and a disk storage device. A disk storage device may be implemented as any type of magnetic or optical storage device, such as a hard disk drive, a recordable and/or rewriteable compact disc (CD), any type of a digital versatile disc (DVD), and the like. Device 1200 can also include a mass storage media device 1216.
Computer-readable media 1214 provides data storage mechanisms to store the device data 1204, as well as various device applications 1218 and any other types of information and/or data related to operational aspects of device 1200. For example, an operating system 1220 can be maintained as a computer application with the computer-readable media 1214 and executed on processors 1210. The device applications 1218 can include a device manager (e.g., a control application, software application, signal processing and control module, code that is native to a particular device, a hardware abstraction layer for a particular device, etc.), as well as other applications that can include, web browsers, image processing applications, communication applications such as instant messaging applications, word processing applications and a variety of other different applications. The device applications 1218 also include any system components or modules to implement embodiments of the techniques described herein. In this example, the device applications 1218 include an interface application 1222 and a gesture-capture driver 1224 that are shown as software modules and/or computer applications. The gesture-capture driver 1224 is representative of software that is used to provide an interface with a device configured to capture a gesture, such as a touchscreen, track pad, camera, and so on. Alternatively or in addition, the interface application 1222 and the gesture-capture driver 1224 can be implemented as hardware, software, firmware, or any combination thereof. In addition, computer readable media 1214 can include a web browser 1225 that functions as described above.
Device 1200 also includes an audio and/or video input-output system 1226 that provides audio data to an audio system 1228 and/or provides video data to a display system 1230. The audio system 1228 and/or the display system 1230 can include any devices that process, display, and/or otherwise render audio, video, and image data. Video signals and audio signals can be communicated from device 1200 to an audio device and/or to a display device via an RF (radio frequency) link, S-video link, composite video link, component video link, DVI (digital video interface), analog audio connection, or other similar communication link. In an embodiment, the audio system 1228 and/or the display system 1230 are implemented as external components to device 1200. Alternatively, the audio system 1228 and/or the display system 1230 are implemented as integrated components of example device 1200.
Various embodiments enable a web browser to promote the availability of an installable application that is associated with a web site to which the web browser has been navigated. The web browser is configured to discover the availability of these applications and, responsively, provide a user experience through which the user can acquire and install such applications, as well as switch to applications that have previously been installed. Thus, through the various embodiments, a user is relieved of the burden of having to navigate to a particular application store and periodically search for applications associated with sites to which they browse.
Although the embodiments have been described in language specific to structural features and/or methodological acts, it is to be understood that the embodiments defined in the appended claims are not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed embodiments.
Number | Name | Date | Kind |
---|---|---|---|
5905492 | Straub et al. | May 1999 | A |
6075528 | Curtis | Jun 2000 | A |
6125384 | Brandt et al. | Sep 2000 | A |
6297819 | Furst | Oct 2001 | B1 |
6401094 | Stemp et al. | Jun 2002 | B1 |
6675228 | Bahrs | Jan 2004 | B1 |
6779155 | Bahrs et al. | Aug 2004 | B1 |
7099870 | Hsu et al. | Aug 2006 | B2 |
7310775 | Cooper et al. | Dec 2007 | B2 |
7313588 | Shotton, Jr. et al. | Dec 2007 | B1 |
7328405 | Hyatt et al. | Feb 2008 | B1 |
7647562 | Ghercioiu et al. | Jan 2010 | B2 |
7689923 | Massasso et al. | Mar 2010 | B2 |
7712034 | Gusmorino et al. | May 2010 | B2 |
7895296 | Dayan | Feb 2011 | B1 |
7917507 | Kim et al. | Mar 2011 | B2 |
7996496 | Haartsen et al. | Aug 2011 | B2 |
8046692 | Pogrebinsky et al. | Oct 2011 | B2 |
8065617 | Hawkins | Nov 2011 | B2 |
8209615 | Gupta et al. | Jun 2012 | B2 |
8255494 | Boodman et al. | Aug 2012 | B1 |
8458612 | Chatterjee et al. | Jun 2013 | B2 |
20020109713 | Carchidi et al. | Aug 2002 | A1 |
20020129064 | Guthrie | Sep 2002 | A1 |
20030018714 | Mikhailov et al. | Jan 2003 | A1 |
20030115167 | Sharif et al. | Jun 2003 | A1 |
20030135558 | Bellotti et al. | Jul 2003 | A1 |
20030222908 | Bybee et al. | Dec 2003 | A1 |
20040088355 | Hagan et al. | May 2004 | A1 |
20040237082 | Alcazar | Nov 2004 | A1 |
20050038796 | Carlson et al. | Feb 2005 | A1 |
20050257128 | Pasquali et al. | Nov 2005 | A1 |
20050267869 | Horvitz et al. | Dec 2005 | A1 |
20050289468 | Kahn et al. | Dec 2005 | A1 |
20060015387 | Moore et al. | Jan 2006 | A1 |
20060288011 | Gandhi et al. | Dec 2006 | A1 |
20070101276 | Yuen | May 2007 | A1 |
20070208759 | von Koch et al. | Sep 2007 | A1 |
20070250510 | Nachman | Oct 2007 | A1 |
20070282858 | Arner et al. | Dec 2007 | A1 |
20070283273 | Woods | Dec 2007 | A1 |
20080056480 | Isaacs et al. | Mar 2008 | A1 |
20080104195 | Hawkins et al. | May 2008 | A1 |
20080195628 | Kim | Aug 2008 | A1 |
20080201367 | Kim et al. | Aug 2008 | A1 |
20090006976 | Im | Jan 2009 | A1 |
20090055749 | Chatterjee et al. | Feb 2009 | A1 |
20090076843 | Graff et al. | Mar 2009 | A1 |
20090228469 | Kim et al. | Sep 2009 | A1 |
20090235187 | Kim et al. | Sep 2009 | A1 |
20090248397 | Garcia | Oct 2009 | A1 |
20090248494 | Hueter et al. | Oct 2009 | A1 |
20090282423 | Smith et al. | Nov 2009 | A1 |
20090300137 | Tyhurst et al. | Dec 2009 | A1 |
20090307105 | Lemay et al. | Dec 2009 | A1 |
20100005403 | Rozmaryn et al. | Jan 2010 | A1 |
20100058191 | Hawkins | Mar 2010 | A1 |
20100146379 | George et al. | Jun 2010 | A1 |
20100153544 | Krassner et al. | Jun 2010 | A1 |
20100199190 | Cadiz et al. | Aug 2010 | A1 |
20100201876 | Lin et al. | Aug 2010 | A1 |
20100332996 | Sarkaria | Dec 2010 | A1 |
20110208801 | Thorkelsson et al. | Aug 2011 | A1 |
20110231280 | Farah | Sep 2011 | A1 |
20110276961 | Johansson et al. | Nov 2011 | A1 |
20120060079 | Hawkins | Mar 2012 | A1 |
20120060110 | Virmani et al. | Mar 2012 | A1 |
20120129503 | Lindeman et al. | May 2012 | A1 |
20120150647 | Steelberg | Jun 2012 | A1 |
20120150663 | Steelberg | Jun 2012 | A1 |
20120233031 | Chang et al. | Sep 2012 | A1 |
20120246573 | Arokiaswamy | Sep 2012 | A1 |
20130067359 | Lalmalani et al. | Mar 2013 | A1 |
Number | Date | Country |
---|---|---|
102132316 | Jul 2011 | CN |
2012501498 | Jan 2012 | JP |
100264535 | Oct 1998 | KR |
20110063633 | Jun 2011 | KR |
WO-0150371 | Jul 2001 | WO |
WO-2006047218 | May 2006 | WO |
WO-2010025059 | Mar 2010 | WO |
Entry |
---|
StackOverflow. various authors, various discussions in StackOverflow forum. [retrieved] http://stackoverflow.com [on] Dec. 31, 2012 and Jan. 2, 2013. 22 pages. |
Aiglistorfer, R. .Launching Your iPhone App Via Custom URL Scheme. posted Dec. 14, 2008 [retrieved] http://mobiledevelopertips.com [on] Jan. 2, 2013. |
Goecks, et al., “Learning Users' Interests by Unobtrusively Observing Their Normal Behavior”, Retrieved at <<http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.36.651&rep=rep1&type=pdf>>, Proceedings of the 5th international conference on Intelligent user interfaces, Jan. 9-12, 2000, pp. 4. |
Boyden, Adam., “No Ifs, Ands or Buts: 10 Things Small Businesses Must Do to Succeed With Their Free Apps”, Retrieved at <<http://smallbiztrends.com/2011/03/10-things-small-businesses-must-do-succeed-with-free-apps.html>>, Mar. 14, 2011, pp. 12. |
“AppWave™ Browser”, Retrieved at <<http://docs.embarcadero.com/products/appwave/appwave—2.x—EN/AppWaveBrowser—2.0AppsUserGuide—EN.pdf>>, Jun. 14, 2011, pp. 38. |
“Foreign Office Action”, CN Application No. 200980134171.0, (Feb. 17, 2012), 7 pages. |
“Foreign Office Action”, CN Application No. 200980134171.0, (Aug. 12, 2012), 6 pages. |
“Foreign Notice of Allowance”, CN Application No. 200980134171.0, (Feb. 16, 2013), 4 pages. |
“Extended European Search Report”, EP Application No. 09810458.1, (Dec. 21, 2011), 11 pages. |
Final Office Action, U.S. Appl. No. 13/653,306, (Jun. 3, 2013), 38 pages. |
“Cynergy Unlocks the Hidden Potential of Rich Internet Applications through Cynergy Labs”, Ask Web Hosting, (Jan. 2008), 3 pages. |
“Delivering Rich Internet Applications with Ajax4jsf”, Exadel, Inc., (2006),10 pages. |
“International Search Report”, PCT Application PCT/US2009/054226, (May 20, 2010), 4 pages. |
Non-Final Office Action, U.S. Appl. No. 13/653,306, (Jan. 25, 2013), 28 pages. |
Notice of Allowance, U.S. Appl. No. 12/200,167, (Jul. 6, 2011), 12 pages. |
“StackOverflow Forum”, Retrieved from <http://stackoverflow.com/> on Dec. 31, 2012 and Jan. 2, 2013., (2012), 25 pages. |
“Steps to Create & Promote RSS Feeds”, RSS Specifications; Note Page, Inc., (2004-2007), 2 pages. |
“Which Rich Internet Application (RIA) Technology will Lead the Pack”, BETA Daily, (Mar. 7, 2008), 3 pages. |
“Written Opinion of the International Searching Authority”, PCT Application PCT/US2009/054226, (Feb. 28, 2011), 4 pages. |
Aiglstorfer, Rodney “Launching Your iPhone App Via Customer URL Scheme”, Retrieved from <http://mobiledevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html> on Jan. 25, 2013, (Dec. 14, 2008), 37 pages. |
Guldman, Andrew “Building Rich Internet Applications with Macromedia Flash MX and ColdFusion MX”, (May 2002), 40 pages. |
Non-Final Office Action, U.S. Appl. No. 13/295,486, (Aug. 15, 2013), 12 pages. |
Final Office Action, U.S. Appl. No. 13/295,486, Jan. 17, 2014, 15 pages. |
Non-Final Office Action, U.S. Appl. No. 13/295,486, May 22, 2014, 13 pages. |
Non-Final Office Action, U.S. Appl. No. 13/295,486, Sep. 4, 2014, 14 pages. |
Non-Final Office Action, U.S. Appl. No. 13/653,306, May 19, 2014, 30 pages. |
Final Office Action, U.S. Appl. No. 13/653,306, Oct. 24, 2014, 22 pages. |
Final Office Action, U.S. Appl. No. 13/295,486, Jan. 29, 2015, 15 pages. |
Number | Date | Country | |
---|---|---|---|
20130067358 A1 | Mar 2013 | US |