LIVE SESSIONS ON LOCK SCREEN

Systems and methods for presenting live sessions on electronic device lock screens are disclosed. In one or more implementations, an application process provides, to a system process executing on a computing device, a user interface template, wherein the user interface template defines one or more pre-defined regions of a user interface view. The system process may subsequently receive additional data. The system process may render the user interface view on a lock screen of the computing device according to the user interface template, wherein the user interface view comprises the additional data included in the one or more pre-defined regions.

TECHNICAL FIELD

The present description relates generally to electronic devices, including, for example, presenting live sessions on electronic device lock screens.

BACKGROUND

Electronic devices typically provide applications for presenting content on a user interface of the application. To access the content, a user is typically required to unlock the device, launch the application, and find the correct portion of the user interface of the application to access the desired content.

DETAILED DESCRIPTION

Challenges may arise when generating application-related displays on a lock screen of a computing device because applications are typically restricted from accessing locked data and/or resources. However, it may be desirable to display data associated with an application on a lock screen of a computing device. Therefore, it may be desirable to generate a display associated with an application while restricting the application from running on the computing device and/or receiving information about the computing device and/or the lock screen.

In one or more implementations, a system process (or a user interface display process that is separate from the operating system) at an electronic device receives, from an application, one or more templates defining information associated with a user interface view of the application. The one or more templates include one or more pre-defined regions for displaying live data. The system process can cause a user interface view to be rendered including the template and the live data.

An illustrative electronic device that may display content and/or live session UI views is shown inFIG.1. In the example ofFIG.1, electronic device100has been implemented using a housing that is sufficiently small to be portable and carried by a user (e.g., electronic device100ofFIG.1may be a handheld electronic device such as a tablet computer, a smart phone, a smartwatch, a laptop, and the like). As shown inFIG.1, electronic device100includes a display such as display110mounted on the front of housing106. Electronic device100includes one or more input/output devices such as a touch screen incorporated into display110, a button or switch such as button104and/or other input output components disposed on or behind display110or on or behind other portions of housing106. Display110and/or housing106include one or more openings to accommodate button104, a speaker, a light source, or a camera.

In the example ofFIG.1, housing106includes openings108on a bottom sidewall of housing106. One or more of openings108forms a port for an audio component. Housing106, which may sometimes be referred to as a case, may be formed of plastic, glass, ceramics, fiber composites, metal (e.g., stainless steel, aluminum, etc.), other suitable materials, or a combination of any two or more of these materials.

The configuration of electronic device100ofFIG.1is merely illustrative. In other implementations, electronic device100may be a computer such as a computer that is integrated into, and/or communicatively coupled to, a display such as a computer monitor, a laptop computer, a set-top box device, a content streaming device, a wearable device such as a smart watch, a pendant device, or other wearable or miniature device, a media player, a gaming device, a navigation device, a computer monitor, a television, a headphone, or other electronic equipment having a display. In some implementations, electronic device100may be provided in the form of a wearable device such as a smart watch. In one or more implementations, housing106may include one or more interfaces for mechanically coupling housing106to a strap or other structure for securing housing106to a wearer.

FIG.2illustrates an example of a live session UI view205displayed by the electronic device100. In some embodiments, the UI view205is a system UI view (e.g., a view provided by an operation system of the electronic device100). In one or more implementations, the UI view205may be a UI view for a widget. As illustrated inFIG.2, the UI view205is displayed by a lock screen250of the electronic device. However, in some embodiments, the electronic device is configured to display live session UI views on any one of a lock screen (e.g., lock screen250), a home screen, within another application and/or in a window that is overlaid on another application, and the like. In some embodiments, the UI view205is a UI view that is displayed by a system process.

In some implementations, the system process generates the UI view205in accordance with parameters provided by an application. In some implementations, the system process is an application framework that receives configuration data associated with an application, and generates the UI view205in accordance with the configuration data. In some implementations, the configuration data is included in a template data structure. In some implementations, the configuration data is defined using a declarative syntax.

In some implementations, the UI view includes at least one data element (e.g., first pre-defined region209or second pre-defined region211) associated with system data (e.g., a battery indicator, a signal strength indicator, or a timer). In some implementations, the UI view includes at least one data element (e.g., first pre-defined region209or second pre-defined region211) associated with application data (e.g., fitness tracking data, sports scores, etc.).

As shown inFIG.2, the lock screen250is displayed by the electronic device100while the electronic device100is a locked state. For example, the electronic device100may include the housing106and the display110that displays the lock screen250. In the example ofFIG.2, the lock screen250includes an unlock feature219. The unlock feature219may be selectable by a user of the electronic device100to initiate an unlock procedure (e.g., a procedure in which the user provides and/or the device obtains authentication information to unlock the electronic device). In the example ofFIG.2, the lock screen250also includes a lock indicator201indicating that the electronic device is locked. In one or more implementations, when authentication information is received by the electronic device100, and before the user provides an additional interaction to navigate away from the lock screen250(e.g., to another screen, such as a home screen or a user interface of an application or a system process), the lock indicator201may indicate that the electronic device100is unlocked for a period of time while the lock screen250continues to be displayed.

In the example ofFIG.2, the lock screen250also includes a carrier indicator212, a signal strength indicator214, a battery indicator216, and a functional element218(e.g., a displayed element that can be used to access a limited functionality of the electronic device100, such as a light source functionality or a camera functionality). In some implementations, one or more of the carrier indicator212, signal strength indicator214, battery indicator216, and functional element218is displayed within a live session UI view. As shown inFIG.2, the lock screen250may also include a background206(e.g., an image or a pattern of colors), a live session UI view205(e.g., a UI view in one or more states defined by a corresponding application or system process that is installed at the electronic device100), and may include publicly available data, such as a time208and a date210. In the example ofFIG.2, the electronic device100includes one or more sensing components204(e.g., a camera and/or an infrared sensor or depth sensor) that can be used for obtaining biometric authentication information from a user of the electronic device. In other examples, the electronic device100may obtain biometric or non-biometric (e.g., passcode) authorization information from other sensors and/or input components, such as a touch screen integrated into the display110, or a keyboard or other input interface of the electronic device100.

In the example ofFIG.2, the UI view205includes a background207within a border215, a first pre-defined region209, and a second pre-defined region211. However, in other examples, the UI view205might include any number of pre-defined regions (e.g.,209). As shown, the first pre-defined region209may include a display of data221. For example, the data may be additional data. The data221(e.g., the additional data) may be data received, by the system process, from the application at a time subsequent to the receipt of a template associated with the UI view. The data221may be inserted into the pre-defined region (e.g., pre-defined region209), and the UI view may be rendered with the data221shown in the pre-defined region209. Additionally, the data221may be received at a time prior to or simultaneous with the receipt, by the system process, of the template associated with the UI view. In one illustrative example, the data221may comprise data associated with a live event (e.g., a sporting event), or the live session data221may comprise data associated with an event that is updated on a periodic, sporadic, or continuous basis. The first pre-defined region209may include a display of the data221. The second pre-defined region211may include a display of different data223. In the example ofFIG.2, the UI view205is a bordered UI view having a border215that sets the UI view205apart from the background206. In one or more other implementations, the UI view205may be a borderless display element. In a borderless state of the UI view205, the first pre-defined region209and/or the second pre-defined region211and/or their respective associated data221and data223may be displayed to appear as integrated content with the background206.

In some variations, one or more data (e.g., data221and/or data223) displayed by a UI view (e.g., UI view205) is obtained, by the electronic device100, from an application running on the electronic device100. In some variations, one or more of the data (e.g., data221and/or data223) displayed by the UI view (e.g.,205) is obtained, by the electronic device100, from a remote application server610(e.g., remote with respect to the electronic device100) associated with the UI view. In some variations, the data is obtained, by the electronic device100, from the remote application server610. In some variations, the application sends the data to a data server612(e.g., a remote data server) associated with the electronic device100, and the electronic device100obtains the data from the data server612associated with the electronic device100.

In another illustrative example, the UI view205may include one or more graphical display elements (e.g., first pre-defined region209and/or second pre-defined region211) of a sports-related application that is installed at the electronic device100. The sports-related application may be inactive at the time of display of the UI view205. In this example, the data221may be a current score of a first individual or team currently participating in a competitive sporting event (e.g., a basketball game, a football game, a soccer game, a hockey game, a golf match, a chess tournament, a rugby game, tennis match, a fencing tournament, bowling match, a curling match, or the like). In this example, the data223may be a current score of a second individual or team currently participating in (e.g., against the first individual or team) the sporting event. In various implementations, the data221and the data223may be obtained, by the electronic device100, from an application server610associated with the sports-related application, while the sports-related application at the electronic device100is inactive at the electronic device100. In this way, a UI view205can display dynamic (e.g., current, real-time, live) data without having to operate the sports-related application.

The example of a sports-related application and a sporting event are merely illustrative. In another illustrative example, a user of the electronic device100may be waiting for, or riding in, a rideshare vehicle associated with a rideshare application installed at the electronic device100. The user may view a location of the rideshare vehicle, an estimated time of arrival, an estimated cost, or other dynamic and/or live data for the rideshare vehicle in a full user interface of the rideshare application (e.g., in a full user interface of the rideshare application, such as a user interface generated by the rideshare application and not by a system process). In this example use case, when the UI view205(generated by a system process) is displayed instead of the full user interface of the rideshare application (generated by the application), the UI view205may display some or all of the data associated with the rideshare vehicle. For example, the first pre-defined region209may display data221corresponding to a current location of the rideshare vehicle, and the second pre-defined region211may display data223corresponding to an estimated time of arrival of the rideshare vehicle.

In general, the UI view205may be a system-generated live session UI view (e.g., a system-generated notification, a status bar UI view, a toolbar UI view, a system tray view, a taskbar view, or other system-generated UI view that displays system-generated data, such as live data or dynamic data), a system-generated application-specific live session UI view that is separate from a full (application-generated) UI of an application and that can be displayed while the full UI of the application is inactive (e.g., minimized or closed), or an extension-generated live session UI view that can be generated by an extension operating in a restricted (e.g., sandbox) mode.

In the example ofFIG.2, the UI view205is displayed in a first state. In this first state, the UI view205includes first data221in a first pre-defined region209and second data223in a second pre-defined region211, as well as the background207and the border215. The first state may be defined by the underlying application for the UI view205. For example, the first state may be defined by the underlying application prior to the electronic device displaying the UI view205. In one or more implementations, the first state illustrated in the example ofFIG.2may be one of several states of the UI view205that are defined by the underlying application.

FIG.3illustrates an example in which the electronic device100displays the UI view205in a second state that is different from the first state illustrated inFIG.2. In the example ofFIG.3, the UI view205is in the second state. As shown in the example ofFIG.3, in the second state, the UI view205includes the background207, the border215of the UI view205, the first pre-defined region209, and the second pre-defined region211. While the UI view205is in the second state, the UI view205may include updated data321(e.g., first updated data) in the first pre-defined region209and updated data323(e.g., second updated data) in the second pre-defined region211. For example, the updated data may be new live data to replace the first data. In an example of a sporting event, a first score for a first team may be displayed as data221in pre-defined region209, and a second score for a second team may be displayed as data223in pre-defined region211. If the first team and the second team each change their score, a third score for the first team may be displayed as data321in pre-defined region209and a fourth score for the second team may be displayed as data323in pre-defined region211. WhileFIG.3shows updated data321and updated data323, in some examples only the data in the first pre-defined region209is updated, while the data in the second pre-defined region211stays the same. For example, updated data321may be displayed in pre-defined region209, while the initial data223may be presented in pre-defined region211. In another example, the initial data221is displayed in pre-defined region209while updated data323is presented in pre-defined region211. In other examples, there may be any number of pre-defined regions presented on the UI view205. The UI view205may present one pre-defined region, three pre-defined regions, or more than three pre-defined regions.

In one or more implementations, the UI view205may transition from the first state shown inFIG.2to the second state shown inFIG.3in response to an update sent by the application. In another example, the UI view205may transition from the first state shown inFIG.2to the second state shown inFIG.3in response to an input from a user associated with the electronic device100. For example, a user may enter an input requesting an update to the UI view205, and the UI view205may be updated according to the user input. In another example, the UI view205may be updated based on receiving, by the system process, updated data from a remote data server612. The system process may access the remote data server612on a periodic basis, and the system process may obtain updated data from the remote data server612after an update, of the data at the data server612, such as by the application server610. The system process may include a default update rate, and the system process may request updates to the data from the remote data server612based on the default update rate. The system process may receive an update cadence from the application. The system process may request updates to the data from the remote data server612based on the update cadence received from the application. The system may transition from the first state shown inFIG.2to the second state shown inFIG.3using a transition. For example, the transition may be an animation. For example, the first data221may be replaced, with an animation feature, with the data321in the pre-defined region209. The animation may include any suitable animation, for example a fade in, a slide in, a spin, or any other suitable animation.

FIG.4shows an additional example of a UI view405associated with a lock screen250of an electronic device100. For example, the UI view405inFIG.4may be a third state associated with the UI view405. In the third state, the UI view405may be based on a different template than the template used to generate the UI view205shown inFIGS.2and3. For example,FIGS.2and3may be generated based on a first template, and the differences between the UI views presented inFIGS.2and3may be limited to the data presented in the pre-defined regions209and211. The UI view405be based on a different template. The different template may include different pre-defined regions than the template used to generate the UI view205. For example, pre-defined region409may be a different size, a different shape, in a different location, or any other suitable differences. For example, the pre-defined region409may be presented in a corner of the UI view405, rather than in a center of the UI view405.

The different template used to generate the UI view405may be provided by the application. In one or more implementations, the different template used to generate the UI view405may be retrieved, by the system process, from the remote application server610. The different template used to generate the UI view405may be retrieved, by the system process, from a remote data server612associated with the system process or the electronic device100, wherein the remote data server612associated with the system process or the electronic device100may be configured to host information from the application. In another example, the remote data server612may be associated with a third party other than the application and the system process or the electronic device100, and the third party data server612may be configured to host information from the application, and the third party data server612may be configured to be accessed by the system process.

The system process may receive an indication from the application of which template to use. For example, the system process may receive an indication from the application to generate a UI view205associated with a first template to display first data221in a pre-defined region209and second data223in a pre-defined region211. In another example, the system process may receive an indication from the application to generate a UI view405associated with a second template to display data421in a pre-defined region409. In another example, the system process may generate the UI view205based on the first template for a first period of time. Subsequent to the generating the UI view205, the system process may render the UI view405. The system process may transition the UI view205to the UI view405. The transition may comprise an animation. In another example, the UI view205and the UI view405may be displayed on the lock screen250simultaneously.

FIG.5illustrates an example in which the electronic device100may display the UI view405in a fourth state that is different from the third state illustrated inFIG.4. In the example ofFIG.5, the UI view405is in the fourth state. As shown in the example ofFIG.5, in the fourth state, the UI view405includes the background407, the border415of the UI view405, and the pre-defined region409. While the UI view405is in the fourth state, the UI view405may include updated data521in the pre-defined region409. For example, the updated data may be new live data to replace the first data421. In an example of a user accessing personalized data, the data421may be personalized information, for example banking account information, displayed in a pre-defined region409, and the rest of the UI view405may comprise static data associated with the banking application. If the user makes a transaction, updated data521may be displayed in the pre-defined region409, rather than the data421.

In the examples ofFIGS.2-5the UI views205and405are shown as being displayed on the lock screen250of the electronic device100, as examples of a screen on which live session UI views can be displayed. In implementations in which the UI view205and the UI view405are displayed and may be updated based on live or dynamic data, the UI view205and the UI view405can provide various technical advantages. For example, once a device is locked, in some devices, the entire system, including application data associated with applications installed at the electronic device can be encrypted. In order for a user to regain access to the data and/or functionality of the electronic device100, the user is often required to provide authentication information that proves to the device that the user is an authorized user. As examples, the authentication information can include a passcode entered by the user, or biometric authentication information such as a fingerprint, a voice print, or facial feature information.

Following a locking event for an electronic device100, the electronic device100may display a lock screen250. While the electronic device100is locked and the lock screen250is displayed, the user can provide authentication information and/or the device can automatically obtain authentication information (e.g., by obtaining imaging or depth data associated with the user's finger or face), and unlock the electronic device100if the authentication information indicates that the user is an authorized user of the electronic device100.

In one or more use cases, a user of an electronic device100can use the device to view or otherwise monitor an ongoing event in the physical world using an application installed at the electronic device. As examples, a sports-related application may be used to watch or track the score of a sporting event, a rideshare application may be used to monitor the location of a rideshare vehicle before or during a ride in the rideshare vehicle, or a delivery application may be used to monitor the status of an order and/or a location of a delivery vehicle. As another example, a nature-related application may be used to monitor a natural phenomenon such as a tide, a phase of the Moon, the weather, or the like.

It can be challenging to obtain and display data associated with an application on a lock screen250of an electronic device100without allowing the application to access data and/or resources that are locked from access in the locked state of the device. For example, it may be desirable to display data associated with an application while preventing the application itself from running on the electronic device and/or from receiving information about user interactions with the lock screen of the electronic device (e.g., information which is typically protected by the device until a user provides authentication information and seeks to interact with the application).

Aspects of the subject technology can provide a live session UI view displaying dynamic data, such as the UI view205ofFIGS.2and3, and UI view405ofFIGS.4and5, in a way that is power efficient and maintains user privacy and/or device security while an electronic device is in a locked state. For example, by providing state definitions, trigger definitions, and/or transition definitions to the system process of the electronic device100before the electronic device100enters a locked state, the UI view205and the UI view405can be displayed on the lock screen250in a way that appears to be responsive to user interactions, data triggers, and/or other content on the lock screen250, without allowing the underlying application to receive information about user interactions with the electronic device or other content displayed on the lock screen while the electronic device100is in the locked state. In this way, the privacy that the user may expect when the user's device is locked can be maintained and protected.

In various implementations described herein, whether a live session UI view with dynamic data is displayed on lock screen, a home screen, or any other user interface of an electronic device, in addition to privacy, power-efficiency, and/or computing-resource efficiency advantages, aspects of the subject technology can also provide advantages in terms of developer and user efficiency. For example, a developer of an application can provide information to a system process of an electronic device that allows the system process to animate aspects of a UI view for application information, without the developer having to create or provide code for the animations.

In another example, the live session UI view can be updated based on one or more triggers. The triggers may be determined by the system process or the triggers may be received, by the system process, from the application. For example, a UI view205may be associated with a ride-share application. The ride-share application may indicate that a ride will arrive in 60 minutes. Based on the amount of time until the ride arriving, the data displayed in the UI view205may be updated at a lower frequency. For example, the data displayed in the UI view205may be updated every minute, every two minutes, every 30 seconds, or the like. The ride-share application may indicate that a ride will arrive in 2 minutes. Based on the amount of until the ride arriving being 2 minutes, the data displayed in the UI view205may be updated at a higher frequency. For example, the data displayed in the UI view205may be updated every second, every 5 seconds, every 10 seconds, or the like.

FIG.6illustrates an example architecture that may be implemented by the electronic device100in accordance with one or more implementations of the subject technology. For explanatory purposes, portions of the architecture ofFIG.6is described as being implemented by the electronic device100ofFIG.1, such as by a processor and/or memory of the electronic device; however, appropriate portions of the architecture may be implemented by any other electronic device. Not all of the depicted components may be used in all implementations, however, and one or more implementations may include additional or different components than those shown in the figure. Variations in the arrangement and type of the components may be made without departing from the spirit or scope of the claims as set forth herein. Additional components, different components, or fewer components may be provided.

Various portions of the architecture ofFIG.6can be implemented in software or hardware, including by one or more processors and a memory device containing instructions, which when executed by the processor cause the processor to perform the operations described herein. In the example ofFIG.5, the electronic device100includes hardware components such as display110. In this example, the electronic device100also includes one or more logical process such as a system process602, and/or one or more applications604a-604n. For example, the system process602and/or the one or more applications604a-nmay be logical processes that are executed from a memory by one or more processors of the electronic device100. The system process602may be, for example, a process defined in hardware and/or as part of an operating system of the electronic device100.

InFIG.6, the electronic device100may store code for three applications (e.g., App 1604a, App 2604b, and App N604n). However, this is merely illustrative, and it is understood that the electronic device100can store code for one application604, two applications604, more than three applications604, or generally any number of applications604. The applications604may, for example, have been previously downloaded to the electronic device100and installed at the electronic device100. One or more of the applications604may be associated with a UI view (e.g., UI view205or UI view405) that displays data that can be periodically, occasionally, or continuously dynamic data (e.g., application-specific information, system status information, and/or information associated with a physical world event as discussed herein), while the application604and/or a full user interface of the application604is inactive.

InFIG.6, the applications604are in communication with the system process602. The applications604can provide one or more templates and additional information to the system process602. For example, App 1 may provide, to the system process602, one or more templates associated with a live session UI view. App 1 may provide, to the system process602, one or more definitions associated with the one or more templates. The system process may store the definitions associated with App 1, for example in a memory associated with the system process. The system process may use the definitions associated with App 1 to display the UI view205and/or the UI view405, as shown inFIGS.2-5.

The definitions associated with App 1 may include definitions of one or more templates associated with App 1. The one or more templates may have static data associated with the templates. Static data associated with a particular template may always be present in a UI view associated with the particular template. The templates may include one or more pre-defined regions that can be inserted with additional data (e.g., data221,223, etc.). The additional data may be live data. The additional data may be personalized data. The additional data may be dynamic data. The additional data may be provided by the application or by a remote application server610associated with the application. A single application may generate or provide, to the system process, one or more templates. The system process may render the UI view (e.g., UI view205and UI view405) based on the one or more templates. The system process may render the UI view including a single one of the one or more templates, or the system process may render the UI view including multiple templates from the same application. The system process may render the UI view including multiple templates from multiple different applications. Each different templates may display different data on a lock screen (e.g., lock screen250) of the electronic device100.

The definitions may include definitions for UI elements of a UI view, state transitions for the UI view, sizes for one or more UI elements of the UI view, shapes for the one or more elements of the UI view, locations for the one or more UI elements of the UI view, and a layout of the UI elements of the UI view. The definitions may define a graphical object displayed on the UI view.

The providing of the state definitions illustrated inFIG.6may be performed in advance of the corresponding a UI view (for which the state definitions define one or more states) being displayed, so that the system process602of the electronic device100can render the corresponding graphical having the data, and the layout, size, and/or other visual features of the UI view in any of various states defined in the state definitions for at least a period of time while the application itself is inactive.

As shown inFIG.6, an application server610may be in communication with a data server612(e.g., a remote server), and the system process602may be in communication with a channel of the data server (e.g., channel 1). The system process602may receive data corresponding to an application from the data server. For example, the system process602may receive data associated with Appl604afrom the data server612. The data server612may be remote from the electronic device100. In one example, App 1604asends definitions to system process602, wherein the definitions comprise an indication of an identifier associated with one or more communication channels of the data server612. For example, the system process602may use the one or more identifiers (e.g., an identifier, a link, a token, or a handle) to access a channel of the remote server612to retrieve data associated with App 1604a.

The one or more channels may be publication channels. The publication channels may publish data for other devices to retrieve from the publication channels. The applications604may have access to the publication channels to publish data associated with the applications604on one or more of the channels of the data server612. The system process602may, using the identifier of the publication channel, subscribe to the publication channel. The applications604may publish dynamic data at the publication channels, and the system process602may access the data published by the publication channels. The publication channels may be hosted by one or more remote servers. The one or more remote servers may be associated with the applications604a-n. After accessing the data, the system process may store the data on the electronic device100(e.g., in a memory).

In one example illustrated inFIG.6, the system process602receives a template from an application604(e.g., App 1604a), and the system process subscribes to a Channel on a data server612associated with App 1. The system process602retrieves live session data from the Channel 1 channel, and the system process causes, via the renderer606, a UI view (e.g., UI view205) to be displayed, at display608, including the template and the data. The data may be inserted into one or more pre-defined regions of the template. For example, the UI view displaying the template and the data may be UI view205with the template including pre-defined region209including data221and pre-defined region211including data223.

The UI view (e.g., UI view205) can be updated periodically to ensure the live session data is sufficiently accurate. For example, the UI view205may be updated every 10 seconds. The update frequency may be determined by the application. The update frequency may be determined by the system process602. In one or more implementations, the update frequency may be based at least in part on a data change rate of a corresponding live event. For example, the update frequency for a score of a soccer or baseball game may be lower than the update frequency for a score of a basketball game, since the data change rate of a baseball or soccer game score is lower than the data change rate of a basketball game score.

In one or more implementations, there may be a limit to the frequency with which the UI view may be updated. The system process may balance the periodicity of the updates to maximize data accuracy, without causing too much strain on the resources of the electronic device100, such as a battery life or a computing power. In one example, the system process602may determine that a user is not actively interacting with the UI view. Based on the inactivity, the system process602may pause all updates to the live session data. In another example, a user associated with the electronic device100may request a pause of updates to the UI view. The live session UI view may not be updated until the user requests a resumption of the updates. In one example, new data may be published at Channel 1, but the system process may not access the new data while the UI view is inactive. Upon determining a user is interacting with the UI view or the electronic device, the system process may un-pause the updates and begin updating the live session data on the UI view.

In the above example, the system process602may determine first data (e.g., data221and data223) on Channel 1 of the data server612. The system process may also determine a template associated with an application (e.g., App 1) associated with the published data. The system process602may cause a UI view205to be rendered including the template and the data in the pre-defined regions of the template. For example, the system process602may cause the UI view205to be rendered with the data221inserted into the pre-defined region209and the data223to be inserted into the pre-defined region211. At a subsequent time, the system process602may query the Channel 1 to request updated data. The system process602may determine that the application has published additional and/or updated data at the Channel 1 of the data server612. The system process602may access the updated data and update the UI view205with the updated data. For example, the system process602may transition the UI view205shown inFIG.2to the UI view205shown inFIG.3. For example, the system process602may replace the data221in pre-defined region209with the updated data321, and the system process602may replace the data223in pre-defined region211with the updated data323.

In another example, the system process602may access data from the data server612associated with multiple applications and/or multiple templates. Each piece of data may be associated with an identifier to identify which application and/or template the data corresponds to. For example, the system process602may cause a UI view to be rendered on a lock screen with two different templates from two different applications. To determine which data is associated with which pre-defined region of which template, the data may be tagged with an identifier to define which application, template, and pre-defined region the data is associated with. The system process602may receive the data and the identifier, and the system process602may use the identifier to determine how and/or where to render the data in the user interface view205.

In another example, a system process may transition a UI view from a currently rendered view to a newly rendered view. The currently rendered view may be associated with an extension process executing in a restricted mode (e.g., a sandbox mode) of the electronic device100. For example, a restricted mode may comprise an isolated environment on the electronic device100that separates specific code and/or data from the rest of an application, the electronic device100, or a network. The restricted mode may prevent unintended errors or malicious actions by the code in the restricted mode because the code is not executing on an open environment of the electronic device100. In some examples, the restricted mode, such as a sandbox mode, may be a testing environment with some functionality to allow for code executing in the restricted mode to take some actions without affecting the overall electronic device100. The system process602may request, from the extension process executing in the restricted mode, the newly rendered UI view. The system process may cause a transition from the currently rendered UI view to the newly rendered UI view. For example, the transition can be an animation. The animation can be any animation contemplated herein, such as a slide in, a fade in, or any other suitable animation.

In another example, the system process may request a newly rendered view from a second extension process executing in a same or a different restricted mode, the newly rendered UI view. The system process may cause a transition from the currently rendered UI view to the newly rendered UI view. For example, the transition can be an animation. The animation can be any animation contemplated herein, such as a slide in, a fade in, or any other suitable animation. The currently rendered view may include a template with dynamic data (e.g., live session data) inserted into one or more pre-defined regions of the template and rendered into a UI view. The newly rendered view may include the template with updated dynamic data. The updated dynamic data may replace the dynamic data inserted into the one or more pre-defined regions, and the newly rendered UI view may display the updated dynamic data on the UI view.

The extension process may execute on the electronic device100in one or more modes. The modes may be restricted in one or more ways. The extension processes may have less permissions when executing in the restricted mode. For example, the restriction may be determined based on a mode of the extension process. In one example, the extension process may be executing in a rendering mode, where the extension process renders the template and data into a UI view. In the rendering mode, the extension process may not have access to a network. In the rendering mode, the extension process may not be accessible by a user of the electronic device100. While executing in the rendering mode, the system process may retrieve data from subscription channel and send the data to the extension process. Therefore, even without network access, the extension process may still access updated data and render an updated UI view. In another example, the extension process may be executing in a data fetch mode. While executing in the data fetch mode, the extension process may have network access. For example, the extension process may be able to access a publication channel to request updated dynamic data to be used when rendering the newly rendered UI view. In another example, the extension process may be executing in an editing mode. While in the editing mode, the extension process may have a limited access to a network and a limited access to receive user inputs.

FIG.7illustrates a flow diagram of an example process for live session user interface views, according to aspects of the subject technology. The blocks of process700are described herein as occurring in serial, or linearly. However, multiple blocks of process700may occur in parallel. In addition, the blocks of process700need not be performed in the order shown and/or one or more blocks of process700need not be performed and/or can be replaced by other operations. In some embodiments, a system process (e.g., system process602) of an operating system of an electronic device performs the process ofFIG.7. In some implementations, the system process is a user interface view display process (e.g., a process for displaying widgets, etc.). In other embodiments, a user interface view display process (e.g., a process for displaying widgets, etc.) separate from an operating system of the electronic device performs the process ofFIG.7.

In the example ofFIG.7, at block702, a system process (e.g., system process602) executing on a computing device (e.g., electronic device100) receives, from an application process (e.g., App 1604a) executing on the computing device, a user interface template, wherein the user interface template defines one or more pre-defined regions (e.g.,209,211) of a user interface view (e.g., UI view205). In one or more implementations, the user interface view may be a user interface view for a widget for the application. At block704, the system process (e.g., system process602) receives, subsequent to receipt of the user interface template, additional data (e.g., data221and data223).

At block706, the system process (e.g., system process602) renders the user interface view (e.g., UI view205) in accordance with the user interface template, wherein the user interface view (e.g., UI view205) is included on a lock screen (e.g., lock screen250) associated with the computing device, and wherein the rendered user interface view (e.g.,205) comprises the additional data (e.g.,221and223) included in the one or more pre-defined regions (e.g.,209and211). For example, the application process may be related to displaying information associated with a sporting event. The system process (e.g.,602) may receive, from the application process, a user interface template, wherein the user interface template defines one or more pre-defined regions of a user interface view (e.g.,205) on a lock screen (e.g.,250). The system process (e.g.,602) may access the additional data from a publication channel (e.g., data server612) associated with the application process. The data may comprise any number of types of dynamic data for presentation on the UI view (e.g.,205). For example, when the application process is associated with a sporting event, the additional data may comprise one or more team names associated with teams competing in the sporting event, one or more individual names of individuals competing in the sporting event, a score of one or more of the teams or individuals, a time left in the event, etc.

In another example, the system process (e.g.,602) may receive a database or dictionary of data prior to the determination to display the user interface view (e.g.,205) on the lock screen (e.g.,250). For example, the system process may receive a list of each team associated with the application process. For example, if the application process is associated with a National Basketball Association (NBA) league, the system process may receive a list of each team name associated with the NBA. Additionally, the database may comprise a list of names of each individual player associated with one or more of the NBA teams. For example, the list of individual names may comprise each person on one or more of the NBA team rosters. The database may also include indicators of associations between multiple data points in the database. For example, an indication may be provided that an individual player is associated with a specific team. For example, the database may indicate that Klay Thompson plays for the Golden State Warriors. In another example, each of the pieces of information, such as the team names and/or individual player names, may be associated with an indicator. For example, the Golden State Warriors may be associated with the indicator “team_4,” and Klay Thompson may be associated with the indicator “player_15.” For example, each player associated with the application may be associated with a unique indicator. The system process may access, at the publication channel (e.g., data server612), additional data to be used to generate the user interface view (e.g.,205) associated with an NBA game. For example, the system process (e.g.,602) may retrieve an indicator, such as, “team_4; player_15; points_9.” The system process may query the database with the received additional data, and the system process may determine to generate the user interface view with information in the pre-defined regions (e.g.,209) to indicate the Golden State Warriors are playing a game, and player Klay Thompson has scored 9 points in the game.

FIG.8illustrates a flow diagram of an example process for providing live session user interface views, according to aspects of the subject technology. The blocks of process800are described herein as occurring in serial, or linearly. However, multiple blocks of process800may occur in parallel. In addition, the blocks of process800need not be performed in the order shown and/or one or more blocks of process800need not be performed and/or can be replaced by other operations.

In the example ofFIG.8, at block802, an application process (e.g., App 1604a) sends to a system process (e.g.,602) associated with a computing device (e.g.,100), a user interface template, wherein the user interface template defines one or more pre-defined regions (e.g.,209and211) of a user interface view (e.g.,205).

At block804, the application process (e.g.,604a) accesses the additional data (e.g.,221and223). At block806, the application process (e.g.,604a) associates the additional data (e.g.,221and223) with at least one of the one or more pre-defined regions (e.g.,209and211) of the user interface view (e.g.,205).

At block808, the application process (e.g.,604a) sends to the system process (e.g.,602), the additional data (e.g.,221and223) in association with the one or more pre-defined regions, wherein the additional data is to be included, by the system process, in a rendered version of the user interface view at the associated one or more pre-defined regions, and wherein the rendered version of the user interface view Is included in a lock screen (e.g.,250) associated with the computing device.

FIG.9illustrates a flow diagram of an example process for transitioning from a rendered user interface view to a newly rendered user interface view, according to aspects of the subject technology. The blocks of process900are described herein as occurring in serial, or linearly. However, multiple blocks of process900may occur in parallel. In addition, the blocks of process900need not be performed in the order shown and/or one or more blocks of process800need not be performed and/or can be replaced by other operations.

In the example ofFIG.9, at block902, a system process (e.g.,602) on a computing device (e.g.,100) requests a newly rendered view from an extension process executing on the computing device, wherein the extension process is executing in a restricted (e.g., sandbox) mode on the computing device.

At block904, the system process (e.g.,602) receives, from the extension process, the newly rendered view (e.g.,205shown inFIG.3). At block906, the system process (e.g.,602) displays, on a lock screen (e.g.,250) of the computing device, a transition from a previously rendered view corresponding to the extension process to the newly rendered view received from the extension process. For example, the currently rendered view may be associated with a sporting event, and the currently rendered view may display a score of the sporting event on the lock screen. The system process may determine an update to the score, and the system process may request the newly rendered view to show the updated score. For example, during a basketball game, the score may be 33 to 27. In one example, the first team may score a two point score, and the score of the basketball game may change to 35 to 27. The system process may determine the score change and request the newly rendered view to display the 35 to 27 score on the lock screen.

As described above, aspects of the subject technology may include the collection and transfer of data from an application to other users' computing devices. The present disclosure contemplates that in some instances, this collected data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data can include demographic data, location-based data, online identifiers, telephone numbers, user activity data, user power consumption data, email addresses, home addresses, data or records relating to a user's health or level of fitness (e.g., vital signs measurements, medication information, exercise information), date of birth, or any other personal information.

FIG.10illustrates an example computing device with which aspects of the subject technology may be implemented in accordance with one or more implementations. The computing device1000can be, and/or can be a part of, any computing device or server for generating the features and processes described above, including but not limited to a laptop computer, a smartphone, a tablet device, a wearable device such as smart watch, and the like. The computing device1000may include various types of computer readable media and interfaces for various other types of computer readable media. The computing device1000includes a permanent storage device1002, a system memory1004(and/or buffer), an input device interface1006, an output device interface1008, a bus1010, a ROM1012, one or more processing unit(s)1014, one or more network interface(s)1016, and/or subsets and variations thereof.

The bus1010collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the computing device1000. In one or more implementations, the bus1010communicatively connects the one or more processing unit(s)1014with the ROM1012, the system memory1004, and the permanent storage device1002. From these various memory units, the one or more processing unit(s)1014retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The one or more processing unit(s)1014can be a single processor or a multi-core processor in different implementations.

The ROM1012stores static data and instructions that are needed by the one or more processing unit(s)1014and other modules of the computing device1000. The permanent storage device1002, on the other hand, may be a read-and-write memory device. The permanent storage device1002may be a non-volatile memory unit that stores instructions and data even when the computing device1000is off. In one or more implementations, a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) may be used as the permanent storage device1002.

In one or more implementations, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as the permanent storage device1002. Like the permanent storage device1002, the system memory1004may be a read-and-write memory device. However, unlike the permanent storage device1002, the system memory1004may be a volatile read-and-write memory, such as random access memory. The system memory1004may store any of the instructions and data that one or more processing unit(s)1014may need at runtime. In one or more implementations, the processes of the subject disclosure are stored in the system memory1004, the permanent storage device1002, and/or the ROM1012. From these various memory units, the one or more processing unit(s)1014retrieves instructions to execute and data to process in order to execute the processes of one or more implementations.

The bus1010also connects to the input and output device interfaces1006and1008. The input device interface1006enables a user to communicate information and select commands to the computing device1000. Input devices that may be used with the input device interface1006may include, for example, alphanumeric keyboards and pointing devices (also called “cursor control devices”). The output device interface1008may enable, for example, the display of images generated by computing device1000. Output devices that may be used with the output device interface1008may include, for example, printers and display devices, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information.

One or more implementations may include devices that function as both input and output devices, such as a touchscreen. In these implementations, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.

Finally, as shown inFIG.10, the bus1010also couples the computing device1000to one or more networks and/or to one or more network nodes through the one or more network interface(s)1016. In this manner, the computing device1000can be a part of a network of computers (such as a LAN, a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. Any or all components of the computing device1000can be used in conjunction with the subject disclosure.