Third-party application management

By introducing web view applications into social network applications and running in an independent security domain, restricting access to user data by third-party applications, solving user data security issues, ensuring the security of financial transactions and virtual currency information, and achieving a safer computing environment.

CN113383336BActive Publication Date: 2025-07-29SNAP INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980086279.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-12-28
Filing Date
2019-12-27
Publication Date
2025-07-29
Estimated Expiration
2040-01-30

AI Technical Summary

Technical Problem

In the prior art, when third-party applications are integrated in social networks, the security of user data is difficult to effectively protect, especially when financial transactions and virtual currency information, the security of data access cannot be guaranteed.

Method used

By introducing web view applications into social network applications and restricting their operation within an independent security domain, social network applications are responsible for accessing user data and displaying user interfaces, monitoring user interactions to determine the allocation of virtual currency, and ensuring data security.

Benefits of technology

It realizes restricting access to user data in third-party applications, improving the security of user data, and providing a safer computing environment especially when it involves financial transactions and virtual currency operations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113383336B_ABST
    Figure CN113383336B_ABST
Patent Text Reader

Abstract

Methods and systems for running a secure application for a web view application are disclosed. In some aspects, user data can be protected within a first security domain and is inaccessible to a web view application running within a second application. When a request to display a user interface is received from the web view application, the second application accesses the user data via a second security domain. The second application then displays the user interface at least in part based on the user data.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Priority Claim

[0002] This application is a continuation of and claims priority to U.S. Patent Application No. 16 / 236,088, filed on December 28, 2018, the entire content of which is incorporated herein by reference. Technical Field

[0003] The present disclosure generally relates to the technical field of virtual currency. In particular, the disclosed embodiments provide virtual currency within a social network. Background Art

[0004] Social network applications support a wide range of functions, and these functions are still expanding. Some of these functions include the ability to integrate third-party applications into the social network framework. Although third-party applications can enhance social network functions in important ways, user data segmentation is usually very important. Brief Description of the Drawings

[0005] In the drawings, which are not necessarily drawn to scale, like reference numerals may describe like components in different views. Like numbers with different letter suffixes may represent different instances of like components. In the figures of the drawings, some embodiments are shown by way of example and not limitation.

[0006] Figure 1 is a block diagram showing an example messaging system for exchanging data (e.g., messages and associated content) over a network;

[0007] Figure 2 is a block diagram showing further details regarding the messaging system according to some embodiments;

[0008] Figure 3 is a schematic diagram showing data that can be stored in a database of the messaging system according to some embodiments;

[0009] Figure 4 is a block diagram showing functional components of a feed display system forming part of the messaging system according to some example embodiments;

[0010] Figure 5 shows an overview of the message flow between various components of the messaging client application 104;

[0011] Figure 6 shows an example data structure that can be maintained by one or more of the disclosed embodiments;

[0012] Figure 7A is a flowchart of a method for displaying a user interface in response to a request from an application running in a web view;

[0013] Figure 7B A flowchart of a method for displaying a user interface via a web view that does not have access to user data;

[0014] Figure 8 A flowchart of a method for identifying a user interface to be displayed;

[0015] Figure 9 Shows an example user interface structure that can be implemented in at least some of the disclosed embodiments;

[0016] Figure 10 Shows examples of two messages that can be implemented in at least some of the disclosed embodiments;

[0017] Figure 11 Shows an example of a user interface that can be implemented in one or more of the disclosed embodiments;

[0018] Figure 12 Shows an example of a user interface that can be implemented in one or more of the disclosed embodiments;

[0019] Figure 13 Shows an example user interface that can be implemented in one or more of the disclosed embodiments;

[0020] Figure 14 Shows an example user interface that can be implemented in one or more of the disclosed embodiments;

[0021] Figure 15 Shows an example user interface that can be implemented in one or more of the disclosed embodiments;

[0022] Figure 16 A block diagram illustrating a representative software architecture that can be used in conjunction with various hardware architectures described herein; and

[0023] Figure 17 A block diagram showing components of a machine capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methods discussed herein according to some exemplary embodiments. Detailed Description

[0024] The following description includes systems, methods, techniques, instruction sequences, and computer program products that implement illustrative embodiments of the present disclosure. In the following description, for purposes of explanation, numerous specific details are set forth to provide an understanding of the various embodiments of the subject matter of the present invention. However, it will be apparent to one of ordinary skill in the art that embodiments of the subject matter of the present invention may be practiced without these specific details. Generally, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.

[0025] Embodiments are disclosed that provide for launching and running a third-party application within a web view. The web view may be implemented via a browser application embedded within a social networking application. To limit access to user data available to the social networking application, the web view may be run in a security domain separate from the social networking application itself. In some aspects, the web view application is bundled within a mobile device application. Using the web view application may allow for the construction of mobile applications using web-based technologies such as one or more of HTML, JavaScript, CSS, etc. The web view application may be bundled within an application that runs natively on a mobile device operating system.

[0026] Certain user interfaces may only be accessible from the social networking application and not via the web view. For example, if a user interface requires access to user data to perform its function, it will not be able to perform this operation from the web view and may need to rely on the social networking application to display this user interface on its behalf. In some embodiments, the web view may also be configured in a security domain that blocks access to financial information such as virtual currency balance information (e.g., token balance), a store that offers the sale or purchase of virtual currency (token store). Additionally, a dialog box for confirming a financial transaction may also be unavailable to the web view application. Thus, the social networking application may display a confirmation dialog box before performing any financial transaction on behalf of the web view application.

[0027] To facilitate this, the web view application may generate a request to display a user interface. The request is provided to the social networking application. The request may indicate one or more parameters for selecting a suitable user interface to display. For example, the request may specify a particular type of user interface to display and other criteria. Another criterion may relate to, for example, the characteristics of the user interface to be displayed. For example, the request may indicate that a video, image, or other type of content should be displayed.

[0028] The social networking application then accesses user data as needed to fulfill the request. For example, selecting a user interface to display may include matching the available user interfaces to be displayed with one or more characteristics of the user to whom the user interface will be displayed. Selecting a user interface may also include selecting a user interface based on the parameters provided by the web view application.

[0029] When displaying a user interface, monitor the input received by the user interface. For example, the user interface can be monitored to determine whether the user interacts with the user interface, whether the user interface is cancelled, whether a portion of the user interface is skipped by the user, whether the user interface is made into a background window, or loses focus during display, or other indications of user interaction with the user interface.

[0030] The display of the user interface can determine how virtual currency is allocated to the user account. For example, each user interface available for display can be associated with a specific amount of virtual currency that can be credited to the account displaying the user interface. Depending on the display result of the user interface, a portion or all of the specific amount can be credited. For example, if the user watches 40% of a video, 40% of the available virtual currency may be credited to the user's account.

[0031] Thus, by delegating the display of the user interface to a social networking application, a security domain that restricts access to user data can be used to maintain a web-based application running within a web view. This provides a more secure computing environment, especially when those web-based applications are developed by third parties and there is no guarantee of the third party's technical skills and / or motivation to ensure the security of the user data.

[0032] Figure 1 FIG. 12 is a block diagram illustrating an example messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes a plurality of client devices 102, each client device hosting a plurality of applications including a messaging client application 104. Each messaging client application 104 is communicatively coupled via a network 106 (e.g., the Internet) to other instances of the messaging client application 104 and a messaging server system 108. As used herein, the term "client device" can refer to any machine that interfaces with a communication network (such as network 106) to obtain resources from one or more server systems or other client devices. The client device can be, but is not limited to, a mobile phone, desktop computer, laptop computer, portable digital assistant (PDA), smartphone, tablet computer, ultrabook, netbook, laptop computer, multiprocessor system, microprocessor-based or programmable consumer electronics system, gaming console, set-top box, or any other communication device that a user can use to access the network.

[0033] At Figure 1In the example shown, each messaging client application 104 can communicate with and exchange data with another messaging client application 104 and a messaging server system 108 via a network 106. The data exchanged between messaging client applications 104 and between a messaging client application 104 and the messaging server system 108 includes functionality (e.g., commands to invoke functions) and payload data (e.g., text, audio, video, or other multimedia data).

[0034] The network 106 can include an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless local area network (WLAN), a wide area network (WAN), a wireless wide area network (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a network, another type of network, or a combination of two or more of these networks or a combination therewith. For example, the network 106 or a portion of the network 106 can include a wireless or cellular network and the connection to the network 106 can be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or another type of cellular or wireless coupling. In this example, the coupling can implement any of a variety of data transfer technologies, such as single carrier radio transmission technology (1xRTT), evolved data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rate GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), worldwide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, or other technologies defined by various standards setting organizations, other remote protocols, or other data transfer technologies.

[0035] The messaging server system 108 provides server - side functionality to a particular messaging client application 104 via the network 106. Although some functions of the messaging system 100 are described herein as being performed by the messaging client application 104 or by the messaging server system 108, it should be understood that the location of some functions within the messaging client application 104 or the messaging server system 108 is a design option. For example, it may be technically preferable to initially deploy some technologies and functions within the messaging server system 108, but later migrate the technologies and functions to the messaging client application 104 when the client device 102 has sufficient processing power.

[0036] The messaging server system 108 supports various services and operations provided to the messaging client application 104. Such operations include sending data to the messaging client application 104, receiving data from it, and processing data generated by it. As an example, the data can include message content, client device information, geographical location information, media annotations and overlays, message content persistence conditions, social network information, and live event information. Data exchange within the messaging system 100 is invoked and controlled through functions available via the user interface (UI) of the messaging client application 104.

[0037] Turning now specifically to the messaging server system 108, an application programming interface (API) server 110 is coupled to an application server 112 and provides a programming interface to the application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 that stores data associated with messages processed by the application server 112.

[0038] The API server 110 receives and transmits message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the API server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client application 104 to invoke the functions of the application server 112. The API server 110 exposes various functions supported by the application server 112, including account registration; login functionality; sending a message from a particular messaging client application 104 to another messaging client application 104 via the application server 112; sending a media file (e.g., an image or video) from the messaging client application 104 to the application server 112 for possible access by another messaging client application 104; setting up a collection of media data (e.g., a story); retrieving a friend list of the user of the client device 102; retrieving these collections; retrieving messages and content; adding and deleting friends in a social graph; the location of friends in a social graph; and detection of application events (e.g., related to the messaging client application 104).

[0039] The application server 112 hosts multiple applications and subsystems, including the messaging server application 114 and the social networking system 116. The messaging server application 114 implements many message handling techniques and functions, particularly related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client application 104. As will be described in further detail, text and media content from multiple sources can be aggregated into content collections (e.g., called stories or galleries). These collections are then provided by the messaging server application 114 to the messaging client application 104. Given the hardware requirements for such processing, other processor- and memory-intensive data processing can also be performed by the messaging server application 114 on the server side.

[0040] The social networking system 116 supports various social networking functions and services and makes these functions and services available to the messaging server application 114. To this end, the social networking system 116 maintains and accesses an entity graph within the database 120. Examples of functions and services supported by the social networking system 116 include the identification of other users of the messaging system 100 with whom a particular user has a relationship or whom the user is "following", as well as the identification of other entities and the interests of a particular user.

[0041] Figure 2 is a block diagram showing further details regarding the messaging system 100 according to an exemplary embodiment. Specifically, the messaging system 100 is shown as including the messaging client application 104 and the application server 112, which in turn contain multiple subsystems, namely the user account management component 202, the virtual currency component 204, the user interface management component 206, and the third-party application management component 208.

[0042] The user account management component 202 manages the user accounts of the social networking system 116. For example, the user account management component 202 can maintain authentication credentials for each user account maintained by the social networking system 116. The user account management component 202 can also establish a session based on authentication credentials provided by the client device. Based on successful authentication, the session can provide access to resources, such as access to user data, content, or other users on the social network.

[0043] The virtual currency component 204 manages virtual currency within the social networking system. For example, the virtual currency component 204 can allocate a certain amount of virtual currency to one or more user accounts. The virtual currency component 204 can manage the currency balance within a user account. For example, when a user account performs certain operations, the virtual currency of the user account may increase or decrease, depending on the operation.

[0044] The user interface management component 206 manages the user interface presented by the messaging client application 104. In some aspects, the user interface of the messaging client application 104 can be invoked based on requests from third-party applications (such as third-party applications running in a browser). In some aspects, the browser can be bundled within the messaging client application 104, for example, as a web view. Thus, it may be necessary to manage the user interface displayed in the web view and the user interface displayed by the messaging client application 104.

[0045] The third-party application management component 208 manages third-party applications that can run as bundled applications within the browser included in the messaging client application 104. For example, the bundled applications can generate one or more function requests from the messaging client application 104. The third-party application management component 208 can service these requests and provide appropriate data for the corresponding functions of the third-party applications.

[0046] Figure 3 FIG. 300 is a schematic diagram showing data that can be stored in the database 120 of the messaging server system 108 according to certain exemplary embodiments. Although the contents of the database 120 are shown as including multiple tables, it should be understood that the data can be stored in other types of data structures (e.g., as an object-oriented database).

[0047] The database 120 includes message data stored in the message table 314. The entity table 302 stores entity data, including the entity graph 304. Entities for which records are maintained within the entity table 302 can include individuals, legal entities, organizations, objects, locations, events, etc. Regardless of type, any entity for which the messaging server system 108 stores data can be an identified entity. Each entity is provided with a unique identifier and an entity type identifier (not shown).

[0048] The entity graph 304 also stores information about the relationships and associations between entities. By way of example only, such relationships can be social, professional (e.g., working in a common company or organization), interest-based, or activity-based.

[0049] The database 120 also stores annotation data in the annotation table 312 in the form of examples of filters. The data is stored in filters within the annotation table 312 that are associated with videos (whose data is stored in the video table 310) and / or images (whose data is stored in the image table 308), and is applied to these videos and / or images. In one example, a filter is an overlay that is displayed as superimposed on an image or video during presentation to a receiving user. Filters can be of various types, including user-selected filters from a filter gallery presented to a sending user by the messaging client application 104 when the sending user is composing a message. Other types of filters include geolocation filters (also known as geo-filters), which can be presented to a sending user based on a geographical location. For example, based on geolocation information determined by the global positioning system (GPS) unit of the client device 102, a geolocation filter specific to a neighborhood or a special location can be presented by the messaging client application 104 within the user interface. Another type of filter is a data filter, which can be selectively presented to a sending user by the messaging client application 104 based on other inputs or information collected by the client device 102 during the message creation process. Examples of data filters include the current temperature at a specific location, the current speed at which the sending user is traveling, the battery life of the client device 102, or the current time.

[0050] As described above, the video table 310 stores video data, which, in one embodiment, is associated with messages whose records are maintained in the message table 314. Similarly, the image table 308 stores image data associated with messages whose message data is stored in the entity table 302. The entity table 302 can associate various annotations from the annotation table 312 with various images and videos stored in the image table 308 and the video table 310.

[0051] The story table 306 stores data about collections of messages and associated image, video, or audio data, which are compiled into collections (e.g., stories or galleries). The creation of a specific collection can be initiated by a specific user (e.g., the user for whom records are maintained in the entity table 302). A user can create a "personal story" in the form of a collection of content that the user has created and sent / broadcast. To this end, the user interface of the messaging client application 104 can include user-selectable icons to enable the sending user to add specific content to his or her personal story.

[0052] The collection can also form a "Live Story", which is a collection of content from multiple users, created manually, automatically, or using a combination of manual and automatic techniques. For example, a "Live Story" can form a curated stream of content submitted by users from different locations and events. Options to contribute content to a particular Live Story can be presented, for example, via the user interface of the messaging client application 104 to users of client devices that have location services enabled and are at a common location or event at a particular time. Based on the user's location, the messaging client application 104 can identify the Live Story to the user. The end result is a "Live Story" told from a community perspective.

[0053] Another type of content collection is called a "Location Story", which enables users of client devices 102 located within a particular geographical location (e.g., on a college or university campus) to contribute to a particular collection. In some embodiments, contributing to a Location Story may require a second level of authentication to verify that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).

[0054] Figure 4 is a block diagram showing the functional components of a third - party application management component 208 that forms part of the messaging system 100 according to some example embodiments. To avoid obscuring the subject matter of the present invention with unnecessary details, Figure 4 various functional components (e.g., modules, engines, and databases) that are not closely related to conveying an understanding of the subject matter of the present invention are omitted. However, those skilled in the art will readily recognize that the third - party application management component 208 can support various additional functional components to facilitate additional functions not specifically described herein. As shown, the third - party application management component 208 includes a web view component 402, a user data management component 404, a control component 406, and a UI display component 408.

[0055] The functional components of the third - party application management component 208 mentioned above are configured to communicate with each other (e.g., via a bus, shared memory, switch, or API). Generally speaking, these components facilitate presenting a feed of information content to a social network user based on content added or updated by the social network user's friends. In other words, the web view component 402, the user data management component 404, the control component 406, and the user interface display component 408 work together to provide user interface access to the third - party application via the messaging client component 104. By providing access via the messaging client component 104, the third - party application can display a user interface that depends on user data without exposing the user data to the third - party application itself. This improves the user privacy and security of the messaging client application 104.

[0056] The web view component 402 provides for the execution of web-based applications within the messaging client application 104. In some aspects, the web view component 402 includes an embedded browser.

[0057] The user data management component 404 provides access to user data. User data may include, for example, personal identity information (PII) about one or more users of a social network. This may include demographic information such as the user's age, gender, address, and / or indications of the user's online behavior.

[0058] The control component 406 can provide control of the user interface of the messaging client application 104 via an application running within the web view component 402. For example, a third-party application running within the web view component 402 can send a request to the control component 406 to display a user interface within the messaging client application 104. As described below, the control component 406 can arbitrate the request and, if appropriate, generate a user interface via the UI display component 408. As described below, the control component 406 can define the user interface to be displayed by the UI display component 408 based on user data accessed via the user data management component 406. For example, which UI is displayed can vary based on one or more characteristics of a particular user, such as changes in the user's demographics or based on changes in the user's content preferences.

[0059] The UI display component 408 can display a user interface based on input provided by the control component 406. For example, the UI display component can display the user interface specified by the control component 406.

[0060] As would be understood by those of skill in the relevant computer and Internet-related arts, Figure 4 each of the functional components shown can be implemented using hardware (e.g., a processor of a machine), or a combination of logic (e.g., executable software instructions) and hardware for executing the logic (e.g., a memory and a processor of a machine). For example, any component included as part of the third-party application management component 208 can physically include an arrangement of one or more processors 410 (e.g., a subset of one or more processors of a machine or a subset thereof) configured to perform the operations described herein for that component. As another example, any component of the third-party application management component 208 can include software, hardware, or both that configures an arrangement of one or more processors 410 to perform the operations described herein for that component. Thus, different components of the third-party application management component 208 can include and configure different arrangements of these processors 410 or a single arrangement of these processors 410 at different points in time.

[0061] In addition, Figure 4The various functional components depicted can reside on a single machine (e.g., a client device or a server) or can be distributed across multiple machines in various arrangements (such as a cloud-based architecture). Moreover, any two or more components described herein can be combined into a single component, and the functions described herein for a single component can be subdivided among multiple components. The following describes the functional details of these components with respect to Figure 5 to -9.

[0062] Figure 5 FIG. shows an overview of the message flow between the various components of the messaging client application 104. Figure 5 FIG. shows an application running within the web view component 402. The web view component 402 runs within a separate security domain 520b compared to the rest of the application 104 running within the security domain 520a. The security domain 520b restricts the access of the web view component 402 to data such as user data.

[0063] The web view component 402 sends a message or other signal 506 to the control component 406. The signal 506 can indicate that the web view requests to display a particular type of user interface. In some aspects, the particular type of user interface can be a particular type of advertisement. After receiving the signal 506, the control component can determine which particular user interface can satisfy the request indicated by the signal 506. The control component 406 can consult the user data managed by the user data management component 404 to determine the particular type of user interface to be displayed. Note that due to the security domain 520 of the web view 402, the web view component 402 may not have access to the user data on which the control component 406 depends.

[0064] Once the control component 406 selects the user interface, the control component 406 sends a message or other signal 510 to the UI display component 408, thereby indicating that the selected user interface should be displayed. The UI component 408 then displays the indicated user interface. The UI component 408 can also track the state of the displayed user interface. For example, if the user interface displays a video, the UI display component 408 can track the percentage of the video that the user has watched. Similarly, the UI display component 408 can track the extent to which the displayed user interface maintains the active focus during the display of the UI.

[0065] After the display of the UI selected by the control component 406 is completed, a signal 512 is sent from the UI display component 408 to the control component 406 indicating completion. The signal 512 may also include an indication of the display result. For example, as described above, one or more metrics reflecting the user's experience of the displayed user interface may be provided back by the UI display component 408 to the control component 406. The control component 406 then notifies the application running within the web view component 402 that the display of the user interface has been completed. The control component 406 may further indicate the result or status of the UI display. For example, in some aspects, the application running within the web view component may be a game application. The game application may adjust certain game features based on the type of advertisement viewed by the user playing the game and the robustness of the advertisement experience. For example, if the user interacts with the advertisement throughout the display, the game may provide the user with a first reward, such as some points or an extra game turn or life points. If the user's interaction is less robust, for example, the user cancels the advertisement before the entire message is delivered, or if the advertisement is placed in the background for a portion of the time it is being played, this may result in a different number of benefits being granted to the user by the game application.

[0066] Figure 6 An example data structure that may be maintained by one or more of the disclosed embodiments is shown. In some aspects, one or more of the data structures discussed below Figure 6 may be included in one or more databases 120. Although the data structures discussed below Figure 6 are presented as if they represent rows in a relational database table, those skilled in the art will understand Figure 6 that the data structures may be implemented using alternative techniques, such as in an unstructured data store, such as in a memory linked list, queue, record / structure, or other data storage and / or organization techniques and / or strategies.

[0067] Figure 6 A user interface table 600, a user table 620, a session table 635, and a result table 640 are shown. The user interface table 600 includes a user interface identifier 602, a type field 604, a content field 606, one or more user characteristics 608 1..n and a user interface value field 612. The user interface identifier 602 uniquely identifies the user interface. The type field 604 indicates the type of the user interface identified by the user interface identifier 602. The content field 606 includes data defining the content of the user interface. For example, if the user interface is a video, the content field 606 stores data defining the video. The user characteristic range 608 1..n defines a range of user characteristics that may qualify a user to view the content identified by the content identifier 606. For example, falling within a particular range 608 1..nThe sum of the characteristics of a specific user within a corresponding range can be used to select which content to display to the user. As an example, the range can be defined such that content 606 is suitable for users aged 40 - 45 and female. The user interface value field 612 indicates the value granted when the display of the UI identified by UI ID 602 is completed. The value field 612 can indicate the maximum value that can be granted. As described below, in some aspects, a proportionate part of the value stored in the value field 612 can be granted upon partial completion of the display of a user interface (such as a video).

[0068] The user table 620 includes a user identifier 622, authentication credentials 624, one or more user characteristics 626 1..n and a currency balance 628. The user identifier 622 uniquely identifies the user account. The authentication credentials 624 define the credentials that must be entered to establish a session linked to the user account. The user characteristics 626 1..n define one or more characteristics of the user. This may include the user's demographic information such as age, gender, address, phone number, or other demographic information. The user characteristics can also include information characterizing the user's interests. For example, multiple characteristics can be maintained to indicate the user's affinity for different subject areas such as sports, news, weather, politics, world events, human interests, etc. The currency balance 628 indicates the amount of currency associated with the user account. The user characteristics 626 1..n. can have corresponding criteria or ranges 608 in the user interface table 600 1..n .

[0069] The session table 635 stores a session identifier 636 and a user identifier 638. The session identifier 636 indicates the currently active session. A session can be established in response to a successful authentication of the user account.

[0070] The result table 640 includes a display identifier 642, a user interface identifier 644, a user identifier 646, and result statistics 648. The display identifier 642 defines the unique instance of the display of a specific user interface (identified by 644) for a specific user (identified by 646). The result statistics 648 characterize the degree of interaction of the user with the displayed user interface. For example, the result statistics 648 can indicate one or more of the following: whether the user watched the entire content, whether the user actively selected the content during the viewing time, whether the user selected a control to skip at least a part of the content, whether the user replayed the content, whether the user shared, favorited, or forwarded the content.

[0071] Figure 7A is a flowchart of a method for displaying a user interface in response to a request from an application running in a web view. Below regarding Figure 7AOne or more of the functions discussed may be performed by hardware processing circuitry. For example, instructions stored in memory may configure the hardware processing circuitry to perform the following instructions regarding Figure 7A In some aspects, one or more of the functions discussed below may be performed by the messaging client application 104.

[0072] In operation 705, a request is received from a web view application. (e.g., request 506). The request is to display a user interface that meets one or more criteria. The criteria may be indicated in the request. For example, the request may indicate the type of user interface to be displayed (e.g., 604). The request may also indicate one or more criteria for one or more features of the user interface. For example, the request may indicate that the user interface will display video, text data, image data, polls, surveys, or other types of multimedia content. In some aspects, operation 705 may be performed by a control component 406 operating within a first security domain (e.g., 520a). The control component 406 may be included in a local application that runs on top of the device's operating system. As described above, the first security domain 520a provides access to user data via the user data management module 404. The web view application from which the request is received is running in a second security domain (e.g., 520b). The second security domain does not allow the web view application to access user data.

[0073] In operation 708, user data is retrieved based on the request. Operation 708 may include reading the above Figure 6 6. As described below, the data may be read in preparation for operation 710. Option 708 may occur from within a first security domain (eg, 520a) that has access to user data (such as table 620).

[0074] In operation 710, a user interface is identified for display. The identification is based on one or more features and user data provided in the request. As described above, in some aspects, the user interface table (e.g., 600) can define multiple user interfaces, and corresponding criteria or feature ranges for users to view those user interfaces. As an example, one user interface can be configured for viewing by children (e.g., the criteria can include <15 years old), while a second user interface can be configured for viewing by adults (e.g., age>18 years old). The user data retrieved in operation 708 can be matched against the criteria defined for the user interfaces in the user interface table, and a count of matching criteria or features can be determined. The user interface with the most matching criteria or features can be selected for display. Figure 8 One example embodiment of operation 710 is described.

[0075] In operation 715, a user interface is displayed. For example, the content defining the user interface (e.g., 606) can be written to a display device.

[0076] In operation 720, user interactions with the displayed user interface are monitored to generate a display result. In various aspects, operation 720 can monitor inputs provided by the user to characterize the level of interaction of the user with the displayed user interface. Parameters that can be monitored can include whether the displayed user interface maintains focus while being displayed, whether the user cancels the displayed user interface or chooses to skip one or more portions of the user interface, whether the user minimizes the user interface, and the length of any idle period that may occur after the user interface finishes being displayed. For example, an idle period longer than a threshold can indicate that the user is not viewing the user interface and thus, when any display activity of the user interface is completed, the user does not respond to that completion. In some aspects, operation 720 can determine the percentage of the user interface that is successfully displayed and / or received by the user. For example, if the user interface includes a video, the monitoring of operation 720 can determine, for example, the total percentage of the video that is played while the window in which the video is played maintains focus. In some aspects, virtual currency credits can be allocated to a web view application and / or the user running the web view application based on the value of the displayed UI (e.g., 612). The value can be allocated proportionally based on one or more attributes of the UI display. For example, if 50% of the UI (e.g., video) is successfully displayed, then 50% of the value of the UI (e.g., 612) can be allocated to the web view application and / or the user running the web view application.

[0077] In operation 725, a response to the web view application is provided. The response can indicate one or more of the monitoring results in operation 720. In some aspects, the response can include the amount of virtual currency credited to the user as a result of the display of the user interface and the monitored user interactions.

[0078] Figure 7B is a flowchart of a method for displaying a user interface via a web view. One or more of the functions discussed below Figure 7B can be performed by a hardware processing circuit. For example, instructions stored in a memory can configure the hardware processing circuit to perform one or more of the functions discussed below Figure 7B In some aspects, one or more of the functions discussed below can be performed by the messaging client application 104. In some aspects, Figure 7B process 750 can be performed by a web view application running under a first security domain. As described above, the web view application can interact with a native application running under a second security domain. The native application accesses user data via the second security domain. The first security domain blocks access to user data. For example, the web view application cannot access user data because the first security domain blocks such access.

[0079] In operation 755, a request to display a user interface is generated. The request is generated to include one or more characteristics of the requested user interface. For example, the request may indicate the type of user interface to be displayed (e.g., as indicated by type 604). In some aspects, the request may indicate the amount of virtual currency desired or requested. For example, a web view application may seek to obtain a first quantity of virtual currency via the display of a user interface. For example, the first quantity may be based on products or features that the user of the web view application desires to purchase or has requested to purchase via the web view application.

[0080] In operation 760, the request is transmitted to a native application. For example, as discussed above with respect to Figure 5 the web view 402 may send a message 506 to the control component 406 within the security domain 520a.

[0081] In operation 765, the web view application receives a response to the request. The response indicates the result of the request. In some aspects, the response indicates, for example, the completion status of displaying the user interface. For example, if the displayed user interface includes a video, the response may indicate the percentage of the video that has been played and / or viewed.

[0082] In operation 770, features of the web view are selectively enabled or disabled based on the result indicated in the response. For example, one or more features of a game may be enabled based on the response. These features may include, for example, hit points in the game, additional weapons available to the player in the game, additional characters or costumes for use in the game, new scenes or environments for the player to navigate in the game.

[0083] Figure 8 is a flowchart of a method for identifying a user interface to be displayed. One or more of the functions discussed below Figure 8 may be performed by a hardware processing circuit. For example, instructions stored in a memory may configure the hardware processing circuit to perform one or more of the functions discussed below Figure 8 discussed. In some aspects, one or more of the functions discussed below may be performed by the messaging client application 104.

[0084] In operation 805, a first user characteristic and a first user interface are obtained. For example, each user account may be associated with multiple user characteristics. User characteristics may include the user's demographic information, such as age, gender, address, or other demographic information. User characteristics may also include metrics or statistics that characterize certain interests or behaviors of the user. Obtaining the first user interface may include identifying a record in a database for the user interface. For example, in some aspects, obtaining the first user interface may include identifying a particular row in the user interface table 600.

[0085] In operation 808, the user characteristics are compared with the corresponding criteria of the user interface. For example, as discussed above with respect to Figure 6 one or more user characteristics (e.g., 626 1..n ) can correspond to one or more criteria or ranges of criteria (e.g., 608 1.n ) for the user interface (e.g., rows in table 600).

[0086] Decision operation 810 determines whether the user characteristics match the corresponding criteria specified for the user interface. If a match is found, process 800 moves to box 815, which increments the match count for the user interface. Decision box 820 determines whether additional user characteristics should be evaluated. If so, box 825 obtains the next characteristic and then compares it with the corresponding criteria or ranges for the user interface in operation 808. If there are no more characteristics to compare for the current user interface, box 830 stores the match count for the current user interface (e.g., a row of UI table 600).

[0087] After process 800 iterates through the user interfaces, the match count for each user interface is available (via box 815). These match counts can then be evaluated to determine the best match. The best match can be based on which user interface has the highest match count. In some aspects, each characteristic can be associated with a weight, so a weighted match count is determined for each user interface. The user interface with the highest weighted match count can then be selected or identified for display. Some aspects of process 800 can also consider whether the user interface has been previously displayed to the user and / or over a period of time. If the user interface has been previously displayed, it may not be displayed again until a defined period of time has passed. Instead, another UI with a lower match count can be selected for display.

[0088] Figure 9 An example user interface structure that can be implemented in at least some of the disclosed embodiments is shown. Figure 9A web view window 905 and controls 910 are shown. In some aspects, the application can be implemented using HTML5 and displayed in the web view window 905. The application can be launched from the controls 910. The controls 910 can be implemented on the native operating system of the platform that displays the user interface 900 as a separate layer on top of the web view. The controls 910 can provide functions including: Emoji presence 915, which shows other social network members interacting with the application; Voice chat 920, which provides a voice stream by tapping the microphone in some embodiments; Text chat 925, which provides sending text messages to other members participating in the application; Nudge function 930, which sends push notifications to a selected group of users to remind them to participate in the application, and Leave application function, which exits the application and returns to the underlying chat conversation.

[0089] Figure 10 An example of two messages that can be implemented in at least some of the disclosed embodiments is shown. The first message 506 is a request message generated by the web view application. The request message indicates a request to display the user interface, as discussed above, for example, regarding Figure 5 discussed. The request message 506 includes a request id 1002, a type field 1004, and a currency field 1006. The request id 1002 is set by the web view application and identifies the request to the web view application. The type field 1004 indicates the type of user interface requested to be displayed. The currency field 1006 indicates the amount of virtual currency requested as part of the display of the user interface.

[0090] The response message 512 includes a request id field 1010, a currency field 1012, and a result indication field 1014. The request id field 1010 is set by the control component 406 to a value equivalent to the request id field 1002 of the request message 506 corresponding to the response 514. The currency field 1012 indicates the resulting currency credited to the balance of the user account (such as 628) as a result of the display of the user interface requested by the corresponding request 506 (the request that includes the same value as the request id field 1010 in the request id field 1002).

[0091] Although the above Figure 10 description describes the messages 506 and 514, in some embodiments, the web view application (e.g., running in the web view component 402) can communicate with the control component 406 using method or function calls instead of messages in some embodiments. In these embodiments, Figure 10 the fields of the messages 506 and 514 shown in can alternatively be communicated between the web view application and the control component 406 via input parameters with equivalent values. Other communication methods between components are also contemplated and are known in the art. Figure 10The example message is intended to be only an illustrative example.

[0092] Figure 11 An example user interface is shown, where one or more user interfaces may be implemented in one or more of the disclosed embodiments. Figure 11 User interfaces 1105a-c are shown. User interface 1105a includes play controls 1110a and store controls 1110b. Selection of the store controls 1110b presents user interface 1105b. User interface 1105b provides three shopping options 1115a-c. When option 1115c is selected, user interface 1105c is presented. User interface 1105c includes an "Open Now" control 1120.

[0093] Figure 12 An example user interface is shown, where one or more user interfaces may be implemented in one or more of the disclosed embodiments. Figure 12 User interfaces 1105d-e are shown. User interface 1105d may be displayed in response to selection of the Open Now control 1120, as discussed above with respect to Figure 11 User interface 1105d is configured to confirm a purchase of an item and includes a purchase button 1125. When the purchase button 1125 is selected, user interface 1105e is displayed, which confirms that the transaction was successful. If the item purchased is a digital item, such as an item that appears in an online gaming application, the user may begin using the item by selecting button 1130 shown in user interface 1105e.

[0094] Figure 13 An example user interface is shown that may be implemented in one or more of the disclosed embodiments. Figure 13 Is an example of a user interface that may be displayed by a native application when requested by a web view application. User interface 1300 shows a plurality of options that may be selected by a user. These are labeled 1305a-d. Depending on the option selected, the user may receive a variable amount of virtual or real currency after completing the task associated with the selected option.

[0095] Figure 14 An example user interface is shown that may be implemented in one or more of the disclosed embodiments. After selecting one of the options 1305a-d discussed above with respect to Figure 13 User interface 1400 may be displayed. The user may be able to initiate a task via user interface 1400 via selection of a control. In the Figure 14 example, the user is able to initiate a "Free Spin" by selecting button control 1405. Initiation of the task may determine the amount of virtual or real currency rewarded to the user after completion of the task.

[0096] Figure 15 An example user interface that can be implemented in one or more of the disclosed embodiments is shown. The user interface 1500 shows that after completing a task such as watching a video, the user can be rewarded a certain amount of virtual or real currency associated with the task. For example, if the user watches a video associated with 1000 units of virtual currency in full, they may receive the full 1000 units. If they complete 50% of the video, they may receive a proportional share of 1000 units, such as 500 units.

[0097] Software architecture

[0098] Figure 16 is a block diagram showing an example software architecture 1606 that can be used in conjunction with various hardware architectures described herein. Figure 16 is a non-limiting example of a software architecture, and it should be understood that many other architectures can be implemented to facilitate the functions described herein. The software architecture 1606 can be executed on hardware such as Figure 17 a machine 1700 that includes a processor 1704, a memory / storage 1706, and I / O components 1718, etc. A representative hardware layer 1752 is shown and can represent, for example, Figure 17 the machine 1700. The representative hardware layer 1652 includes a processing unit 1654 with associated executable instructions 1604. The executable instructions 1604 represent the executable instructions of the software architecture 1606, including the implementation of the methods, components, etc. described herein. The hardware layer 1652 also includes a memory and / or storage device 1656, which also has executable instructions 1604. The hardware layer 1652 may also include other hardware 1658.

[0099] As used herein, the term "component" may refer to a device, physical entity, or logic having boundaries defined by function or subroutine calls, branch points, APIs, and / or other technical definitions of partitioning or modularization that provide a specific processing or control function. Components can be combined with other components via their interfaces to perform machine processes. A component can be a packaged functional hardware unit designed to be used with other components, as well as a part of a program that typically performs a specific function.

[0100] A component can be a software component (e.g., code included in a machine-readable medium) or a hardware component. A "hardware component" is a tangible unit that is capable of performing certain operations and can be configured or arranged in some physical manner. In various exemplary embodiments, one or more computer systems (e.g., a stand-alone computer system, a client computer system, or a server computer system) or one or more hardware components of a computer system (e.g., a processor or a group of processors) can be configured by software (e.g., an application or a portion of an application) to operate as a hardware component that performs certain operations as described herein. A hardware component can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component can include dedicated circuitry or logic that is permanently configured to perform certain operations.

[0101] A hardware component can be a dedicated processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). A hardware component can also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware component can include software that is executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a particular machine (or a particular component of a machine) tailored to perform the configured functions and is no longer a general-purpose processor. It should be understood that the decision to implement a hardware component mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

[0102] A processor can be or include any circuit or virtual circuit (a physical circuit emulated by logic executed on an actual processor) that manipulates data values in accordance with control signals (e.g., "commands", "opcodes", "machine codes", etc.) and produces corresponding output signals for operating a machine. For example, a processor can be a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an ASIC, a radio frequency integrated circuit (RFIC), or any combination thereof. A processor can further be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously.

[0103] Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. Considering embodiments where a hardware component is temporarily configured (e.g., programmed), each hardware component need not be configured or instantiated at any one instance of time. For example, in the case where a hardware component includes a general-purpose processor that is configured by software to be a dedicated processor, the general-purpose processor can be configured to be different dedicated processors (e.g., including different hardware components) at different times. Software accordingly configures one or more particular processors, e.g., to constitute a particular hardware component at one instance of time and different hardware components at different instances of time. A hardware component can provide information to and receive information from other hardware components. Thus, the described hardware components can be considered to be communicatively coupled. In the case where multiple hardware components are present simultaneously, communication can be achieved through signal transmission between two or more hardware components (e.g., via appropriate circuitry and buses). In embodiments where multiple hardware components are configured or instantiated at different times, communication between these hardware components can be achieved, for example, by storing and retrieving information in a memory structure accessible to the multiple hardware components.

[0104] For example, one hardware component can perform an operation and store the output of that operation in a memory device communicatively coupled to it. Then, another hardware component can access the storage device at a later time to retrieve and process the stored output. A hardware component can also initiate communication with an input or output device and can operate on resources (e.g., a collection of information). The various operations of the example methods described herein can be performed at least in part by one or more processors temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more of the operations or functions described herein. As used herein, "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be implemented at least in part by processors, where one or more particular processors are examples of hardware. For example, at least some of the operations of a method can be performed by one or more processors or processor-implemented components.

[0105] In addition, one or more processors may also be operable to support the performance of relevant operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some operations may be performed by a group of computers (as an example of a machine including a processor), and these operations may be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The performance of certain operations may be distributed among processors, not only residing within a single machine but also deployed across multiple machines. In some exemplary embodiments, the processor or processor-implemented components may be located in a single geographical location (e.g., within a home environment, an office environment, or a server farm). In other exemplary embodiments, the processor or processor-implemented components may be distributed across multiple geographical locations.

[0106] In Figure 16 the exemplary architecture, the software architecture 1606 may be conceptualized as a layer stack, where each layer provides a specific function. For example, the software architecture 1606 may include layers such as an operating system 1602, libraries 1620, framework / middleware 1618, applications 1616, and a presentation layer 1614. In operation, the applications 1616 and / or other components within the layer may make API calls 1608 through the software stack and receive responses as messages 1610. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile or dedicated operating systems may not provide the framework / middleware 1618 layer, while other operating systems may provide such a layer. Other software architectures may include additional or different layers.

[0107] The operating system 1602 may manage hardware resources and provide common services. The operating system 1602 may include, for example, a kernel 1622, services 1624, and drivers 1626. The kernel 1622 may act as an abstraction layer between the hardware and other software layers. For example, the kernel 1622 may be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. The services 1624 may provide other common services for other software layers. The drivers 1626 are responsible for controlling or interfacing with the underlying hardware. For example, depending on the hardware configuration, the drivers 1626 include a display driver, a camera driver, a driver, a flash driver, a serial communication driver (e.g., a Universal Serial Bus (USB) driver), a driver, an audio driver, a power management driver, and so on.

[0108] Library 1620 provides a common infrastructure used by application 1616 and / or other components and / or layers. The functions provided by library 1620 allow other software components to perform tasks in a manner that is easier than directly interfacing with the functions of the underlying operating system 1602 (e.g., kernel 1622, services 1624, and / or drivers 1626). Library 1620 may include system libraries 1644 (e.g., C standard library), which may provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, library 1620 may include API libraries 1646, such as media libraries (e.g., libraries that support the rendering and manipulation of various media formats, such as MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG), graphics libraries (e.g., OpenGL framework that can be used to render 2D and 3D graphical content on a display), database libraries (e.g., SQLite that can provide various relational database functions), web libraries (e.g., WebKit that can provide web browsing functions), and so on. Library 1620 may also include a variety of other libraries 1648 to provide many other APIs to application 1616 and other software components / modules.

[0109] Framework / middleware 1618 provides a higher-level common infrastructure that can be used by application 1616 and / or other software components / modules. For example, framework / middleware 1618 may provide various graphical user interface (GUI) functions, advanced resource management, advanced location services, etc. Framework / middleware 1618 may provide a wide range of other APIs that can be used by application 1616 and / or other software components / modules, some of which may be specific to a particular operating system 1602 or platform.

[0110] Application 1616 includes built-in applications 1638 and / or third-party applications 1640. Examples of representative built-in applications 1638 may include, but are not limited to, contact applications, browser applications, book reader applications, location applications, media applications, messaging applications, and / or game applications. Third-party applications 1640 may include applications developed using the ANDROID TM or IOS TM software development kit (SDK), and may be mobile software running on a mobile operating system such as IOS TM , ANDROID TM , Phone or other mobile operating systems. Third-party applications 1640 may call API calls 1608 provided by the mobile operating system (such as operating system 1602) to facilitate the functions described herein.

[0111] Application 1616 can use built-in operating system functions (e.g., kernel 1622, services 1624, and / or drivers 1626), libraries 1620, and frameworks / middleware 1618 to create a user interface for interacting with system users. Alternatively or additionally, in some systems, interaction with the user can occur through a presentation layer (such as presentation layer 1614). In these systems, the application / component "logic" can be separated from the various aspects of the application / component that interact with the user.

[0112] Exemplary Machine

[0113] Figure 17 is a block diagram showing components (also referred to herein as "modules") of a machine 1700 capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methods discussed herein. Specifically, Figure 17 illustrates a pictorial representation of an example form of a computer system, machine 1700, in which instructions 1710 (e.g., software, program, application, applet, app, or other executable code) can be executed to cause the machine 1700 to perform any one or more of the methods discussed herein. Thus, the instructions 1710 can be used to implement the modules or components described herein. The instructions 1710 transform the general, unprogrammed machine 1700 into a particular machine 1700 programmed to perform the described and shown functions in the described manner. In an alternative embodiment, the machine 1700 operates as a stand-alone device or can be communicatively coupled (e.g., networked) to other machines. In a networked deployment, the machine 1700 can operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1700 can include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smartphone, a mobile device, a wearable device (e.g., a smartwatch), a smart home device (e.g., a smart appliance), other smart devices, a web device, a network router, a network switch, a bridge, or any machine capable of executing the instructions 1710, which specify actions to be taken by the machine 1700. Further, although only a single machine 1700 is shown, the term "machine" shall also be taken to include a collection of machines that individually or jointly execute the instructions 1710 to perform any one or more of the methods discussed herein.

[0114] Machine 1700 may include a processor 1704, a memory / storage 1706, and I / O components 1718, which may be configured to communicate with each other, such as via a bus 1702. The memory / storage 1706 may include a memory 1714, such as a main memory or other memory storage, and a storage unit 1716, both of which may be accessed by the processor 1704, such as via the bus 1702. The storage unit 1716 and the memory 1714 store instructions 1710 that implement any one or more of the methods or functions described herein. The instructions 1710 may also reside, at least partially, within the memory 1714, within the storage unit 1716, within at least one of the processors 1704 (e.g., within a cache of the processor), or within any suitable combination thereof during execution by the machine 1700. Accordingly, the memory 1714, the storage unit 1716, and the memory of the processor 1704 are examples of machine-readable media.

[0115] As used herein, the terms "machine-readable medium," "computer-readable medium," etc. may refer to any component, device, or other tangible medium capable of temporarily or permanently storing instructions and data. Examples of such media may include, but are not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of storage (e.g., electrically erasable programmable read-only memory (EEPROM)), and / or any suitable combination thereof. The term "machine-readable medium" should be considered to include a single medium or multiple media capable of storing instructions (e.g., a centralized or distributed database or associated cache and servers). The term "machine-readable medium" may also be considered to include any medium or combination of media capable of storing instructions (e.g., code) executable by a machine such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methods described herein. Accordingly, "machine-readable medium" may refer to a single storage device or apparatus, as well as a cloud-based storage system or storage network including multiple storage devices or apparatuses. The term "machine-readable medium" does not include the signal itself.

[0116] The I / O components 1718 may include a variety of components to provide a user interface for receiving input, providing output, generating output, transmitting information, exchanging information, capturing measurements, etc. The specific I / O components 1718 included in the user interface of a particular machine 1700 will depend on the type of the machine. For example, a portable machine, such as a mobile phone, will likely include a touch input device or other such input mechanism, while a headless server machine will likely not include such a touch input device. It should be understood that the I / O components 1718 may include Figure 17Many other components not shown. The grouping of I / O components 1718 by function is for simplicity of the following discussion only and the grouping is in no way restrictive. In various exemplary embodiments, I / O components 1718 may include output components 1726 and input components 1728. Output components 1726 may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibration motor, a resistance mechanism), other signal generators, etc. Input components 1728 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), haptic input components (e.g., physical buttons, a touch screen that provides location and / or touch force or touch gestures, or other haptic input components), audio input components (e.g., a microphone), etc. Input components 1728 may also include one or more image capture devices such as a digital camera for generating digital images and / or videos.

[0117] In further exemplary embodiments, I / O components 1718 may include biometric components 1730, motion components 1734, environmental components 1736, or location components 1738, as well as numerous other components. For example, biometric components 1730 may include components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biometric signals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying a person (e.g., voice identification, retina identification, face identification, fingerprint identification, or electroencephalogram-based identification), etc. Motion components 1734 may include acceleration sensor components (e.g., an accelerometer), gravity sensor components, rotational sensor components (e.g., a gyroscope), and so on. Environmental components 1736 may include, for example, illuminance sensor components (e.g., a photometer), temperature sensor components (e.g., one or more thermometers for detecting ambient temperature), humidity sensor components, pressure sensor components (e.g., a barometer), acoustic sensor components (e.g., one or more microphones for detecting background noise), proximity sensor components (e.g., an infrared sensor for detecting nearby objects), gas sensors (e.g., a gas detection sensor for detecting the concentration of a hazardous gas to ensure safety or measuring pollutants in the atmosphere), or other components that can provide an indication, measurement, or signal corresponding to the surrounding physical environment. Location components 1738 may include positioning sensor components (e.g., a GPS receiver component), altitude sensor components (e.g., an altimeter or barometer for detecting the air pressure from which altitude can be derived), orientation sensor components (e.g., a magnetometer), and so on.

[0118] A variety of techniques can be used to implement communication. The I / O component 1718 can include a communication component 1740 that is operable to couple the machine 1700 to the network 1732 or the device 1720 via the couplings 1724 and 1722, respectively. For example, the communication component 1740 can include a network interface component or other suitable means to interface with the network 1732. In a further example, the communication component 1740 can include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, components (e.g., low power ) components and other communication components to provide communication in other ways. The device 1720 can be any other machine or a variety of peripheral devices (e.g., peripheral devices coupled via USB).

[0119] In addition, the communication component 1740 can detect identifiers or include components operable to detect identifiers. For example, the communication component 1740 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF4111, Ultra Code, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying the audio signal of a marker). In addition, various information can be derived via the communication component 1740, such as location derived via Internet Protocol (IP) geolocation, location derived via signal triangulation, location via detecting NFC beacon signals that can indicate a specific location, and so on.

[0120] If phrases similar to "at least one of A, B, or C", "at least one of A, B, and C", "one or more of A, B, or C", or "one or more of A, B, and C" are used, the phrase is intended to be interpreted as meaning that A can exist alone in an embodiment, B can exist alone in an embodiment, C can exist alone in an embodiment, or any combination of elements A, B, and C can exist in a single embodiment; for example, A and B, A and C, B and C, or A and B and C can exist.

[0121] Without departing from the scope of the present disclosure, changes and modifications can be made to the disclosed embodiments. These and other changes or modifications are intended to be included within the scope of the present disclosure as expressed in the appended claims.

Claims

1. A method for third-party application management, comprising: Launching a web-based application within a web view that executes the web-based application within a first security domain of a messaging client application hosted by a client device; Receiving, within a second security domain of the messaging client application hosted by the client device, a request from the web-based application to display a user interface, the request indicating one or more criteria for the requested user interface, the one or more criteria including a type of multimedia content; Retrieving user data via the second security domain based on the request, wherein the user data is not accessible from the first security domain; Identifying, within the second security domain, the user interface to be displayed based on the one or more criteria and the user data; Displaying the identified user interface within a session of a user account; Monitoring user interaction with the displayed user interface to generate a display result; and Generating a response to the web-based application, the response indicating at least one of the monitored display results.

2. The method according to claim 1, wherein Identifying the user interface to be displayed includes: Determining a first set of user interfaces that meet the one or more criteria indicated in the request; and Comparing user characteristics of the user account with criteria associated with each user interface in the first set of user interfaces to determine a best-matching user interface for the user among the first set of user interfaces.

3. The method according to claim 2, wherein Comparing the user's characteristics with the criteria associated with each user interface in the first set of user interfaces includes: comparing a first user characteristic with a first criterion of a first user interface and comparing the first user characteristic with a second criterion of a second user interface, and determining a matching score for the first user interface and the second user interface based on the comparison, wherein the identification of the user interface is based on the matching score.

4. The method according to claim 1, wherein The web view executes HTML 5 instructions to implement the web-based application.

5. The method according to claim 1, wherein The displayed user interface plays a video, and the monitoring determines one or more of the following: whether the video is watched in its entirety, whether one or more portions of the video are skipped based on user input, and whether the user interface is cancelled.

6. The method according to claim 1, wherein The monitoring determines whether the displayed user interface maintains continuous focus while being displayed, and the response is generated to indicate the determination.

7. The method according to claim 1, wherein The identified user interface is associated with a virtual currency value, and the response is generated to indicate a portion of the virtual currency value that has been credited to the virtual currency balance of the user account as a result of the display of the user interface.

8. The method according to claim 7, further comprising determining the portion based on the monitoring.

9. A system for third-party application management, comprising: A hardware processing circuit; And A hardware memory storing instructions that, when executed, configure the hardware processing circuit to perform operations including the following: Launch a web-based application within a web view that executes the web-based application within a first security domain of a messaging client application hosted by a client device; Within a second security domain of the messaging client application hosted by the client device, receive a request from the web-based application to display a user interface, the request indicating one or more criteria for the requested user interface, the one or more criteria including a type of multimedia content; Retrieve user data via the second security domain based on the request, wherein the user data is not accessible from the first security domain; Within the second security domain, identify the user interface to be displayed based on the one or more criteria and the user data; Display the identified user interface within a session of the user account; Monitor user interaction with the displayed user interface to generate a display result; and Generate a response to the web-based application that indicates at least one display result of the monitoring.

10. The system according to claim 9, wherein, Identifying the user interface to be displayed includes: Determining a first set of user interfaces that meet the one or more criteria indicated in the request; and Comparing user characteristics of the user account with criteria associated with each user interface in the first set of user interfaces to determine a best-matching user interface for the user among the first set of user interfaces.

11. The system according to claim 10, wherein, Comparing the user's characteristics with the criteria associated with each user interface in the first set of user interfaces includes: comparing a first user characteristic with a first criterion of a first user interface and comparing the first user characteristic with a second criterion of a second user interface, and determining a match score for the first user interface and the second user interface based on the comparison, wherein the identification of the user interface is based on the match score.

12. The system according to claim 9, wherein, The web view executes HTML 5 instructions to implement the web-based application.

13. The system according to claim 9, wherein The displayed user interface plays a video, and the monitoring determines one or more of the following: whether the video is watched in its entirety, whether one or more portions of the video are skipped based on user input, and whether the user interface is cancelled.

14. The system according to claim 9, wherein The monitoring determines whether the displayed user interface maintains continuous focus while being displayed, and the response is generated to indicate the determination.

15. The system according to claim 9, wherein, The identified user interface is associated with a virtual currency value, and the response is generated to indicate a portion of the virtual currency value that has been credited to a virtual currency balance of the user account as a result of the display of the user interface.

16. The system of claim 15, the operation further comprising determining the portion based on the monitoring.

17. A non-transitory computer-readable storage medium comprising instructions that, when executed, configure a hardware processing circuit to perform operations including: Launch a web-based application within a web view that executes the web-based application within a first security domain of a messaging client application hosted by a client device; Within a second security domain of the messaging client application hosted by the client device, receive a request to display a user interface from the web-based application, the request indicating one or more criteria for the requested user interface, the one or more criteria including the type of multimedia content; Retrieve user data via the second security domain based on the request, wherein the user data is not accessible from the first security domain; Within the second security domain, identify the user interface to be displayed based on the one or more criteria and the user data; Display the identified user interface in a session of the user account; Monitor user interaction with the displayed user interface to generate a display result; and Generate a response to the web-based application, the response indicating at least one of the monitored display results.

18. The non-transitory computer-readable storage medium according to claim 17, wherein, Identifying the user interface to be displayed includes: Determining a first set of user interfaces that meet the one or more criteria indicated in the request; and Comparing the user characteristics of the user account with the criteria associated with each user interface in the first set of user interfaces to determine the best matching user interface for the user among the first set of user interfaces.

19. The non-transitory computer-readable storage medium according to claim 18, wherein, Comparing the characteristics of the user with the criteria associated with each user interface in the first set of user interfaces includes: comparing a first user characteristic with a first criterion of a first user interface, and comparing the first user characteristic with a second criterion of a second user interface, and determining a matching score for the first user interface and the second user interface based on the comparison, wherein the identification of the user interface is based on the matching score.

20. The non-transitory computer-readable storage medium according to claim 17, wherein, The web view executes HTML 5 instructions to implement the web-based application.

Citation Information

Patent Citations

  • Information pushing method and device

    CN106649446A

  • Third-party-secured zones on web pages

    US20090100505A1