Dynamically configurable client application activities
By selecting and configuring digital components and their properties on the server side, generating configuration files and sending them to the client device, the problem of hard-coded actions in the prior art is solved, dynamic and flexible client application behavior configuration is realized, and the response ability and flexibility of client devices are improved.
Patent Information
- Application Number
- CN202310293196.7
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-09-09
- Filing Date
- 2020-06-19
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2040-06-19
AI Technical Summary
In the prior art, actions of client device applications are usually hard-coded, making it difficult to change actions taken by a particular application in response to user interaction, and updating the application version requires a lot of testing, which can easily lead to unexpected errors.
By selecting the digital components and their properties to be presented on the client device on the server side, and selecting configuration files based on these attributes, sending a payload to the client device, including information and configuration files for the digital components, the client device allows the client device to perform the set of operations specified by the configuration file.
It realizes the introduction of new actions and support of new content formats without increasing the amount of client-side logic and no need to release an updated version of the application, which improves the client device's ability to respond to content format interaction and provide feedback to the server.
Smart Images

Figure CN116483228B_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application with application date of June 19, 2020, application number 202080046480.9, and invention name “Dynamically Configurable Client Application Activities”. Technical Field
[0002] The present application relates to dynamic configuration of actions performed by a client application, such as a mobile application or a tablet application. Background Art
[0003] Users of client devices (e.g., cell phones, tablet devices, laptop computers) typically use applications to interact with and access various types of content. For example, users can use applications to access email, interact with social media, play games, obtain maps, shop online, and play media content. Applications running on client devices can display various content, including interactive content, to users of mobile devices running the applications. These applications interact with one or more servers to report client-side activities, such as user interactions with applications. Summary of the invention
[0004] In general, an innovative aspect of the subject matter described in this specification can be embodied in a computer-implemented method, the method comprising the following operations: selecting, by one or more servers, a digital component to be presented in an application executed at a client device; obtaining, by one or more servers, properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported; after selecting the digital component and obtaining the properties of the digital component, selecting, by one or more servers, a configuration ("config") file based on the obtained properties, wherein the configuration file specifies a set of operations to be performed by a client device that presents the digital component in response to a user interaction with the digital component; and sending a payload to the client device, wherein the payload includes information specifying the digital component to be presented in the application and the configuration file, the configuration file, when executed by the client device, causing the client device to perform the set of operations specified by the configuration file. Other embodiments of this aspect include corresponding systems, devices, apparatuses, computer programs, and computer program products configured to perform the actions of the method. The computer program (e.g., instructions) can be encoded on a computer storage device. These and other embodiments can each optionally include one or more of the following features.
[0005] In some implementations, the method further includes receiving, by a server at a reporting network location, a configuration report packet, wherein the configuration report packet (i) is generated by a client device in response to execution of a configuration file and (ii) specifies interaction with a digital component at the client device.
[0006] In some implementations, the method further includes: after sending the payload to the client device, selecting a digital component to be presented in the application for a second time; based on a different profile being mapped to properties of the digital component instead of the profile sent in the payload, selecting the different profile for a second time, wherein the different profile specifies a different set of operations than the profile sent in the payload; and when the properties of the digital component are mapped to the different profile, based on the selection of the digital component, sending to the client device a different payload including information specifying the digital component and the different profile instead of the profile.
[0007] In some implementations, the different set of operations includes additional operations that cause the client device to perform actions that the configuration file does not cause the client device to perform.
[0008] In some implementations, the additional operations cause the client device to collect visual element interaction data that is not collected by the set of operations for the profile, wherein the visual element interaction data is collected in response to user interactions with visual elements of the application that are not part of a digital component presented in the application.
[0009] In some implementations, the set of operations includes: a first operation performed by the client device in response to a first type of interaction with the digital component; and a second operation performed by the client device in response to a second type of interaction with the digital component.
[0010] In some implementations, a first operation causes the client device to report presentation of a digital component in response to a first interaction with a first view of the digital component that was presented prior to interaction with the digital component within an application; and, a second operation causes the client device to report a second interaction with a second view of the digital component that was presented after the first interaction with the first view of the digital component.
[0011] In some implementations, selecting a configuration file that specifies a set of operations to be performed by a client device that presents a digital component includes: analyzing the obtained properties to determine a specific format of the digital component; determining a version of an application being run by the client device; and selecting a specific configuration file from a plurality of different configuration files that defines a combination of the specific format of the digital component and the version of the application.
[0012] Typically, the actions taken by an application in response to user interactions with a component of the application (e.g., a user interface component) (which can be referred to as event reporting) are performed by sending a URL or calling a specific predefined application programming interface (API) within the mobile application. For example, event reporting can be configured as a mapping of user actions to reported events (e.g., data transfers or other client device activities). However, in conventional systems, the actions taken by an application (or client device) are typically hard-coded in the application itself, which makes it difficult to change the actions taken by a particular application in response to user interactions with an application or a component presented in the application (e.g., content presented in a slot of an application display). For example, changing the actions taken by an application typically requires publishing an updated version of the application, in which the mapping of user interactions to actions taken by the application is updated. Publishing updated versions of applications requires a lot of testing and, once published on a wide range, can lead to unexpected errors. In addition, even if an updated version of the application is released, users may not perform the updates required to implement the changes and / or their client devices may be older versions that are not supported in the updated version of the application. Therefore, even changing the hard coding of the application itself may not be enough to change the operation of the application when the application has been installed on the client device.
[0013] The subject matter described in this specification may have one or more of the following technical advantages. The subject matter described in this specification can be implemented to allow the introduction of new actions to be performed by an application or client device and / or support new content formats (e.g., one click, charging for external clicks, etc.), without substantially increasing the amount of logic required on the client side, and without the need to publish an updated version of the application. For example, the technology discussed in this document enables these changes to be made at a server where a configuration file is downloaded to a client device when a request from an application is received. In some implementations, the configuration is part of the response metadata rather than a file. It is referred to as a configuration file in this article, but in all instances, it can be part of a configuration file or a response metadata. As discussed in more detail below, a configuration file can define the actions taken by an application or client device in response to a specified user interaction with a specific user interface element, and enables the application to perform the defined actions. Because the configuration file is generated at the server and preferably provided to each client device as needed, the activities defined in the configuration file can be changed frequently as needed or desired, and can be changed on a per-device or per-user basis, thereby providing greater flexibility in controlling the application environment. As more content formats are introduced, embodiments of the subject matter described in this specification improve the ability of client devices to react to user interactions with content formats and to provide feedback to servers, which is an improvement over current reporting frameworks.
[0014] By merging client instructions into a single configuration file, client-side event reporting can be unified and complexity in client devices can be reduced. Reporting actions can be configured in the server at service time to improve efficiency. The amount of lag time associated with client code changes reaching the product can be reduced. Errors encountered when updating a client application to a new version can be more easily and quickly identified and fixed because there is no need to wait for the user to download the new version of the application. In summary, the present invention provides a dynamic, flexible and efficient method that defines actions taken by an application or client device in response to user interactions with a digital component while reducing complexity at the client device. The method is also fast and robust, avoiding lag time and errors associated with updating applications.
[0015] More specifically, the present disclosure relates to a method, comprising: selecting, by one or more servers, a digital component to be presented in an application running at a client device; obtaining, by one or more servers, properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported; selecting, by one or more servers based on the obtained properties, a configuration file specifying a set of operations to be performed in parallel by a client device presenting the digital component; and sending a payload to the client device, the payload including information specifying the digital component to be presented in the application and the configuration file, the configuration file causing the client device to perform in parallel the set of operations specified by the configuration file when run by the client device.
[0016] The details of one or more embodiments of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, drawings, and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Figure 1 is a conceptual diagram of a system for triggering client-side activities in response to user interactions with a digital component on a mobile device.
[0018] Figure 2 is a block diagram of an example environment for triggering client-side activities in response to user interactions with digital components in an application.
[0019] Figure 3 is a flow chart of a method for providing a configuration file with a set of operations that trigger client-side activities.
[0020] Figure 4 is a flow diagram of a first example process for triggering a client-side activity in response to a user interaction with a digital component in an application.
[0021] Figure 5 is a flow diagram of a second example process for triggering a client-side activity in response to a user interaction with a digital component in an application.
[0022] Figure 6 Examples of computing devices and mobile computing devices that can be used to implement the techniques described herein are shown. DETAILED DESCRIPTION
[0023] In general, this document describes a mechanism for triggering client-side activities in response to user interactions with digital components in applications on client devices. In some implementations, a client device communicates with one or more servers to receive instructions specifying a set of one or more operations corresponding to the interaction of a user with a digital component. In particular, a server can provide content for display on a client device, including data that causes the digital component to be displayed and a configuration file associated with the digital component. When a user interacts with a digital component displayed in an application on a client device, the client device runs a configuration file, which causes the client device to perform a specific action according to the configuration file. In particular, the configuration file can cause an application on a client device to send data for reporting user interactions with the digital component to the server, and / or perform one or more other actions in response to user interactions. Furthermore, a server can perform multiple response actions, such as reporting user interactions to another server. In this way, it is possible to provide explicit instructions to a client device to specify an action to be performed as a result of a user action or interaction with a digital component in an application running on a client device.
[0024] The use of unified configuration files allows content providers to support different types of content formats, change the actions performed by client devices in response to interactions with different types of content formats, and reduce the lag time for format changes and / or client action changes to reach a product. Hard-coded logic in client devices is often not flexible enough to support new use cases, requiring changes to logic in applications on the client devices. By providing client devices with configuration files generated at a server rather than hard-coding such files at the client devices, applications running on the client devices do not need to be updated to address new content types because the server-generated configuration files can provide the applications with the data needed to support the new content types.
[0025] The reporting of each content format can be decomposed into a combination of basic content actions (eg, checking a URL, reporting content-related events to a content provider, etc.) A system is described herein where the combination of actions for each user action is configured by a proto on a content server.
[0026] Figure 1 A conceptual diagram of a system 100 for triggering client-side activities in response to user interactions with a digital component on a mobile device is shown. Figure 1 A user 102 of a client device 104 is shown using an application 118 running on the client device 104. The server 110 sends data 112, also referred to as a payload, including a digital component (e.g., a star) 106 or information specifying the digital component 106 and a configuration file 114 corresponding to the digital component 106. In some implementations, the server 110 provides the payload 112 in response to a request 108 from the client device 104. The configuration file 114 includes data that, when executed by the client device 104, causes the client device 104 to perform a set of operations specified by the configuration file 114.
[0027] After the server 110 provides the payload 112 to the client device 104, the client device 104 displays content associated with the received data 112 on a display of the device 104—for example, in an application 118 running on the device 104. Figure 1 , the client 104 is displaying a “star” digital component 106 provided by the server 110. When the user 102 interacts with the “star” digital component 106 on the client device 104, for example by clicking or touching his or her finger to the “star” digital component 106, the application 118 sends a configuration report packet 116 to the server 110, wherein the packet 116 provides the server 110 with an indication of the user interaction with the “star” digital component 106. The configuration report packet 116 may include data such as a report URL or an API that calls the report URL.
[0028] exist Figure 1In the example shown, the application 118 running on the client device 104 shows a plurality of different digital components 106, including a square, a circle, and a heart, in addition to the "star" 106. Each digital component 106 can be associated with a different configuration file 114 sent by the server 110, each configuration file 114 including a corresponding set of operations associated with a particular digital component 106. For example, the "star" component 106 can be associated with causing a particular video to be provided and played on the client device. Alternatively, the digital component 106 can cause one of many actions to be performed, such as opening a website associated with a particular URL, reporting to a particular content provider that a user has interacted with a particular digital content, causing a particular image to be displayed on the client device 104, etc. In some implementations, the client device 104 is capable of independently supporting certain actions, such as opening a URL or installing an application 118 on the client device 104. For other actions, the application 118 on the client device 104 provides instructions to the server 110, which facilitates the implementation of those actions, including the reporting action.
[0029] In some implementations, the server 110 may receive reports of the user interactions 116 and further report the user interactions to another server (not shown). In some implementations, the application 118 on the client device 104 sends the reports 116 to more than one server. Then, one or more servers may call an application programming interface (API) to record the user interactions.
[0030] In some implementations, the system allows for more granularity in distinguishing actions by adding additional action identifiers. For example, different action configurations can be provided for different links in an HTML document. For example, you can introduce bridge to support passing additional data from a link to a user interface of the client. This approach provides several advantages. For example, if the user's action is to click on a URL, it avoids the necessity of logic in the server for parsing the clicked URL to determine the appropriate client response for the clicked URL, but allows the server to provide an appropriate client response on a per-URL basis. In addition, it allows various types of user actions, including interactions with different types of digital components (e.g., buttons displayed as overlays on a video), to be logged. In addition, it can be used to support formats that previously required native formats. The native format is also compatible with the configuration.
[0031] The following table shows sample html code that provides a link to the user:
[0032]
[0033] In the example on the left hand side of the table above (representing a known method), when a user clicks on a particular link, the application displaying the link may cause a phone number to be dialed or cause the application to load a website associated with the particular URL. Both the logic for parsing the URL and determining the action that should be performed and the action itself must be hard-coded in the application. However, in the example on the right hand side of the table above representing an example of the present invention, when a user clicks on a particular link, the client device invokes multiple actions provided in a configuration file associated with the particular link, including but not necessarily limited to invoking a primitive action (e.g., opening a URL, logging visual element events, calling a phone number, logging events). The configuration file may invoke any number of actions, including recording statistics for flashes or clicks in the application, or charging advertisers for flashes or clicks. The configuration file is generated on the server side rather than the client side, and is not hard-coded in the application, so that actions triggered in response to client-side interactions with digital components can be easily adjusted without requiring client software updates. As described above, this provides a technical advantage of a fast and robust method of defining actions taken by an application or client device in response to user interactions with a digital component, thereby avoiding lag time and errors associated with updating applications.
[0034] Figure 2 A block diagram of an example system 200 for triggering client-side activities in response to user interactions with digital components in an application is shown. The system 200 includes one or more client devices 204, which can be mobile devices such as smart phones, personal digital assistants, desktop devices, laptop devices, personal computers, etc. The system 200 also includes one or more content servers 210 that communicate with the client devices 204 and send content to the client devices 204. The client devices 204 and the content servers 210 communicate in the system 200 via a network 214 (such as a local area network (LAN), a wide area network (WAN), the Internet, or a combination thereof). The client device 204 or the server 210 can be a computing device, such as Figure 6 shown and discussed in more detail below.
[0035] Figure 3 A flow chart of a method 300 for providing a configuration file having a set of operations that trigger client-side activities to a client device is shown.
[0036] In 310, the server selects a digital component to be presented in a client application executed at a client device. The server may select the digital component, for example, in response to a request for content from a client device. The digital component may be presented in different forms depending on a number of factors, including the type of client device on which the digital component will be presented, the capabilities of the client device (e.g., calling capabilities, video chat capabilities, etc.), the applications installed on the client device, the applications in which the digital component will be presented, and / or the type of content depicted by the digital component (e.g., text, images, audio, or video). The digital component may be sent to the client device in a push or pull manner, wherein a push digital component is provided independent of an explicit request from the client device, and a pull digital component is provided in response to an explicit request from the client device.
[0037] In 320, the server obtains properties of the digital component, including at least one or more of a destination network location to which the digital component redirects the user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported. The digital component can include, for example, text, video, audio, image data, or a combination thereof. The properties can include a type of client device on which the digital component will be presented, capabilities of the client device, applications installed on the client device, applications in which the digital component will be presented, and / or a type of content depicted by the digital component. Properties of the digital component that are specifically related to a client device or application that will present the digital component (e.g., a type of client device, capabilities of the client device, applications installed on the client device, and applications that will present the digital component) can be passed from the client device to the server, for example, in a request for content.
[0038] In 330, after selecting the digital component and obtaining the properties of the digital component, the server selects a configuration file based on the obtained properties, the configuration file specifying a set of operations to be performed by the client device presenting the digital component. In some implementations, the configuration file can specify different operations to be performed serially and / or in parallel by the client device in response to user interaction with the digital component within the application. For example, different network calls initiated by the client device can be performed in parallel. In a specific example, the reporting server can be contacted while the client device is also being directed to a destination page linked to by the digital component. This method reduces latency in systems and methods that use hard-coded sequential calls.
[0039] At 340, the server sends a payload to the client device. The payload includes information specifying the digital component to be presented in the application and a configuration file. The configuration file includes data that, when executed by the client device, causes the client device to perform a set of operations specified by the configuration file. In some implementations, the information specifying the digital component to be presented in the application may include, for example, data containing the digital component itself (e.g., an image file). In some implementations, the information specifying the digital component to be presented in the application includes a pointer or link to the digital component.
[0040] At 350, the server may receive a configuration report packet generated by a client application running on a client device. Typically, the configuration report packet is sent by the client application running on the client device in response to a user interaction with the digital component and specifies the interaction with the digital component at the client device. The user interaction with the digital component may include, for example, a user clicking on the digital component or touching a finger to a touch screen on the digital component.
[0041] In some implementations, a profile associated with (e.g., assigned to) a digital component can be changed at the server. When the profile assigned to the digital component changes so that a different second profile is assigned to the digital component, the server will select and send the different second profile with the digital component in response to a subsequent request for content.
[0042] In these implementations, the method 300 can include further actions taken by the server. For example, after the server sends the first payload data including the first profile previously assigned to the digital component, the server can select the same digital component to be presented in the application for a second time (e.g., in response to a request from a client device). When selecting the digital component for the second time, the server can select a different second profile based on the mapping of a different profile to the properties of the digital component (e.g., at the time of the request), the second profile specifies a different set of operations than the first profile previously sent in the first payload. That is, instead of selecting the first profile, when selecting the digital component for the second time, the server selects a different second profile based on the updated mapping of the different second profile to the properties of the digital component. Then, based on the selection of the digital component, the server sends to the client device a different second payload including information specifying the digital component and a different second profile instead of the first profile. While the properties of the digital component are mapped to the different second profile, the server will continue to select a different second profile to send with the digital component. The different set of operations can include one or more additional operations, the one or more additional operations causing the client device to perform actions that the first profile did not cause the client device to perform. The different set of operations can also include fewer operations than the original first profile. Thus, the server is able to dynamically adjust the configuration file associated with the digital component without requiring modification on the client device.
[0043] In this way, different content formats can be presented by the server using configuration files that are modified or adapted to specific content formats. In some implementations, one or more additional servers may be used to support new features or data collection associated with specific content formats. In fact, one of the benefits of using server-provided configuration files is the ability to dynamically generate or modify configuration files at the server to meet new content types. In this way, the present invention provides a dynamic and flexible method that defines actions taken by an application or client device in response to user interactions with a digital component. Generating or modifying configuration files at the server rather than at the client device eliminates the need to rely on the user to update the application on the client side, avoiding lag time and errors associated with updating the application.
[0044] In some implementations, the additional operations cause the application on the client device to collect visual element interaction data that the set of operations of the first profile did not cause the application on the client device to collect. The visual element interaction data is collected in response to a user interaction with a visual element of the application that is not part of a digital component presented in the application. For example, the collected visual interaction data may include data related to general application UI interactions.
[0045] In some implementations, the set of operations specified by the configuration file includes a first operation performed by the client device in response to a first type of interaction with the digital component, and a second operation performed by the client device in response to a second type of interaction with the digital component. For example, a user of the client device may first click on a teaser ad view and then click on an expanded ad body to navigate to a landing page. In this example, the first operation may report the expansion of the ad, and the second operation may report the opening of the landing page.
[0046] In some implementations, the first operation causes an application on a client device to report presentation of a digital component in response to a first interaction with a first view of the digital component that was presented before interacting with the digital component within the application; and the second operation causes the application on the client device to report a second interaction with a second view of the digital component that was presented after the first interaction with the first view of the digital component. For example, the first view of the digital component may be a teaser view, and after a user clicks on the digital component in the teaser view, the digital component may be presented in a second view that is an expanded view.
[0047] In some implementations, selecting a configuration file that specifies a set of operations to be performed by a client device that renders a digital component includes: analyzing the obtained attributes to determine a specific format of the digital component; determining a version of an application being run by the client device; and selecting a specific configuration file defined for a combination of the specific format of the digital component and the version of the application from a plurality of different configuration files. For example, the version of the application can be passed from the client device to the server in a request for content. The specific configuration file can include a mapping of content format and application version or any other attributes to different configuration files.
[0048] Content Action Configuration
[0049] Content actions (e.g., digital component actions) can be the smallest unit of computation and represent functionality that cannot be further decomposed. Primary actions are common actions used across all content formats. The sample code below shows AdActionproto, which is a container for digital component actions that occur in the server layer. In this example, the configuration is established using protobuf, but it can be provided in other formats such as XML or Json.
[0050]
[0051]
[0052] Another proto specifies launching a browser on the client device. The following sample code shows a UrlNavigationAdAction that specifies launching a browser:
[0053]
[0054]
[0055] You can use a proto to specify what app to open in the app store. The following sample code shows the proto for PlayStoreNavigationAdAction, which specifies the app to open in the app store on the client device:
[0056]
[0057] In addition, many content operations require updating the state of content stored in the content database, such as whether the content has been dismissed or the last time the content was displayed. This action abstracts the content table operation. The following sample code shows the proto of AdStateAction to update the state of an advertisement stored in the advertisement database:
[0058]
[0059] A content report action such as an HTTP request content action can be used to specify an HTTP GET request to a specified URL. The ClickServerResponse enumeration can be used to specify whether a response is expected and should be stored. The following sample code shows the proto of HttpRequestAdAction:
[0060]
[0061] Another content reporting action, such as an HTTP post request content action, specifies an HTTP POST request to a specified URL. The following sample code shows the prototype of FormSubmissionAdAction:
[0062]
[0063] The content provider event content action specifies the content event to be reported. The following sample code shows the proto of ExampleContentProviderReportingConfig:
[0064]
[0065] Content action trigger
[0066] Content actions can be triggered in different ways. For content event type triggering, the user action on the UI corresponds to a predefined content event type (e.g. pressing the star button triggers a starred content event). This option binds the content action configuration to a specific event type. Sample code for ad event type triggering is shown below.
[0067]
[0068] Additional content event types may be defined to differentiate between events occurring in both the thread list and the conversation view.
[0069] When a content action is triggered for each content item, it is preferably configured per UI component and per user action. Most UI elements can be uniquely identified by their component ID. However, in the case of multiple elements with the same ID, an element_index can be added. Using a combination of ID, index, and user action, the configuration for a specific action can be defined. The following example code shows the proto of ContentElementConfig, which can be used to map ad actions to their UI components and user actions:
[0070]
[0071]
[0072] For content actions triggered by UI components, the configured UI components can be explicitly listed. The following sample code shows the proto of ContentElementConfig, where the content action is triggered by a UI component:
[0073]
[0074]
[0075] Store content actions
[0076] Content actions may be further stored. In the API layer, content items are converted to their API interfaces. When instantiated, a content item profile may be converted into a mapping from, for example, a visual element ID, an element index, or a user action to a content action.
[0077] Figure 4A flow chart of a first example process 400 for triggering client-side activities in response to user interaction with a digital component in an application is shown. At a native client 410, a user performs an action 412 on a user interface (UI) element 414. Upon user action 412, a related action listener is called. The listener then calls a content reporting function in an application programming interface (API) layer 420 with a reporting action 416 (e.g., pressing a star button calls a star() function).
[0078] In the API layer 420, the content 422 associated with the UI element 414 makes an asynchronous call to processContentEvent in ContentService 432 at 424 using ContentEventRequest 434. ContentEventRequest 434 contains the report type and information related to the action. The ContentService 432 function serves as the entry point for the service layer. ContentEventRequest 434 is passed to ContentManager 436 for processing. Content Manager 436 calls different reporting functions based on the type of ContentEventRequest 434. Status updates may also be made to the content table. ContentEventReporter 440 performs the actual business logic for reporting each logic based on the called function.
[0079] Figure 5 A flow chart of a second example process 500 for triggering client-side activities in response to user interaction with a digital component in an application is shown. At a native client 510, a user performs an action 512 on a user interface (UI) element 514. The action 512 can be, for example, a click action (e.g., single-click or double-click), hovering a cursor (e.g., with a mouse) over an element, touching an element on a touch screen with a finger, or dragging or sliding an element (e.g., with a mouse or with a finger on a touch screen). The element 514 can be, for example, a link, a media element (e.g., a picture, a sound clip, a video clip), a button (e.g., a radio button), a toggle, an input field, a text field, a date / time picker, a drop-down list, a list box, a drop-down button, a checkbox, a card (i.e., a module containing different types of information), a carousel, a feed, a form, a hamburger menu, an icon, a modal, a notification, a sidebar, a tab bar, a label, or any combination thereof.
[0080] A user action 512 on a UI element 514 causes the native client 510 to report the action to the API layer 520 at 516. Upon user action 512, the function is called to process the action 512.
[0081] When a report action 516 occurs, the user interface of the native client 510 calls the API Content Item 522 to perform a lookup of the mapping for the action. If the action is found, a new API ContentAction 524 is instantiated.
[0082] ContentAction API interface 528 helps run ContentAction 524. ContentClientAction is executed in native client 510 using ContentClientActionHelper 518 and ContentClientActionHelper 526 in the API layer. ContentClientationHelper 518 is implemented for each platform to allow the API layer to have a platform agnostic way to execute UI actions.
[0083] At 532, all non-UI content actions are aggregated in a ContentActionRequest and sent to ContentService 534 in the server layer 530. ContentActionRequest 536 is processed by ContentManager 538. For reporting content actions, ContentManager 538 calls ContentReportingActionDispatcher 542 at 540 instead of Figure 4 ContentReportingActionDispatcher 542 invokes the corresponding resolver of a specific content reporting action (e.g., FormSubmissionReportingAction 544, HttpRequestReportingAction 548, XYZContentEventReportingAction 554). Reporting actions may include, for example, HTTP requests (GET, POST) to URLs, remote procedure call (RPC) calls for reporting content-related events to content servers, URL navigation, and app store navigation.
[0084] A corresponding parser is implemented for each ContentReportingAction type. In some implementations, HttpRequestReportingAction 548 contains a copy of ContentTableController 552 to store any click server responses.
[0085] Content action execution detailed design
[0086] The following describes a detailed exemplary design for content action execution for a content item including an advertisement. The API content item uses, for example, the following code to process user actions:
[0087] ListenableFuture <boolean>handleContentAction(int visualElementId,intelementIndex,UserAction userAction,Map<String,Object> arguments);
[0088] Depending on the context, additional arguments may be passed to the map of arguments (e.g., pressing the submit form button in a formfill ad adds the form data as an argument to the map). The key to the map may be the argument name. The function performs a lookup to get the relevant content action. With the content action, the function calls the API AdAction interface to run the AdAction. This function returns a ListenableFuture that completes when all ContentActions have finished running. A boolean indicates whether the run was successful.
[0089] The API ContentAction interface (specifically, the AdAction interface) can be implemented using the following sample code:
[0090] interface AdAction{
[0091] ListenableFuture <boolean>execute(Map<String,Object> arguments);
[0092] }
[0093] API AdAction is instantiated using AdtAction proto. When execute is called, AdClientAction is first executed in the UI using AdClientActionHelper. AdStateAction and AdReportingAction are combined into a request to AdService. Depending on the argument key, the arguments are either added to the call to adClientationHelper or to the request to AdService (for example, form submission data is added to the AdService call).
[0094] AdClientActionHelper executes UI AdActions. Each supported platform can have its own implementation. The following sample code can be used to provide adClientationHelper:
[0095] interface AdClientActionHelper{
[0096] ListenableFuture <boolean>launchUrl(AdBrowser params,AdItem ad);
[0097] ListenableFuture <boolean>launchInAppStore(AdItem ad);
[0098] }
[0099] The server RPC is used to perform content actions using code such as the following:
[0100] ListenableFuture <adactionresponse>(AdActionRequest request);
[0101] As shown in the sample code below, the RPC then calls the server AdsManager to execute the AdActionRequest:
[0102]
[0103]
[0104] AdsManager can use the following sample code to handle AdActionRequests:
[0105] ListenableFuture <adactionresponse>processAdAction(AdActionRequestrequest);
[0106] The AdsManager can use the type of AdEventRequest to control what ad state is updated. Alternatively, the AdsManager can use the type of AdStateAction as an alternative. If AdStateAction is not set, the default action is to load a StoredAd on the report action.
[0107] After executing AdStateAction, call AdReportingActionDispatcher with the updated StoredAd.
[0108] ListenableFuture <void>processAdReportingAction(AdActionRequestrequest,StoredAd ad);
[0109] The scheduler iterates through all AdReportingActions and executes them in parallel. The type of AdReportingAction is used to map to the correct ReportingAction.
[0110] The AdReportingAction interface can be provided using the following sample code:
[0111] interface AdReportingAction{
[0112] ListenableFuture <void>report(AdActionRequest request,StoredAd ad,AdReportingAction reportingAction);
[0113] }
[0114] Implement the AdReportingAction interface for each reporting action type.
[0115] Content format specific actions
[0116] Additional use cases are discussed below. For example, an external click URL action can be decomposed into a report URL and a landing page URL, which speeds up the landing page load and improves the user experience. Typically, the server can decompose the URL multiple times and ping in parallel to improve the user experience.
[0117] In another use case, multiple URLs can be reported on a single event. Previously, when a user interacted with a specific URL element associated with multiple URLs, the application had to address each of the URLs in a separate step. For example, the client device requires business logic to ping URL1, URL2, and URL3, and further ping the API to report internal events. In some implementations, the server generates a single configuration file that addresses each individual URL and the required ping action. In these flexible implementations, new URLs or internal events to be reported can be easily added to the configuration file. Similarly, the order of actions in the configuration file can be easily changed, and additional parameters can be easily attached. The entire configuration file is then sent to the client device.
[0118] The client device supports some common actions, such as opening a URL or installing an application, which can be configured by the server on a per-action basis. The client device queries the API for what action to perform by providing information identifying the user action and receiving the action in response.
[0119] API
[0120] An API can be provided on a client device to respond to user actions and receive instructions from a server. In some implementations, the API includes The following example describes an API that exists on the client device and supports passing information from the server to the client device. In this example, the user action involves a digital component that includes a teaser ad and a body (eg, opening the ad body, submitting a leaderboard form). The function is called from the body in the code below, which takes the name of the action that was triggered and calls the associated configuration file:
[0121] triggerAction(str)
[0122] because The API is fixed to a specific client version, so servers use the same API for older clients to avoid incompatibility issues. To account for future changes, the API can be extended to take additional (optional) parameters that may be helpful for other use cases:
[0123] triggerAction(str,otherParameters)
[0124] In this way, the HTML code can be updated to pass the new parameters (if available), and the otherParameters variable can be ignored for older clients. If used, otherParameters can contain metadata, including visual element metadata.
[0125]
[0126] In some cases (e.g. for leadgen content), it is desirable to log non-static metadata. For example, to report the number of characters entered in a field, a visual element event can be defined in the configuration:
[0127]
[0128] Then, from the main body, use logic to call the API, passing the visual element metadata:
[0129] <input type="text"
[0130] id="name"
[0131] onblur="triggerAction('EnterName',enterNameMetadata())">
[0132] The following code calls the function:
[0133]
[0134] Alternative proto
[0135] The following examples describe various protos that can support various native actions on the client device. In the code below, the reporting configuration is passed to the client as AdReportingActionConfig. Ads are synchronized as a separate server service, outside the core message synchronization band, and stored only in memory. To support native actions, the proto can be extended with AdNativeAction, which contains the native UI action associated with the configuration:
[0136]
[0137]
[0138] Actions are keyed by AdActionKey, which is a combination of AdActionType and EventSource. To identify the ad primitive action from the subject, UI actions are mapped to items in the configuration. AdActionKey can be extended to take an ID field that can be passed from the client device:
[0139]
[0140] In these implementations, ad_action_type or event_source is set, and element_id is optionally set (e.g., when ad_action_type and / or event_source are not sufficient to identify a user action). If ad_action_type and event_source are set, then AdReportingActionConfig is used when the event occurs. If element_id is set, then AdReportingActionConfig is used when the element_id is passed from the body to triggerEvent().
[0141] API / Server Configuration
[0142] The following example describes a method for reporting an action taking into account the element id on an Ad using a reporting configuration:
[0143] ListenableFuture <void>clickedFromBody(String elementId);
[0144] This calls AdsServiceServer.processAdEvent() ->AdsManagerImpl.processAdEventRequest() where AdEventRequest.EventType = URL_CLICKED and EventSource = CONVERSATION_VIEW. AdsManagerImpl.urlClicked() then calls AdsReporterImpl.report() which looks up the report configuration.
[0145] Field added to the AdEventRequest to identify the id passed to the API, which is set in Ad.clickedFromBody().
[0146] optional string elementId;
[0147] A method is also provided for retrieving the original action given the id on the API Ad object:
[0148] ListenableFuture <ImmutableList <adnativeaction>>getNativeActions(String elementId);
[0149] Alternatively, clickedFromBody can return a list of primitive actions to be performed:
[0150] ListenableFuture <ImmutableList <adnativeaction>>clickedFromBody(StringelementId);
[0151] However, this requires the client to wait for the report to occur before executing the primitive action, whereas in the previous example, they were executed in parallel. Splitting it into two API calls means that the two API calls can continue to occur in parallel.
[0152] This method returns a wrapper around the proto AdNativeAction that handles URL parameterization:
[0153]
[0154]
[0155] For URL navigation, getNativeActions calls AdsServiceServer.getAdTransientState() ->AdsManagerImpl.getAdTransientState().
[0156] AdsManagerImpl.getAdTransientState() performs the parameterization logic and returns a parameterized url similar to the proto from the above interface (which the interface will read from):
[0157]
[0158]
[0159] Client UI Configuration
[0160] In order to use the original report, introduce it in webview Interface, clients can use this Interface to invoke primitive actions and associated reports. A sample implementation is shown below:
[0161]
[0162]
[0163] Visual element events
[0164] When the primitive action is a visual element event, the client needs to convert the data into a visual element event in the client, parsing the metadata bytes into the appropriate prototype.
[0165] In some implementations, the tag NATIVE_ACTION can be used and populated with client metadata. In some implementations, an enumeration of NativeAction is used in the proto and converted to VisualElementTag in the client. In some implementations, single byte fields in the visual element event are copied directly from the client to avoid concerns about unknown fields. For example, in BigTopVisualElementMetdata, fields can be added as follows to be populated in NativeActionAdVisualElement:
[0166] optional / *NativeAction* / bytes native_action;
[0167] In the visual element pipeline (createAdLandingPage), the bytes are parsed into a proto and added to the AdLandingPageEvent.
[0168] Figure 6 Examples of computing device 600 and mobile computing device 650 that can be used to implement the techniques described herein are shown. Computing device 600 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. Mobile computing device 650 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions are merely examples and are not intended to be limiting.
[0169] The computing device 600 may include a processor 602, a memory 604, a storage device 606, a high-speed interface 608 connected to the memory 604 and a plurality of high-speed expansion ports 610, and a low-speed interface 612 connected to a low-speed expansion port 614 and the storage device 606. Each of the processor 602, the memory 604, the storage device 606, the high-speed interface 608, the high-speed expansion port 610, and the low-speed interface 612 may be interconnected using various buses and may be appropriately mounted on a common motherboard or otherwise mounted. The processor 602 is capable of processing instructions for execution within the computing device 600, including instructions stored in the memory 604 or on the storage device 606, to display graphical information of a GUI on an external input / output device (such as a display 616 coupled to the high-speed interface 608). In other implementations, multiple processors and / or multiple buses and multiple memories and multiple types of memories may be appropriately used. In addition, multiple computing devices may be connected, wherein each device provides a portion of the necessary operations (e.g., as a server group, a group of blade servers, or a multi-processor system).
[0170] The memory 604 can store information within the computing device 600. In some implementations, the memory 604 is one or more volatile memory units. In some implementations, the memory 604 is one or more non-volatile memory units. The memory 604 can also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0171] The storage device 606 may have the ability to provide mass storage for the computing device 600. In some implementations, the storage device 606 may be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state storage device or device array, including a device in a storage area network or other configuration. Instructions can be stored in an information carrier. When the instructions are executed by one or more processing devices (e.g., processor 602), one or more methods, such as those described above, are executed. Instructions can also be stored by one or more storage devices, such as a computer or machine-readable medium (e.g., memory 604, storage device 606, or memory on processor 602).
[0172] The high-speed interface 608 can manage bandwidth-intensive operations of the computing device 600, while the low-speed interface 612 can manage less bandwidth-intensive operations. This functional allocation is only an example. In some implementations, the high-speed interface 608 is coupled to the memory 604, the display 616 (e.g., through a graphics processor or accelerator), and is coupled to a high-speed expansion port 610 that can accept various expansion cards. In this implementation, the low-speed interface 612 is coupled to the storage device 606 and the low-speed expansion port 614. The low-speed expansion port 614, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or a router, for example, through a network adapter.
[0173] As shown, computing device 600 can be implemented in a variety of different forms. For example, it can be implemented as a standard server 620, or multiple times in a group of such servers. In addition, it can be implemented in a personal computer such as a laptop computer 622. It can also be implemented as part of a rack server system 624. Alternatively, components from computing device 600 can be combined with other components in a mobile device such as mobile computing device 650. Each of these devices can contain one or more of computing device 600 and mobile computing device 650, and the entire system can be composed of multiple computing devices that communicate with each other.
[0174] The mobile computing device 650 may include a processor 652, a memory 664, an input / output device such as a display 654, a communication interface 666, and a transceiver 668, among other components. The mobile computing device 650 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the processor 652, the memory 664, the display 654, the communication interface 666, and the transceiver 668 may be interconnected using various buses, and several components may be appropriately mounted on a common motherboard or otherwise mounted.
[0175] Processor 652 may execute instructions within mobile computing device 650, including instructions stored in memory 664. Processor 652 may be implemented as a chipset including separate multiple analog and digital processors. Processor 652 may provide, for example, coordination of other components of mobile computing device 650, such as control of a user interface, applications executed by mobile computing device 650, and wireless communications performed by mobile computing device 650.
[0176] The processor 652 can communicate with the user through the control interface 658 and the display interface 656 coupled to the display 654. The display 654 can be, for example, a TFT (thin film transistor liquid crystal display) display or an OLED (organic light emitting diode) display or other suitable display technology. The display interface 656 may include appropriate circuits for driving the display 654 to present graphics and other information to the user. The control interface 658 can receive commands from the user and convert them for submission to the processor 652. In addition, the external interface 662 can provide communication with the processor 652 to enable near-area communication of the mobile computing device 650 with other devices. The external interface 662 can provide, for example, wired communication in some implementations, or wireless communication in other implementations, and multiple interfaces can also be used.
[0177] The memory 664 can store information within the mobile computing device 650. The memory 664 can be implemented as one or more of one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 674 can also be provided and connected to the mobile computing device 650 via an expansion interface 672, wherein the expansion interface 672 can include, for example, a SIMM (single in-line memory module) card interface. The expansion memory 674 can provide additional storage space for the mobile computing device 650, or can also store applications or other information for the mobile computing device 650. Specifically, the expansion memory 674 can include instructions for executing or supplementing the above-mentioned processes, and can also include security information. Therefore, for example, the expansion memory 674 can be provided as a security module for the mobile computing device 650, and can be programmed with instructions that allow the mobile computing device 650 to be used safely. In addition, security applications and additional information can be provided via a SIMM card, such as placing identification information on the SIMM card in a way that cannot be hacked.
[0178] As described below, the memory may include, for example, flash memory and / or NVRAM memory (non-volatile random access memory). In some implementations, the instructions are stored in an information carrier. The instructions, when executed by one or more processing devices (e.g., processor 652), preferably perform one or more methods, such as those described above. The instructions can also be stored by one or more storage devices, such as one or more computer or machine readable media (e.g., memory 664, expansion memory 674, or memory on processor 652). In some implementations, the instructions can be received in a propagated signal, for example, by a transceiver 668 or an external interface 662.
[0179] The mobile computing device 650 can communicate wirelessly via a communication interface 666, which may include digital signal processing circuitry when necessary. The communication interface 666 can provide communications in various modes or protocols, such as GSM voice calls (Global System for Mobile Communications), SMS (Short Message Service), EMS (Enhanced Message Service) or MMS messages (Multimedia Message Service), CDMA (Code Division Multiple Access), TDMA (Time Division Multiple Access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000 or GPRS (General Packet Radio Service), etc. Such communications can occur, for example, via a transceiver 668 using radio frequency. In addition, short-range communications can occur, such as using Bluetooth, WiFi or other such transceivers. In addition, a GPS (Global Positioning System) receiver module 670 can provide additional navigation and location-related wireless data to the mobile computing device 650, which can be used appropriately by applications running on the mobile computing device 650.
[0180] The mobile computing device 650 may also communicate audibly using an audio codec 660, wherein the audio codec 660 may receive voice information from a user and convert it into usable digital information. The audio codec 660 may also generate audible sounds for the user, such as through a speaker (e.g., in a handset of the mobile computing device 650). Such sounds may include sounds from voice phone calls, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on the mobile computing device 650.
[0181] As shown, mobile computing device 650 can be implemented in many different forms. For example, it can be implemented as a cellular phone 680. It can also be implemented as a part of a smart phone 682, a personal digital assistant, or other similar mobile devices.
[0182] As used throughout this document, the phrase "digital component" refers to a discrete unit of digital content or digital information (e.g., a video clip, an audio clip, a multimedia clip, an image, text, or another unit of content). A digital component can be electronically stored in a physical storage device as a single file or as a collection of files, and a digital component can take the form of a video file, an audio file, a multimedia file, an image file, or a text file, and include advertising information, such that an advertisement is a type of digital component.
[0183] Various implementations of the systems and techniques described herein can be implemented in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, computer program products, and / or combinations thereof. These various implementations can include implementations in one or more computer programs executable and / or interpretable on a programmable system that includes at least one programmable processor, which can be special purpose or general purpose, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to the storage system, at least one input device, and at least one output device.
[0184] These computer programs (also referred to as programs, software, software applications or code) include machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms machine-readable medium and computer-readable medium refer to any computer program product, apparatus and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including machine-readable media that receive machine instructions as machine-readable signals. The term machine-readable signal refers to any signal for providing machine instructions and / or data to a programmable processor.
[0185] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including sound, voice, or tactile input.
[0186] The systems and techniques described herein can be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or includes any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.
[0187] A computing system can include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0188] 1. A method comprising:
[0189] selecting, by one or more servers, a digital component to be presented in an application executing at a client device;
[0190] obtaining, by the one or more servers, properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported;
[0191] After selecting the digital component and obtaining properties of the digital component, selecting, by the one or more servers based on the obtained properties, a configuration file that specifies a set of operations to be performed by a client device that presents the digital component in response to a user interaction with the digital component; and
[0192] A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file that, when executed by the client device, causes the client device to perform a set of operations specified by the configuration file.
[0193] 2. The method according to claim 1, further comprising:
[0194] A configuration report packet is received by a server at a reporting network location, the configuration report packet (i) generated by a client device in response to execution of a configuration file and (ii) specifying interaction with a digital component at the client device.
[0195] 3. The method according to claim 1 or 2, further comprising:
[0196] After the payload is sent to the client device, the digital component to be rendered in the app is selected a second time;
[0197] selecting a second time a different profile that specifies a different set of operations than the profile sent in the payload based on the different profile being mapped to the properties of the digital component than the profile sent in the payload; and
[0198] When the properties of the digital component are mapped to the different configuration file, based on the selection of the digital component, a different payload including information specifying the digital component and the different configuration file instead of the configuration file is sent to the client device.
[0199] 4 . The method of claim 3 , wherein the different set of operations includes additional operations that cause the client device to perform actions that the configuration file does not cause the client device to perform.
[0200] 5. A method according to claim 4, wherein the additional operations cause the client device to collect the set of operations of the profile without causing the client device to collect visual element interaction data, wherein the visual element interaction data is collected in response to user interaction with a visual element of the application that is not part of a digital component presented in the application.
[0201] 6. A method according to any preceding claim, wherein the set of operations comprises:
[0202] a first operation performed by the client device in response to the first type of interaction with the digital component; and
[0203] A second operation is performed by the client device in response to a second type of interaction with the digital component.
[0204] 7. The method according to claim 6, wherein:
[0205] The first operation causes the client device to report presentation of the digital component in response to a first interaction with a first view of the digital component, the first view of the digital component being presented prior to interacting with the digital component within the application; and
[0206] The second operation causes the client device to report a second interaction with a second view of the digital component, the second view of the digital component being presented after the first interaction with the first view of the digital component.
[0207] 8. The method of any preceding claim, wherein selecting a configuration file that specifies a set of operations to be performed by a client device presenting the digital component comprises:
[0208] analyzing the obtained attributes to determine the specific format of the digital component;
[0209] determining a version of an application being run by the client device; and
[0210] A specific profile defined for a combination of a specific format of the digital component and a version of the application is selected from a plurality of different profiles.
[0211] 9. A system comprising:
[0212] one or more storage devices storing instructions; and
[0213] One or more data processing apparatuses are configured to interact with one or more storage devices and, when executing the instructions, perform operations including:
[0214] selecting a digital component to be presented in an application running at a client device;
[0215] obtaining properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported;
[0216] After selecting the digital component and obtaining properties of the digital component, selecting, by the one or more servers based on the obtained properties, a configuration file that specifies a set of operations to be performed by a client device that presents the digital component in response to a user interaction with the digital component; and
[0217] A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file that, when executed by the client device, causes the client device to perform a set of operations specified by the configuration file.
[0218] 10. The system according to claim 9, wherein the one or more data processing devices configured to interact with the one or more storage devices perform operations further comprising the following when executing the instructions:
[0219] A configuration reporting packet is received at a reporting network location, the configuration reporting packet (i) generated by a client device in response to execution of a configuration file and (ii) specifying interaction with a digital component at the client device.
[0220] 11. The system according to claim 9 or claim 10, wherein one or more data processing devices configured to interact with one or more storage devices perform operations further comprising the following when executing the instructions:
[0221] After the payload is sent to the client device, the digital component to be rendered in the app is selected a second time;
[0222] selecting a second time a different profile that specifies a different set of operations than the profile sent in the payload based on the different profile being mapped to the properties of the digital component than the profile sent in the payload; and
[0223] When the properties of the digital component are mapped to the different configuration file, based on the selection of the digital component, a different payload including information specifying the digital component and the different configuration file instead of the configuration file is sent to the client device.
[0224] 12. The system of claim 11, wherein the different set of operations includes additional operations that cause the client device to perform actions that the configuration file does not cause the client device to perform.
[0225] 13. A method according to claim 12, wherein the additional operations cause the client device to collect the set of operations of the profile without causing the client device to collect visual element interaction data, wherein the visual element interaction data is collected in response to user interaction with a visual element of the application that is not part of a digital component presented in the application.
[0226] 14. The system according to any one of claims 9 to 13, wherein the set of operations comprises:
[0227] a first operation performed by the client device in response to the first type of interaction with the digital component; and
[0228] A second operation is performed by the client device in response to a second type of interaction with the digital component.
[0229] 15. The system of claim 14, wherein:
[0230] The first operation causes the client device to report presentation of the digital component in response to a first interaction with a first view of the digital component, the first view of the digital component being presented prior to interacting with the digital component within the application; and
[0231] The second operation causes the client device to report a second interaction with a second view of the digital component, the second view of the comb component being presented after the first interaction with the first view of the digital component.
[0232] 16. The system of any one of claims 9 to 15, wherein selecting a configuration file that specifies a set of operations to be performed by a client device that renders the digital component comprises:
[0233] analyzing the obtained attributes to determine the specific format of the digital component;
[0234] determining a version of an application being run by the client device; and
[0235] A specific profile defined for a combination of a specific format of the digital component and a version of the application is selected from a plurality of different profiles.
[0236] 17. A non-transitory computer-readable medium storing instructions, wherein the instructions, when executed by one or more data processing devices, cause the one or more data processing devices to perform operations comprising:
[0237] selecting a digital component to be presented in an application running at a client device;
[0238] obtaining properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported;
[0239] After selecting the digital component and obtaining properties of the digital component, selecting, by the one or more servers based on the obtained properties, a configuration file that specifies a set of operations to be performed by a client device that presents the digital component in response to a user interaction with the digital component; and
[0240] A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file that, when executed by the client device, causes the client device to perform a set of operations specified by the configuration file.
[0241] 18. The non-transitory computer readable medium of claim 17, wherein the instructions, when executed by one or more data processing devices, cause the one or more data processing devices to perform operations comprising:
[0242] A configuration reporting packet is received at a reporting network location, the configuration reporting packet (i) generated by a client device in response to execution of a configuration file and (ii) specifying interaction with a digital component at the client device.
[0243] 19. The non-transitory computer readable medium of claim 17 or claim 18, wherein the instructions, when executed by one or more data processing devices, cause the one or more data processing devices to perform operations comprising:
[0244] After the payload is sent to the client device, the digital component to be rendered in the app is selected a second time;
[0245] selecting a second time a different profile that specifies a different set of operations than the profile sent in the payload based on the different profile being mapped to the properties of the digital component than the profile sent in the payload; and
[0246] When the properties of the digital component are mapped to the different configuration file, based on the selection of the digital component, a different payload including information specifying the digital component and the different configuration file instead of the configuration file is sent to the client device.
[0247] 20. The system of claim 19, wherein the different set of operations includes additional operations that cause the client device to perform actions that the configuration file does not cause the client device to perform.
[0248] Although some implementations have been described in detail above, other modifications are possible. For example, although the client application is described as accessing (one or more) delegates, in other implementations, (one or more) delegates may be adopted by other applications implemented by one or more processors (such as applications executed on one or more servers). In addition, the logic flows depicted in the accompanying drawings do not require the specific order or sequential order shown to achieve the desired results. In addition, other actions can be provided, or actions can be eliminated from the described processes, and other components can be added to or removed from the described systems. Therefore, other implementations are within the scope of the appended claims.< / adnativeaction> < / adnativeaction> < / void> < / void> < / void> < / adactionresponse> < / adactionresponse> < / boolean> < / boolean> < / boolean> < / boolean>
Claims
1. A method comprising: selecting, by one or more servers, a digital component to be presented in an application executing at a client device; obtaining, by the one or more servers, properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported; selecting, by one or more servers, a profile by mapping the attributes at the time of interaction, the profile being dynamically adjusted to specify a set of operations to be performed in parallel by a client device presenting the digital component, wherein the set of operations are performed in parallel in response to a user's interaction with the digital component, and wherein at least one operation includes sending data and at least one other operation includes receiving data; A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file, which when executed by the client device causes the client device to perform in parallel a set of operations specified by the configuration file.
2. The method according to claim 1, wherein: The operation set includes: a first operation performed by the client device in response to the first type of interaction with the digital component; and A second operation is performed by the client device in response to a second type of interaction with the digital component.
3. The method according to claim 1, wherein: The operation set includes: A first operation includes contacting a reporting server; as well as The second operation includes the client device being directed to a destination page linked by the digital component.
4. The method according to claim 1, further comprising: A configuration report packet is received by a server at a reporting network location, the configuration report packet (i) generated by a client device in response to execution of a configuration file and (ii) specifying interaction with a digital component at the client device.
5. The method according to claim 4, wherein: The interaction with the digital component includes one of a user clicking the digital component or touching a finger to a touch screen on the digital component.
6. The method according to claim 1, wherein: The configuration files are dynamically adjusted by one or more servers and do not require modification on the client device.
7. The method according to claim 1, wherein: The set of operations performed in parallel by the client device include reporting a user click on the digital component and opening a landing page associated with the digital component.
8. The method according to claim 1, wherein: The set of operations includes different network calls initiated by the client device.
9. A system comprising: one or more storage devices storing instructions; as well as One or more data processing devices are configured to interact with one or more storage devices and, when executing the instructions, perform operations including the following: selecting a digital component to be presented in an application running at a client device; obtaining properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported; selecting a profile by mapping the attributes at the time of interaction, the profile being dynamically adjusted to specify a set of operations to be performed in parallel by a client device presenting the digital component, wherein the set of operations are performed in parallel in response to a user's interaction with the digital component, and wherein at least one operation includes sending data and at least one other operation includes receiving data; and A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file, which when executed by the client device causes the client device to perform in parallel a set of operations specified by the configuration file.
10. The system according to claim 9, wherein: The operation set includes: a first operation performed by the client device in response to the first type of interaction with the digital component; and A second operation is performed by the client device in response to a second type of interaction with the digital component.
11. The system according to claim 9, wherein: The operation set includes: A first operation includes contacting a reporting server; as well as The second operation includes the client device being directed to a destination page linked by the digital component.
12. The system of claim 9, further comprising: A configuration reporting packet is received at a reporting network location, the configuration reporting packet (i) generated by a client device in response to execution of a configuration file and (ii) specifying interaction with a digital component at the client device.
13. The system according to claim 12, wherein: The interaction with the digital component includes one of a user clicking the digital component or touching a finger to a touch screen on the digital component.
14. The system according to claim 9, wherein: The configuration file is dynamically adjusted by the one or more data processing devices without requiring modification on the client device.
15. The system according to claim 9, wherein: The set of operations performed in parallel by the client device include reporting a user click on the digital component and opening a landing page associated with the digital component.
16. The system of claim 9, wherein: The set of operations includes different network calls initiated by the client device.
17. A non-transitory computer-readable medium storing instructions, wherein: When the instructions are executed by one or more data processing devices, the one or more data processing devices are caused to perform operations including: selecting a digital component to be presented in an application running at a client device; obtaining properties of the digital component, including at least one or more of a destination network location to which the digital component redirects a user in response to an interaction with the digital component and a reporting network location to which the interaction with the digital component is reported; selecting a profile by mapping the attributes at the time of interaction, the profile being dynamically adjusted to specify a set of operations to be performed in parallel by a client device presenting the digital component, wherein the set of operations are performed in parallel in response to a user's interaction with the digital component, and wherein at least one operation includes sending data and at least one other operation includes receiving data; and A payload is sent to the client device, the payload including information specifying the digital component to be rendered in the application and a configuration file, which when executed by the client device causes the client device to perform in parallel a set of operations specified by the configuration file.
18. The non-transitory computer readable medium of claim 17, wherein: The operation set includes: a first operation performed by the client device in response to the first type of interaction with the digital component; and A second operation is performed by the client device in response to a second type of interaction with the digital component.
19. The non-transitory computer readable medium of claim 17, wherein: The set of operations includes different network calls initiated by the client device.
Citation Information
Patent Citations
Dynamically configurable client application activities
CN114402281B