Registered applications for electronic devices
By providing the applet version of the application on the electronic device, using QR codes and locations to determine the requirements, combined with the Blon filter and a remote server, the problem of time-consuming and resource-consuming for users to install the application on the electronic device is solved, and fast and privacy-protected application function access is achieved.
Patent Information
- Application Number
- CN202510373013.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2020-09-23
- Filing Date
- 2021-03-19
- Publication Date
- 2025-07-11
AI Technical Summary
用户在电子设备上安装应用程序时需要进行认证、下载和启动过程耗时且耗资源,尤其是在临时需要应用程序功能时不便捷。
Provide applets or simplified functional versions of the application, obtain simplified functional versions of the application by scanning QR codes or determining requirements based on location, using Bloom filters and remote servers to provide privacy protection, and install and start immediately after user authorization.
It realizes some functions of quickly accessing and installing applications without user authentication, reducing time and resource consumption and improving user experience.
Smart Images

Figure CN120296745A_ABST
Abstract
Description
[0001] This application is a divisional application of an application with international application number PCT / US2021 / 023302, international filing date of March 19, 2021, date of entry into the Chinese national phase of October 9, 2022, national application number 202180027329.5, and invention title "Registered Applications for Electronic Devices".
[0002] Cross - Reference to Related Applications
[0003] This patent application claims the benefit of the priority of U.S. Provisional Patent Application No. 63 / 041,760, titled "Registered Applications for Electronic Devices", filed on June 19, 2020, and also claims the benefit of the priority of U.S. Provisional Patent Application 63 / 008,577, titled "Application Clips for Electronic Devices", filed on April 10, 2020. The disclosure of each of these patent applications is hereby incorporated by reference in its entirety. Technical Field
[0004] This specification generally relates to applications for electronic devices, and more particularly to registered applications such as application clips for electronic devices. Background Art
[0005] Users typically install applications for performing various functions on their electronic devices, particularly mobile electronic devices. Before installing an application, users typically access an application repository at a remote server, select an application from the repository, provide authentication information and / or payment to the server, and after receiving access to the code based on the authentication, download the code of the application for installation. Typically, if a user attempts to access an application that is not installed on their device, the device routes the user to a web page associated with the owner of the application or provides the user with the opportunity to authenticate, download, and install the application using the above steps. Brief Description of the Drawings
[0006] Some features of the subject technology are shown in the appended claims. However, for purposes of explanation, several implementations of the subject technology are set forth in the following drawings.
[0007] Figure 1 An exemplary network architecture is shown in accordance with one or more specific implementations.
[0008] Figure 2An exemplary environment that can provide a simplified functional version of an application according to one or more specific implementations is shown.
[0009] Figure 3 An example of an electronic device obtaining a simplified functional version of an application according to one or more specific implementations is shown.
[0010] Figure 4 A flowchart of an exemplary process for providing a simplified functional version of an application according to one or more specific implementations is shown.
[0011] Figure 5 A flowchart of an exemplary process for replacing a simplified functional version of an application with a full version of the application according to one or more specific implementations is shown.
[0012] Figure 6 A flowchart of an exemplary process for providing a temporary version of an application according to one or more specific implementations is shown.
[0013] Figure 7 A flowchart of an exemplary process for obtaining a registered application according to one or more specific implementations is shown.
[0014] Figure 8 An electronic system that can be used to implement one or more specific implementations of the present subject matter is shown. Detailed Description
[0015] The following detailed description is intended as a description of various configurations of the present subject matter and is not intended to represent the only configuration in which the present subject matter may be practiced. The drawings are incorporated herein and constitute a part of the detailed description. The detailed description includes specific details intended to provide a thorough understanding of the present subject matter. However, the present subject matter is not limited to the specific details set forth herein and may be practiced using one or more other specific implementations. In one or more specific implementations, structures and components are shown in block diagram form to avoid obscuring the concepts of the present subject matter.
[0016] The present subject matter provides immediate access to a portion of the functionality of an application when the application has not been installed on a device. This immediate access can be provided when there is a current need for that portion of the functionality of the application. For example, the current need can be determined based on the location of the device, based on a scanned Quick Response (QR) code, or based on a selected link associated with the application.
[0017] For example, this can be helpful when a user walks into a store without having installed the store's application on their smartphone, smartwatch, tablet, or other electronic device. Based on the user's location at the store, based on the user scanning a QR code provided by the store, or in response to the user selecting a link associated with the store, a mini-program of the application (e.g., the purchase section of the store's application or the ordering section of the store's application) can start downloading while presenting the user with an option to authorize the installation of the application mini-program. In this way, when the user authorizes the installation and / or launch, the application mini-program is immediately installed, launched, and ready for use. This process for obtaining a mini-program of the application (sometimes referred to herein as a simplified functional version of the application, a temporary version of the application, a part of the application, an application mini-program, or an applet) can be performed without the user's authentication information and without downloading the code for the full application, as both cases can be undesirably time-consuming and / or resource-intensive.
[0018] Figure 1 Exemplary system architecture 100 is shown that includes various electronic devices that can implement the subject matter systems in accordance with one or more specific implementations. However, not all of the depicted components may be used in all specific implementations, and one or more specific implementations may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components can be made without departing from the spirit or scope of the claims listed herein. Additional components, different components, or fewer components may be provided.
[0019] Network architecture 100 includes electronic device 110, electronic device 115, and server 120. For purposes of explanation, system architecture 100 is shown in Figure 1 as including electronic device 110, electronic device 115, and server 120; however, system architecture 100 can include any number of electronic devices, peripherals, and any number of servers or a data center including multiple servers.
[0020] Network 106 can communicatively (directly or indirectly) couple, for example, electronic device 110 and / or electronic device 115 with each other and / or with server 120. In one or more specific implementations, network 106 can be an interconnected network that can include the Internet or devices communicatively coupled to the Internet.
[0021] The electronic device 110 may include a touch screen and may be, for example, a smart phone, a portable computing device such as a laptop computer, a peripheral device (e.g., a digital camera, headphones), a tablet device, a wearable device (such as a watch, a wristband, etc.), any other suitable device including, for example, a touch screen, or any electronic device having a touchpad. In one or more specific embodiments, the electronic device 110 may not include a touch screen, but may support touch screen-like gestures. In one or more specific embodiments, the electronic device 110 may include a touchpad. In Figure 1 this example, the electronic device 110 is depicted as a mobile smart phone device having a touch screen.
[0022] The electronic device 110 may be, for example, a portable computing device such as a laptop computer, a smart phone, a peripheral device (e.g., a digital camera, headphones), a tablet device, a wearable device (such as a watch, a wristband, etc.); or any other suitable device including, for example, one or more wireless interfaces, such as a WLAN radio device, a cellular radio device, a Bluetooth radio device, a Zigbee radio device, a near field communication (NFC) radio device, and / or other radio devices. The electronic device 110 may be and / or may include all or part of the electronic system described below with respect to Figure 8 In one or more specific embodiments, the electronic device 110 may be another device, such as an Internet Protocol (IP) camera, a tablet computer, or a peripheral device such as an electronic stylus.
[0023] The electronic device 115 may be, for example, a desktop computer, a portable computing device such as a laptop computer, a smart phone, a peripheral device (e.g., a digital camera, headphones), a tablet device, a wearable device such as a watch, a wristband, etc. In Figure 1 this example, the electronic device 115 is depicted as a desktop computer. The electronic device 115 may be and / or may include all or part of the electronic system described below with respect to Figure 8 In one or more specific embodiments, the electronic device 115 may be another device, such as an Internet Protocol (IP) camera, a tablet computer, or a peripheral device such as an electronic stylus.
[0024] The server 120 may form all or part of a computer network or server group 130, such as in a cloud computing or data center implementation. For example, the server 120 stores data and software and includes specific hardware (e.g., processors, graphics processors, and other dedicated or custom processors) for hosting an application repository, performing a privacy-protected mapping between a uniform resource locator (URL) and an application identifier, and / or authenticating and / or authorizing users of the server (e.g., for accessing applications in the application repository). In one specific embodiment, the server 120 may be used as a cloud server.
[0025] Figure 2An exemplary environment 200 of an electronic device in which the systems of the subject matter may be implemented in accordance with one or more specific embodiments is shown. However, not all of the depicted components may be used in all specific embodiments, and one or more specific embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims listed herein. Additional components, different components, or fewer components may be provided.
[0026] The environment 200 includes an electronic device 110, a store 202, and a wireless access point 204 (e.g., a Wi-Fi access point, a cellular access point, an NFC access point, etc.). For purposes of explanation, the environment 200 is shown in Figure 2 as including a single electronic device 110, a single store 202, and one wireless access point 204; however, the environment 200 may include any number of electronic devices, any number of stores, and any number of wireless access points.
[0027] The environment 200 allows the electronic device 110 to identify at least one version of an application that is not installed on the electronic device 110 and that version of the application may be available for immediate use with the electronic device 110 (e.g., without authenticating a user account of a user of the electronic device 110).
[0028] In one or more specific embodiments, multiple versions of an application may be used. Each version of a particular application and the application itself (e.g., the full application) may have the same application identifier or the same portion of an application identifier that is consistent with other versions of the same application. Each version of the application may be a simplified functional version of the application that has fewer functions than the full version of the application. In some examples, the application may be an application associated with the store 202 (e.g., an application associated with a particular online and / or brick-and-mortar retailer).
[0029] When a user of the electronic device 110 accesses an application repository at a remote server, selects an application from various applications in the application repository, provides authentication information to the remote server 120R to verify access to a user account at the remote server 120R, downloads and installs code for the application after the authentication information is verified by the remote server, and then installs and launches the application, the full version of the application may be obtained, such as from the remote server 120R.
[0030] The full version of the application can provide various functions, such as payment functions, online ordering functions, store locator functions, account access functions, application setting functions, search functions, help desk functions, order history functions, news feed functions, image capture functions, messaging functions, mapping functions, etc. Compared with the simplified functional version of the application, the full version of the application may be able to access and / or request authorization to access more components and / or more data at the electronic device 110. For example, the full version of the application may be able to request access to the photo library associated with the electronic device, while the simplified functional version of the application is blocked from requesting access to the photo library. In another example, the simplified functional version of the application may be able to access a subset of the components (e.g., sensors, cameras, etc.) that can be accessed by the full application.
[0031] However, in various operating scenarios, the user may not need all the functions of the full application, and / or the user may not be able or may not desire to spend the time and / or effort to locate, authenticate, download, install, and launch the full application. For example, in Figure 2 a network environment, a user of the electronic device 110 can reach and / or enter the store 202 without having installed the full application associated with the store on the electronic device 110. However, the user may benefit from the ability to use one or more portions of the functions of the application for that store while at the store 202. For example, the user may expect to use the payment function of the application to pay for goods or services at the store 202. As another example, the user may expect to skip the line at the store by leveraging the online ordering function of the application. In one or more specific implementations, multiple simplified functional versions of the application (e.g., payment function version, ordering function version, dine-in ordering function, takeout ordering function, reservation function, mapping function, etc.) may be used.
[0032] In these scenarios, it may be helpful to provide the user with the ability to obtain one or more of the simplified functional versions of the application (sometimes referred to herein as mini-apps of the application, application mini-apps, versions of the full application with fewer functions than the full application, temporary versions of the application with fewer functions than the full application, or portions of the application) without spending the time and effort to locate, authenticate, download, and install the full application. For example, a version of the application may be temporarily installed on the electronic device 110 (e.g., when the user arrives at or enters the store 202), and then deleted after a period of non-use (e.g., after the user leaves the store 202), when the user closes the version of the application, and / or when the user obtains the full version of the application. A version of the application such as a simplified functional version of the application (e.g., an applet) may include functions that are different from (or not included in) the full version of the application.
[0033] The environment 200 allows the electronic device 110 to obtain a network identifier or a network locator, such as a Uniform Resource Locator (URL) or a Uniform Resource Identifier (URI) for an application (e.g., a full application associated with the store 202), and use the Uniform Resource Locator to obtain a temporary version of an application that includes functionality less than the full version of the application.
[0034] The URL that identifies an application (e.g., a full application associated with the store 202, or another registered application such as an application applet or another experience) may have the form https: / / codes.server.com / experienceID?{arguments} in one or more embodiments, where "codes.server.com" identifies the remote server to which the registered application is registered, "experienceID" is the identifier of the registered application (e.g., the bundle identifier), and "{arguments}" includes one or more variables and / or parameters to be used for installing the registered application and / or to be passed to the registered application at startup. The portion of the URL before the variable (e.g., https: / / codes.server.com / experienceID or codes.server.com / experienceID) may be referred to as the prefix of the URL.
[0035] The environment 200 allows the electronic device 110 to receive a Uniform Resource Locator associated with an application; determine that the application is not installed on the electronic device 110; determine that at least one version of the application is available without user authentication based on at least a first portion of the Uniform Resource Locator; provide information associated with the Uniform Resource Locator (e.g., an identifier of the application or an identifier of the version of the application) to one or more remote servers such as the remote server 120R; in response to the information, receive code for at least that version of the application from the one or more remote servers; provide a request for user authorization to install and start at least that version of the application from the user; receive the user authorization; and in response to receiving the user authorization, install and start at least that version of the application.
[0036] The electronic device 110 can determine that at least this version of the application is available without user authentication, at least in part, based on at least a first portion of a Uniform Resource Locator (URL), by determining at the electronic device whether the URL is associated with an identifier of any application. Determining whether the URL is associated with an identifier of any application can include providing a hash of the URL (e.g., the entire URL or a portion of the URL) to a filter at the electronic device, such as a Bloom filter, and configured to return a positive result if the URL can be mapped to an application identifier (e.g., at a server storing a registered mapping between the URL and the application identifier), or a negative result if the URL is not mapped to any application identifier. If the Bloom filter indicates that the URL is not mapped to any application identifier, the electronic device can use a web browser to directly navigate to the URL.
[0037] In one or more specific implementations, if the Bloom filter indicates, based on a hash of the full URL, that the URL is not mapped to any application identifier (e.g., in a case where the Bloom filter does not include information for variables in the URL and thus indicates that the URL is not mapped to any application identifier), the electronic device 110 can provide one or more progressive subsets or truncations of the URL to the Bloom filter. For example, the electronic device 110 can progressively remove path or query component suffixes from the URL and check the results against the Bloom filter. For example, in one or more specific implementations, before directly navigating to the URL using a web browser, a hash of one or more prefixes of the URL obtained by progressively removing path or query component suffixes from the URL can be provided to the Bloom filter to determine whether the URL might correspond to any application identifier. As an example, the electronic device 110 can remove (e.g., ignore) a predetermined number of characters at the end of the URL, or remove characters after one or more special characters such as a question mark (?), forward slash, hashtag, etc.
[0038] Determining that at least this version of the application is available without user authentication based on at least a first portion of a Uniform Resource Locator can include (e.g., if a local Bloom filter at the electronic device indicates that the URL can be mapped to an application identifier) providing at least a first portion of the URL (e.g., a prefix of the URL, a hash of the prefix of the URL, a prefix of the hash of the URL, or a hash of the URL) to a remote server such as server 120, and receiving one or more identifiers of the application and / or an identifier of the version of the application associated with at least the first portion of the URL.
[0039] In one or more embodiments, determining at least that the version of the application is available can be accomplished in a privacy-preserving operation, where the device sends a hash of the URL, a portion of the hash of the entire URL (e.g., a prefix of the complete hash of the URL), or a hash of a portion of the URL to server 120. Server 120 looks up a collection or "bucket" of information that includes the application identifier and / or the application applet identifier corresponding to the hash (e.g., the hash algorithm can be designed to have multiple different URLs or portions thereof hashing to the same value), and then sends back a bucket of information that includes the identifier of the available version of the application and / or the identifier of the application (e.g., as well as the URL or portion thereof associated with those identifiers in the bucket). The device can then locally determine whether the application and / or one or more versions of the application associated with the URL are included and / or identified in the bucket. If one or more versions of the application associated with the URL are included and / or identified in the bucket, the electronic device downloads, installs, and / or launches that version of the application.
[0040] For example, in one or more embodiments, the code for the version of the application can be included (e.g., along with the code for one or more other applications or versions of applications in the bucket) in the data bucket. In one or more other embodiments, the identifier for the version of the application can be obtained from the bucket and used to obtain (e.g., from the same server providing the bucket or from a separate server) the associated code for the version of the application. For example, in one or more embodiments, the data bucket can be a metadata bucket for various versions of various applications, the metadata being obtained from a first server (e.g., a registration server for registered applications). The metadata for each version of each application can include information for display at the device (e.g., name and / or image) in a request for authorization to install and launch the version of the application, and can include an identifier. The code for the desired version of the application can be obtained from a second server (e.g., an application server separate from the registration server) using the identifier corresponding to the URL in the bucket. In this way, the device can identify available versions of applications while avoiding, for example, disclosing the device's location or the user's browsing or other activities to the server (e.g., at least until the user authorizes the installation and launch of a particular application or version of an application).
[0041] In one or more specific implementations, the code for a version of an application can be obtained as follows: First, obtain application metadata for the version of the application from an application server using an identifier obtained from a bucket received from a registration server; use the obtained application metadata to provide a launch user interface; when the launch user interface is displayed at the device, obtain the code for the version of the application from the application server using the identifier; and install and launch the version of the application when the code is obtained. In one or more specific implementations (e.g., if user authorization has not been obtained using the data in the bucket previously), multiple identifiers from the bucket received from the registration server can be used to obtain application metadata for multiple versions and / or multiple applications from the application server. The device can use the identifier to select the appropriate application metadata for providing the appropriate launch user interface and can include a request for authorization to install and launch the version of the application in the launch user interface. After receiving authorization to install and launch the version of the application, the code for the version of the application can be downloaded, installed, and launched.
[0042] In one or more specific implementations, if the first bucket does not include an application or one or more versions of an application associated with a URL, the electronic device 110 can provide a hash of one or more prefixes of the URL to a remote server (e.g., a registration server), the hash being obtained by progressively removing path or query component suffixes from the URL. For example, in one or more specific implementations, before directly navigating to the URL using a web browser, a hash of one or more prefixes of the URL can be provided to the remote server to obtain an additional bucket of information that includes an application identifier and / or an application applet identifier corresponding to the hash.
[0043] The electronic device 110 can determine that an application associated with the URL is not installed on the electronic device based on a local determination that the application installed on the device is not associated with the URL (e.g., using URL information stored at the electronic device for the installed application before determining whether any version of the application is available) or using an application identifier provided by the server (e.g., in the bucket).
[0044] In one or more specific implementations, the application applet and / or the associated application can be a registered application registered with a remote server (e.g., a registration server corresponding to one or more of the servers 120). Although the application and the application applet are described herein as examples of registered applications, other experiences that can be provided by the electronic device using registered code registered at the remote server and obtained using the operations described herein are also contemplated.
[0045] A registered application may have been previously registered with a server (e.g., by a developer of the application with a registration server). Registering an application may include providing a title, subtitle, and image of the application (e.g., which may be obtained as metadata from the registration server in a bucket and displayed to the user via their device in the case of a request for authorization to install and launch the application). Registering an application may also include providing a URL for the application, and / or providing, generating, and / or linking one or more encoded identifiers (e.g., QR codes, NFC codes, or other image-based codes) to the URL. Registering an application may also include providing the machine (e.g., binary or executable) code for the application to the server or another server (e.g., an application server corresponding to one or more other servers of server 130).
[0046] Providing a registered application obtained as described herein (e.g., using privacy-preserving operations without requiring user authentication) may provide a user of an electronic device with quick access to new device features (e.g., features not previously installed on the device to provide the user with a new experience such as application applets), which are customized for the user (e.g., for the user's current environment, actions, or location) and are high-quality, secure applications.
[0047] In one or more specific embodiments, the time for providing user access to functions of a registered application such as an application applet may be reduced by obtaining the code (e.g., binary code) for the registered application while requesting authorization from the user to install and launch the registered application. For example, a server such as server 120 may provide the binary code for the registered application (e.g., the binary code for an application applet or other experience associated with the registered application) to the user device in a first set of prefetched metadata (e.g., metadata including the registered title, subtitle, and image to be included in a request for user authorization to install and launch the application applet or other experience, as described in further detail below in conjunction with Figure 3 In this way, the binary code may be downloaded while the user is viewing the authorization request. When the user accepts the authorization request, the device may then obtain / receive one or more keys from the server (e.g., the same server or another server) for unpacking and installing the binary code that has already been downloaded.
[0048] In various scenarios, when a user clicks on a link (e.g., a link on a web page, in an email or text message, or a link within another application running on the electronic device 110 such as a social media application, a voice-activated assistant application, or any other application), when the user scans a code associated with the store 202 and / or a specific location (e.g., using the camera or NFC component of the electronic device), and / or based on the location of the electronic device 110 (e.g., when the electronic device 110, the local server 120L at the store 202, and / or the remote server 120R determine that the electronic device 110 is at or near the store 202 using geolocation operations and / or one or more wireless beacons), a Uniform Resource Locator (URL) for an application is obtained.
[0049] In one example, the user may click on a link for a web page associated with the store 202 (or click on a link within that web page or another web page) using a browser on the electronic device 110, and the link maps (e.g., based on a mapping between an application identifier and a URL that has been previously registered with the server 120, for example) to an application associated with the store 202. In other examples, the user may select or otherwise choose to open a link provided from another application running on the electronic device (e.g., a geographic map application) or provided in a message or email.
[0050] In another example, the user may use the camera or other sensors of the electronic device 110 to scan a code, such as a barcode or QR code associated with the store, and obtain a Uniform Resource Locator that can be obtained by the electronic device based on the scanned code. For example, the electronic device 110 may directly derive the URL from the QR code, or may communicate with the local server 120L and / or the remote server 120R to obtain the URL based on the code.
[0051] In Figure 2 the example, the environment 200 includes a QR code 208 at the point of sale 206 of the store 202 and a QR code 210 at the entrance 212 of the store 202. The QR code 208 and the QR code 210 may be the same QR code, or may be different QR codes. For example, in one particular implementation, the QR code 208 may be a QR code associated with the point of sale 206, which causes the electronic device 110 to obtain a version of the application for the store 202 that includes only payment functionality. The QR code 210 may be a QR code associated with the entrance 212 to the store 202, which causes the electronic device 110 to obtain a version of the application for the store 202 that includes only online ordering functionality or includes both online ordering functionality and payment functionality.
[0052] In another example, the electronic device 110 can communicate with one or more access points such as the wireless access point 204 to determine the location of the electronic device 110 at or near the location of the store 202. The electronic device 110 can communicate with the local server 120L and / or the remote server 120R associated with the store 202 to determine a network identifier such as a URL for obtaining an application associated with the store 202 based on the location of the electronic device 110 at or near the store.
[0053] In one or more specific embodiments, the environment 200 allows the electronic device 110 to determine its location based on one or more positioning technologies. Examples of such positioning technologies include, but are not limited to, global navigation satellite systems (GNSS), wireless access point technology (e.g., based on the time of arrival, angle of arrival, and / or signal strength of signals received from wireless access points at known locations), cellular phone signal positioning, Bluetooth signal positioning, and / or image recognition positioning. Additionally, the electronic device 110 can implement an inertial navigation system (INS) that uses one or more device sensors (e.g., motion sensors such as accelerometers, gyroscopes) to calculate device state (e.g., position, orientation, and speed) to supplement the position data provided by the above positioning technologies.
[0054] The environment 200 can facilitate providing one or more temporary versions and / or simplified functional versions of an application for the electronic device 110 based on determining that the location of the electronic device 110 is within the store 202 or within a threshold distance of the store 202. Examples of the store 202 include, but are not limited to, retail stores, sit-down restaurants, drive-thru restaurants, showrooms, self-service machines, gas stations, museums, amusement parks, public markets, tourist landmarks, indoor shopping malls, outdoor shopping malls, stadiums, music venues, or any recognizable location, such as any location that can be enclosed by a geofence.
[0055] In Figure 2 the example, the electronic device 110 is located outside the entrance 212 of the store 202. However, the user can travel, for example, by a vehicle (e.g., car, motorcycle, bicycle) located within the threshold distance of the store 202. For example, if the store 202 is a drive-thru restaurant, the user may be traveling through the drive-thru in a car, which is at a predetermined position and distance relative to the physical restaurant.
[0056] In addition to contributing to the location solution of the electronic device 110, the wireless access point 204 can also be used to connect the electronic device 110 to a network, such as a local area network, a private network (e.g., an intranet associated with the local server 120L), and / or a public network (e.g., the Internet). For example, in one or more specific embodiments, the wireless access point 204 can connect the electronic device 110 to an intranet associated with the store 202 and / or the local server 120L to obtain the URL of an application or the version of an application. Alternatively or in addition, one or more of the wireless access points, such as the wireless access point 204, can connect the electronic device 110 to the remote server 120R (e.g., via the Internet).
[0057] Various examples are described herein in connection with applications associated with stores and / or retailers. However, it should be understood that the present disclosure is applicable to any application having a version that is immediately available (e.g., without authentication) on the electronic device 110, such as a temporary version of the application and / or a simplified functionality version of the application.
[0058] Figure 3 An example is shown in which (e.g., to provide immediate access to the version of an application not installed on the electronic device 110) the code for a small program for an application (e.g., a simplified functionality version or a temporary version of the application), such as executable code or binary code (e.g., encrypted binary code), can be downloaded to the electronic device 110 when the electronic device 110 prompts the user for authorization to install and launch the application small program (e.g., "application applet 1") (e.g., from the server 120).
[0059] In Figure 3 's example, the electronic device 110 may have obtained a URL for an application (e.g., an application associated with a store such as the store 202) (e.g., a URL associated with the server 120, which can be the local server 120L or the remote server 120R) based on a link to the application (or content associated with the application such as video content associated with a media player application or menu content associated with a restaurant application or a delivery service application), a scanned code, and / or based on the location of the electronic device. In Figure 3 's example, when the electronic device 110 provides a request 300 for authorization to install and launch the application small program, the electronic device 110 has already started downloading the code (e.g., binary code or other executable code such as "application applet 1 binary code").
[0060] In Figure 3In the example of, request 300 includes text stating "Do you want to install and launch application applet 1". However, this is merely illustrative and other text and / or graphical information may be used for this request. For example, request 300 may also include information for application applet 1 provided to server 120 (e.g., a registration server) during a registration event for application applet 1, such as a title, subtitle, and / or image for application applet 1. As another example, request 300 may include a request for location confirmation (e.g., a request to access the location information of the device). The request for location confirmation may include, for example, an option to opt out of location sharing for electronic device 110, which may prevent access to application applet 1 if this option is selected.
[0061] In Figure 3 the example of, optional option 302 (e.g., a "Yes" button) for authorizing the installation and launch of an application applet and optional option 304 (e.g., a "No" button) for denying the installation and launch of the application applet are provided to the user. In Figure 3 the example of, optional option 302 and optional option 304 are virtual buttons set on the touch screen of electronic device 110. However, this is merely illustrative, and the user may provide or deny authorization in various other ways (e.g., by voice input to electronic device 110 and / or using the keypad, physical buttons, or other input components of electronic device 110). In one or more specific embodiments, request 300 (e.g., and / or another request provided after installing the application applet) may include a request for permission to provide push notifications using electronic device 110 (e.g., within a period of time after installing the application applet or after the last launch of the application applet, such as several hours or days).
[0062] In one or more specific embodiments, the push notification may be a location-based notification. In one or more specific embodiments, request 300 may include a request to allow access to the location of the electronic device (e.g., a one-time access) and / or a request to confirm the location of the electronic device (e.g., to confirm the location determined by the electronic device such as using geolocation and / or beacon operations).
[0063] For example, a user of electronic device 110 may tap or scan the electronic device 110 on or near a tag at a specific location (e.g., an NFC or RFID tag, such as a specific implementation of the wireless access point 204 of store 202) or a QR code or other coded identifier associated with the specific location. In response to the tap or scan, the electronic device 110 may identify an application applet or other experience (e.g., using a URL obtained via the tap or scan), and provide a request to confirm the location of the electronic device 110 (e.g., by providing a checkbox that allows the user to opt out of location sharing) (e.g., as part of a request for authorization 300 and / or as an initial request prior to this request for authorization). The request for authorization and / or location sharing may include instructional information describing the applet in one or more specific implementations.
[0064] Once authorization is received by the electronic device (e.g., including authorization providing location confirmation), the application applet may be installed and launched. Before or after launch, the application applet may perform a location check (e.g., if location confirmation has been approved). Performing the location check may include obtaining (e.g., from server 120) a region within which installation and / or running of the application applet is permitted (e.g., the known coordinates of the tapped tag or QR code and a radius around those coordinates, proximity to a known Bluetooth beacon, or another geographical description of the region). The known coordinates and the geofence around those known coordinates may be obtained from the information bucket obtained when the request 300 is displayed or may be obtained in a separate operation. In one or more specific implementations, the provided region may include a maximum radius (e.g., two kilometers) and / or a minimum radius (e.g., 10 meters). Since a full application (e.g., a registered application) may have multiple associated application applets (e.g., associated with different locations and / or different functions for the application), different regions (e.g., different sizes such as different radii) may be provided for different tags or QR codes for the same application.
[0065] In one or more specific implementations, in response to receiving a region (e.g., coordinates and radius) from the server, the application applet may obtain the location of the device, compare the location of the device with the received region, and return a binary response to the server indicating whether the electronic device 110 is within the region defined by the server (e.g., whether the device is in the desired location corresponding to the tapped tag or scanned code). In response to receiving a response indicating that the electronic device is within the region, the server may provide a key or other information for accessing the application applet and / or server data for running the application applet. In one or more specific implementations, a rate limit may be applied to the application applet. For example, the application applet may be restricted to providing only one location confirmation response each time a specific location-related tag or code is tapped or scanned.
[0066] It should also be understood that location confirmation can be performed on the device (e.g., for additional privacy purposes without providing binary or other location-based responses to the server). For example, the information bucket obtained from the server using a hash of a portion of the URL may include the location coordinates of the tapped NFC code or the scanned QR code and the associated threshold proximity (e.g., geofence) information. The device can then determine whether its current location is within the threshold proximity location coordinates before requesting a key or otherwise communicating with the server.
[0067] When the electronic device 110 receives authorization for installing and launching an application applet (e.g., via selection of the optional option 302), the code that has been downloaded during the authorization request can be installed and / or launched by the electronic device 110. Installing and launching the downloaded binary code can include requesting a device-specific key for the downloaded binary code, which is independent of the user or the user's account, in response to receiving the authorization, and using the key to install the downloaded binary code. In one or more specific implementations, the key can be downloaded before receiving the authorization.
[0068] In an exemplary use case, a customer of the store 202 can bring an electronic device 110 that does not have the application associated with the store 202 installed to the point of sale 206. In one or more specific implementations, the electronic device 110 can detect (e.g., via communication with the GPS system and / or via communication with the wireless access point 204) that the electronic device is at or near the POS. The electronic device 110 can also or alternatively be used to scan a code such as the QR code 208 associated with the point of sale 206. In response to detecting the electronic device 110 at or near the point of sale 206, in response to scanning the QR code 208, and / or in response to selection of a link associated with the store 202, the electronic device 110 can begin downloading a temporary and / or simplified functional version or an applet binary code of the application for the store 202, which, for example, only includes the payment function of the application. During the download, the electronic device 110 can provide the request 300 and the optional options 302 and 304 to the user (e.g., using the touch-sensitive display of the electronic device 110). In response to selection of the optional option 302, the electronic device can launch an application applet with a payment function and display a user interface (UI) of the application applet to allow the user to utilize the application applet to pay for goods or services.
[0069] At a later time, such as after the user leaves the store 202 with the electronic device 110, after not using the installed application applet for a period of time, when the user closes the application applet, and / or when the user downloads and installs a full application associated with the application applet and / or the store 202, the code for the application applet can be deleted from the electronic device 110 (e.g., without further user interaction such as an explicit request to delete the code). In a scenario where the code for the application applet (e.g., binary code) is deleted in conjunction with the installation of the full application, the application data generated by the application applet and stored on the electronic device can be maintained for use by the full application. For example, the payment history, payment card information, user preferences, etc. stored by the application applet can be stored at a location on the electronic device 110 that can later be accessed by the full application after the application applet has been deleted from the electronic device.
[0070] It should also be understood that, in order to further enhance the immediate access to one or more application applets of an application, the code for one or more application applets such as binary code and / or executable code can be pre-loaded onto the electronic device in anticipation of the potential expectations of the user for the application applet. This pre-loading of the code for one or more application applets can be performed based on machine learning of user preferences and / or crowdsourced information. For example, when the electronic device is approaching a venue and / or the electronic device is located inside or near the venue, a server (such as server 120) can determine that users of many electronic devices are installing and launching an application applet with a map function for a specific venue (e.g., museum, music concert venue, sports event venue, theme park, etc.). The server can determine that the electronic device 110 of a new user is approaching the venue or is located inside or near the venue and, in response, provide the code for the same application with the map function to the electronic device 110 of the new user, even before the user arrives at the venue or receives a request (e.g., request 300) to authorize the installation and launch of the application applet. In this example, the authorization request can be provided by the electronic device 110 when the code has been downloaded, or later when the user scans a code at the venue or enters information indicating the need for a map function (e.g., enters a search request associated with the venue or a location inside the venue, such as using a search application installed on the device that is not a spatial or geographic mapping application and does not have spatial or geographic mapping capabilities).
[0071] Although Figure 3Depicts an example of requesting user authorization before installing and launching an application applet. However, in other cases, the application applet can be installed and launched without a specific authorization request (e.g., and without authentication). For example, in one or more specific embodiments, when the electronic device 110 reads a QR code (such as QR code 208 or QR code 210) (e.g., instead of when the user provides authorization, such as by clicking "Install" or "Open" the application applet), the application applet can be downloaded, installed, and launched. For example, when read by the electronic device 110, the QR code can cause the electronic device 110 to perform a deep link and installation (e.g., and launch) operation as a single action. For example, scanning a QR code can cause a simplified functional version of the application to automatically download, install, and launch a user interface with content corresponding to the scanned QR code. In one or more specific embodiments, the user interface can be displayed so as to appear floating above the content previously displayed on the display screen of the electronic device.
[0072] Figure 4 Illustrates a flowchart of an exemplary process for providing a version of an application on an electronic device according to one or more specific embodiments. For purposes of explanation, the process 400 is mainly described herein with reference to Figure 1 the electronic device 110 and the server 120. However, the process 400 is not limited to Figure 1 the electronic device 110 and the server 120, and one or more blocks (or operations) of the process 400 can be performed by one or more other components of the server 120 or the electronic device 110 and / or by other suitable devices such as the electronic device 115. Further for purposes of explanation, the blocks of the process 400 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 400 can occur in parallel. In addition, the blocks of the process 400 do not have to be executed in the order shown, and / or one or more blocks of the process 400 do not have to be executed and / or can be replaced by other operations.
[0073] At block 402, an electronic device such as the electronic device 110 receives a Uniform Resource Locator (URL) associated with an application (e.g., a full application or a full version of an application). When installed on the electronic device, the application can provide multiple functions for the electronic device. Receiving the Uniform Resource Locator can include the electronic device scanning a QR code. Receiving the Uniform Resource Locator can include receiving a selection of a link (e.g., a link provided by another application running on the electronic device). Receiving the Uniform Resource Locator can include receiving the Uniform Resource Locator based on the location of the electronic device (e.g., as described above in connection with Figure 2 ).
[0074] At block 404, the electronic device determines that the application is not installed on the electronic device.
[0075] At block 406, the electronic device determines that at least one version of an application is available without user authentication based on at least a first portion of a uniform resource locator. The version of the application can be a reduced functionality version of the application, which has fewer features than the full version of the application. The version of the application can be a temporary version of the application, which has fewer features than the full version of the application. The version of the application can be referred to herein as an application applet or applet. Determining that the version of the application is available can include providing a URL or a hash of the URL to a Bloom filter at the electronic device and / or providing a portion of the hash of the URL or a hash of a portion of the URL to one or more remote servers such as server 120 (e.g., as described above in connection with Figure 2 and Figure 3 the registration server described).
[0076] At block 408, the electronic device can provide information associated with the uniform resource locator to one or more remote servers such as server 120. The information associated with the uniform resource locator can include an identifier of at least the version of the application (e.g., an identifier of the application and / or one or more identifiers of one or more reduced functionality versions or temporary versions of the application). In response to providing a portion of the hash of the uniform resource locator or a hash of a portion of the uniform resource locator to the one or more remote servers, in a privacy protection operation, information associated with the URL can be obtained from the one or more remote servers.
[0077] At block 410, the electronic device can receive code for at least the version of the application from the one or more remote servers (e.g., from the same server that provided the information associated with the URL or from another server such as an application server, etc.) and in response to the information. The code for the version of the application can be less than the code for the full application. For example, to help reduce the time to download, install, and launch the version of the application, the code for the version of the application can be less than 10 megabytes, less than 20 megabytes, less than 50 megabytes, less than 100 megabytes, or less than any size of the code for the full application. In one or more specific implementations, the code includes binary code for the version of the application. In one or more specific implementations, the code can be encrypted binary code (e.g., digital rights management (DRM) encrypted binary code).
[0078] At block 412, the electronic device can provide a request for user authorization from the user (e.g., as Figure 3The request 300) shown to install and start at least that version of the application. In one or more specific embodiments, a request for user authorization is provided at block 412 during the receipt of the code at block 410.
[0079] At block 414, the electronic device may receive user authorization (e.g., by selecting the optional option 302 to authorize the installation and start). In one or more specific embodiments, user authorization is received without receiving user authentication. User authentication may include providing the user's identification information and / or the user's security information (e.g., password) associated with the user's account to a remote server such as server 120. User authorization may be a permission provided independently of information associated with any specific user.
[0080] At block 416, in response to receiving user authorization, the electronic device may install and start at least that version of the application. In one or more specific embodiments, installing and starting that version of the application may include requesting a key for the binary code from the one or more remote servers in response to receiving user authorization; receiving the key in response to the request; and using the key to install and start at least that version of the application. In embodiments where the binary code is encrypted binary code (such as DRM-encrypted binary code), the key may be a device-specific decryption key that is independent of the user.
[0081] In one or more specific embodiments, the electronic device 110 may also limit the rate and / or amount of data usage according to the version of the application. For example, the electronic device 110 may monitor the data usage of at least that version of the application for a predetermined amount of time (e.g., one minute, several minutes, less than one minute) after starting at least that version of the application; and if the data usage exceeds a predetermined rate during the predetermined amount of time, terminate the operation of at least that version of the application. As another example, in one or more specific embodiments, the electronic device 110 may limit the use of the version of the application based on the user's location (e.g., when the user leaves the store 202, prevent or limit the use of the version of the application).
[0082] In one or more specific embodiments, the electronic device may also pre-load at least one simplified functional version of at least one application from the one or more remote servers to the electronic device based on the location of the electronic device 110 and / or crowdsourced information from other electronic devices associated with that location (e.g., when it is expected that the user needs or desires one or more sub-functions of one or more applications).
[0083] In one or more embodiments, the code for the version of the application can be automatically deleted after the user finishes using the version of the application, without user input. For example, the electronic device 110 can identify that the non-usage period of the version of the application exceeds a threshold period (e.g., a period of one hour, one day, one week, ten days, or one month); and delete the code for the version of the application from the electronic device. Deleting the code can include automatically deleting the code when the non-usage period exceeds the threshold period, and no user interaction is required.
[0084] In one or more embodiments, when the complete application corresponding to the version of the application is installed, the code for the version of the application can be deleted, such that the temporary and / or simplified functional version of the application is replaced by the complete application. In one or more embodiments, the complete application can be obtained in response to selecting an option provided within the version of the application to do so.
[0085] Figure 5 A flowchart illustrating an exemplary process for replacing a version of an application (e.g., an application applet or a simplified functional version or a temporary version of an application) with a complete application (e.g., a complete version of the application) in accordance with one or more embodiments is shown. For purposes of explanation, the process 500 is mainly described herein with reference to Figure 1 the electronic device 110 and the server 120. However, the process 500 is not limited to Figure 1 the electronic device 110 and the server 120, and one or more blocks (or operations) of the process 500 can be performed by one or more other components of the server 120 or the electronic device 110 and / or by other suitable devices such as the electronic device 115. Further for purposes of explanation, the blocks of the process 500 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 500 can occur in parallel. In addition, the blocks of the process 500 need not be performed in the order shown, and / or one or more blocks of the process 500 need not be performed and / or can be replaced by other operations.
[0086] At block 502, an electronic device such as the electronic device 110 receives a request to obtain the complete application (e.g., the complete application corresponding to an application applet installed on the electronic device). When the user launches an additional application for accessing a remote application store or repository (e.g., at the server 120) and locates the complete application in the application store, the electronic device 110 can receive the request to obtain the complete application; and select the complete application for download and installation.
[0087] At block 504, the electronic device stores data generated during operation of the simplified functional version of the application (e.g., in a storage device local to the electronic device or in a cloud storage device such as a remote server (such as server 120)). The stored data can include user activity data, purchase history data, location history data, messaging history data, calendar data, and / or any other data generated by the simplified functional version of the application. Application access to the stored data generated by the simplified functional version can be blocked for non-full applications. In one or more particular implementations, after the simplified functional version of the application has been installed on the electronic device, user authentication information (e.g., for authentication with server 120) can be provided via the simplified functional version of the application (e.g., to enhance the performance of the simplified functional version of the application, such as to allow for longer or remote storage of data generated by the simplified functional version of the application, and / or to access other user data stored at remote server 120 or on electronic device 110 associated with the user account).
[0088] At block 506, the electronic device deletes the simplified functional version of the application from the electronic device. The electronic device can delete the simplified functional version of the application without receiving user input that explicitly requests or indicates deletion.
[0089] At block 508, the electronic device downloads and installs the full application from the one or more remote servers to the electronic device. In one or more particular implementations, the electronic device requests the user's user account authentication information for receiving the full application before downloading and installing the full application. The request for authentication information can be generated by an additional application for accessing a remote application store. The request for authentication information can be provided when the additional application is launched and / or when a request to obtain the full application is received. The additional application can use the received authentication information to authenticate the user locally at the electronic device, or the additional application can provide the authentication information or information associated with the authentication information to the remote server hosting the application store to authenticate the user.
[0090] At block 510, the electronic device provides access to the stored data via the full application. The full application can then provide user-specific functionality based on the stored data, even if the user has never used the full application.
[0091] In one or more embodiments, the electronic device can also generate an icon of a full application that can be selected by a user to launch the full application. This version of the application can be provided for the user to use without providing an associated selectable icon (e.g., at least a simplified functional version of the application does not have an associated selectable icon). The icon can be set, for example, on the home screen of the electronic device. The icon can be created at the electronic device or can be obtained from the remote server 120.
[0092] Figure 6 FIG. 600 is a flow chart showing an exemplary process for providing a temporary version of an application on an electronic device according to one or more embodiments. For purposes of explanation, the process 600 is mainly described herein with reference to Figure 1 the electronic device 110 and the server 120. However, the process 600 is not limited to Figure 1 the electronic device 110 and the server 120, and one or more blocks (or operations) of the process 600 can be performed by one or more other components of the server 120 or the electronic device 110 and / or by other suitable devices such as the electronic device 115. Further for purposes of explanation, the blocks of the process 600 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 600 can occur in parallel. In addition, the blocks of the process 600 do not have to be executed in the order shown, and / or one or more blocks of the process 600 do not have to be executed and / or can be replaced by other operations.
[0093] At block 602, an electronic device such as the electronic device 110 receives a uniform resource locator for an application. Receiving the uniform resource locator can include the electronic device scanning a QR code. Receiving the uniform resource locator can include receiving a selection of a link (e.g., a link provided by another application running on the electronic device). Receiving the uniform resource locator can include receiving the uniform resource locator based on the location of the electronic device (e.g., as described above in connection with Figure 2 ). The temporary version of this application can be referred to herein as an application applet or applet.
[0094] At block 604, using the uniform resource locator, the electronic device receives a temporary version of the application, which includes fewer functions than the full version of the application. The electronic device can also receive authorization from a user of the electronic device to obtain the temporary version of the application before obtaining the temporary version of the application. Authorization from the user can be received in response to a request for authorization provided by the electronic device, as described in the example above in connection with Figure 3 .
[0095] In one or more embodiments, authorization is received from a user without user authentication. In one or more embodiments, the electronic device determines that the full version of the application is not installed on the electronic device before receiving the temporary version of the application. In one or more embodiments, the electronic device determines (e.g., using a Bloom filter at the electronic device) that a URL is associated with an application identifier and determines that a temporary version of the application is available (e.g., by providing a hash of a portion of the URL or a portion of the hash of the URL to the server and locally sorting the information received from the server in response to the hash of the portion of the URL or the portion of the hash of the URL).
[0096] In one or more embodiments, the electronic device may also receive authentication information of the user at the electronic device. The electronic device may use the authentication information to obtain the full version of the application, delete the temporary version of the application from the electronic device, and install the full version of the application on the electronic device. The electronic device may also provide access to data generated by the temporary version of the application to the installed full version of the application before deleting the temporary version of the application (e.g., as described above in connection with Figure 5 ).
[0097] Various examples for obtaining an applet (e.g., a temporary version of an application with reduced functionality relative to a full application) are described herein. However, it should be understood that the operations for obtaining, installing, and launching the applets described herein can be applied to obtain any suitable application or other experience that can be provided by an electronic device. For example, code such as binary or executable code can be stored at a server (e.g., server 120) as connection registration information for the application or experience. The registration information may include a network identifier such as a URL described herein, and information for display in an authorization request such as a title, subtitle, image, etc.
[0098] Figure 7 A flowchart of an exemplary process for obtaining a registered application of an electronic device, such as for obtaining an experience registered with a remote server that will be provided by the electronic device, in accordance with one or more embodiments is shown. For purposes of explanation, the process 700 is primarily described herein with reference to Figure 1 the electronic device 110 and the server 120 of Figure 1An electronic device 110 and a server 120, and one or more blocks (or operations) of process 700 may be performed by one or more other components of server 120 or electronic device 110 and / or by other suitable devices such as electronic device 115. Further for purposes of explanation, the blocks of process 700 are described herein as occurring sequentially or linearly. However, multiple blocks of process 700 may occur in parallel. In addition, the blocks of process 700 need not be performed in the order shown, and / or one or more blocks of process 700 need not be performed and / or may be replaced by other operations.
[0099] At block 702, the electronic device may receive a Uniform Resource Locator (URL). For example, receiving a Uniform Resource Locator may include the electronic device scanning a code, such as a QR code or a code embedded in another visual medium, such as an image that does not appear to the human eye to include a code, or a code transmitted and / or broadcast wirelessly via NFC or Bluetooth. The code may be, for example, an encoded arrangement of the color, shape, and / or other features of the image. Receiving a Uniform Resource Locator may include receiving a selection of a link (e.g., a link provided by another application running on the electronic device, such as a map application or a browser application). Receiving a Uniform Resource Locator may include receiving a Uniform Resource Locator based on the location of the electronic device (e.g., via NFC or other location-based communication with the electronic device, as described above in connection with Figure 2 described).
[0100] At block 704, the electronic device may generate a first hash of the Uniform Resource Locator. The first hash of the URL may be a hash of the entire URL.
[0101] At block 706, the electronic device may use the first hash of the Uniform Resource Locator to determine whether the Uniform Resource Locator is associated with any of a plurality of applications that can be obtained from one or more remote servers (e.g., from an application server). Using the first hash of the Uniform Resource Locator to determine whether the Uniform Resource Locator is associated with any of a plurality of applications that can be obtained from the one or more remote servers may include providing the first hash of the Uniform Resource Locator to a Bloom filter. The Bloom filter may be pre-stored in the electronic device or may be obtained from a remote server (e.g., server 120) when the Uniform Resource Locator is obtained.
[0102] In response to determining at block 706 that a Uniform Resource Locator (e.g., "yes") is associated with any one of the applications, at block 710, the electronic device may generate a second hash of the first part of the Uniform Resource Locator. The first part of the Uniform Resource Locator may be, for example, a prefix of the Uniform Resource Locator. At block 712, the electronic device may use the second hash of the first part to obtain, from the one or more remote servers (e.g., the same remote server or another remote server such as a registration server), a data set (e.g., a collection of information or a bucket of information) that includes data for at least two of the applications. At block 714, the electronic device may determine whether the Uniform Resource Locator is included in the data set. At block 716, in response to determining at block 714 that the Uniform Resource Locator (e.g., "yes") is included in the data set, the electronic device may install, at the electronic device, a specific one of the applications that corresponds to the Uniform Resource Locator. Installing, at the electronic device, a specific one of the applications that corresponds to the Uniform Resource Locator may include installing data in the data set for the specific one of the applications, or may include downloading and installing additional data for the specific one of the applications (e.g., downloading and installing metadata and / or binary code for the specific one of the applications from another remote server such as an application server).
[0103] In response to determining at block 714 that the Uniform Resource Locator is not included (e.g., "no") in the data set, or in response to determining at block 706 that the Uniform Resource Locator is not associated with any one of the applications (e.g., "no"), at block 718, the electronic device may use a browser at the electronic device to navigate to the Uniform Resource Locator.
[0104] In one or more specific implementations, in response to determining (at block 706, such as using a Bloom filter) that the Uniform Resource Locator is not associated with any one of the applications, and before navigating to the Uniform Resource Locator using a browser at the electronic device at block 718, the electronic device may generate a third hash of a truncated Uniform Resource Locator (e.g., by removing a path or query component suffix from the URL to generate a hash of the URL prefix), provide the third hash to the Bloom filter, and use the Bloom filter and the third hash of the prefix of the URL to determine whether the Uniform Resource Locator is associated with any one of the applications (e.g., by determining whether the third hash is associated with any one of the plurality of applications based on providing the third hash to the Bloom filter). The electronic device may perform one or more successive path or query component suffix removals and filtering of the URL before determining at block 706 that the Uniform Resource Locator is not associated with any one of the applications.
[0105] In one or more embodiments, in response to determining (at block 714) that a Uniform Resource Locator (URL) is not included in the dataset, and before navigating (at block 718) to the URL using a browser at the electronic device, the electronic device may generate a third hash of a subset of the first part of the URL (e.g., by removing a path or query component suffix from the URL to generate a hash of the URL prefix), obtain, using the third hash of the subset of the first part, a second dataset for at least two applications in the application from the one or more remote servers, and determine whether the URL is included in the second dataset. The electronic device may be configured to perform one or more successive path or query component suffix removals before determining (at block 714) that the URL is not included in the second dataset. In response to determining that the URL is included in the second dataset (or in the first dataset), the electronic device may install a particular one of the applications corresponding to the URL at the electronic device (e.g., at block 716). In this way, false positives due to additional information in the URL (e.g., variables, parameters, etc.) may be avoided.
[0106] In one or more embodiments, the URL may include a Hypertext Transfer Protocol (HTTP) address that includes an address of a remote server (e.g., “codes.server.com”), an identifier of a particular one of the applications in the application (e.g., “experienceID”), and one or more variables associated with the particular one of the applications in the application (e.g., {arguments}). The electronic device may identify the particular one of the applications in the application corresponding to the URL using the identifier in the URL (e.g., at block 714). The electronic device may also partially initiate the particular one of the applications in the application by providing at least one of the one or more variables in the URL to the particular one of the applications in the application.
[0107] The present disclosure recognizes that the use of such personal information data in the techniques of the present invention can be used to benefit users. For example, personal information data may be used to provide application applets to a user's electronic device based on the user's location, user's preferences, user's activities, and / or crowdsourced information of the user or other users.
[0108] The present disclosure contemplates that entities responsible for collecting, analyzing, disclosing, transmitting, storing, or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, such entities will be expected to implement and consistently apply privacy practices generally recognized as meeting or exceeding those required by industry or government for maintaining user privacy. Such information regarding the use of personal data should be prominently and conveniently accessible to users and should be updated as the collection and / or use of the data changes. A user's personal information should be collected only for legitimate uses. Additionally, such collection / sharing should occur only after receiving user consent or other legitimate bases as provided for in applicable law. Further, such entities should consider taking any necessary steps to safeguard and secure access to such personal information data and to ensure that others with access to the personal information data comply with their privacy policies and procedures. Additionally, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices. Further, policies and practices should be tailored to the specific types of personal information data being collected and / or accessed and should be applied to applicable laws and standards, including specific considerations unique to jurisdictions that may impose higher standards. For example, in the United States, the collection or acquisition of certain health data may be governed by federal and / or state laws such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly.
[0109] Notwithstanding the foregoing, the present disclosure also contemplates embodiments in which users selectively block the use or access to personal information data. That is, the present disclosure contemplates that hardware elements and / or software elements may be provided to prevent or block access to such personal information data. For example, in the case of providing an application applet, the subject technology may be configured to allow a user to select "opt-in" or "opt-out" of participating in the collection and / or sharing of personal information data during registration for the service or at any time thereafter. In addition to providing "opt-in" and "opt-out" options, the present disclosure contemplates providing notices relating to the access or use of personal information. For example, a user may be notified at the time of downloading an application that their personal information data will be accessed and then reminded again just prior to the personal information data being accessed by the application.
[0110] In addition, it is an object of the present disclosure to manage and process personal information data to minimize the risk of inadvertent or unauthorized access or use. The risk can be minimized by restricting data collection and deleting data once it is no longer needed. In addition, and when applicable, including in certain health-related applications, data de-identification can be used to protect the privacy of users. De-identification can be facilitated by removing identifiers, controlling the amount or specificity of the data stored (e.g., collecting location data at the city level rather than at the address level or at a level insufficient for facial recognition), controlling how the data is stored (e.g., pooling data among users), and / or other methods such as differential privacy, as appropriate.
[0111] Accordingly, while the present disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, the present disclosure also contemplates that the various embodiments may also be implemented without access to such personal information data. That is, the various embodiments of the inventive technology will not fail to function properly due to the lack of all or a portion of such personal information data.
[0112] In one or more specific implementations, application applets are accessible to an application installed on an electronic device. For example, based on the location of the electronic device, the scanning of code by the electronic device, and / or the power level of the electronic device, an application applet that has only a subset of the functions of the installed application can be launched.
[0113] Figure 8 An electronic system 800 is shown that can be used to implement one or more specific implementations of the present subject matter. The electronic system 800 can be Figure 1 the illustrated electronic device 110 and / or the server 120 and / or can be a part thereof. The electronic system 800 can include various types of computer-readable media and interfaces for various other types of computer-readable media. The electronic system 800 includes a bus 808, one or more processing units 812, a system memory 804 (and / or cache), a ROM 810, a permanent storage device 802, an input device interface 814, an output device interface 806, and one or more network interfaces 816, or subsets and variations thereof.
[0114] The bus 808 generally represents all system buses, peripheral buses, and chipset buses that communicatively connect many internal devices of the electronic system 800. In one or more specific implementations, the bus 808 communicatively connects one or more processing units 812 to the ROM 810, the system memory 804, and the permanent storage device 802. The one or more processing units 812 retrieve instructions to be executed and data to be processed from these various memory units in order to execute the processes of the present subject matter disclosure. In different specific implementations, the one or more processing units 812 can be a single processor or a multi-core processor.
[0115] The ROM 810 stores static data and instructions required for one or more processing units 812 and other modules of the electronic system 800. On the other hand, the permanent storage device 802 can be a read-write memory device. The permanent storage device 802 can be a non-volatile memory unit that stores instructions and data even when the electronic system 800 is turned off. In one or more specific embodiments, a mass storage device (such as a magnetic disk or an optical disk and its corresponding disk drive) can be used as the permanent storage device 802.
[0116] In one or more specific embodiments, a removable storage device (such as a floppy disk, a flash drive, and its corresponding disk drive) can be used as the permanent storage device 802. Like the permanent storage device 802, the system memory 804 can be a read-write memory device. However, different from the permanent storage device 802, the system memory 804 can be a volatile read-write memory, such as a random access memory. The system memory 804 can store any of the instructions and data that one or more processing units 812 may need during operation. In one or more specific embodiments, the processes disclosed in this subject matter are stored in the system memory 804, the permanent storage device 802, and / or the ROM 810. One or more processing units 812 retrieve the instructions to be executed and the data to be processed from these various memory units in order to execute the processes of one or more specific embodiments.
[0117] The bus 808 is also connected to the input device interface 814 and the output device interface 806. The input device interface 814 enables a user to transmit information to the electronic system 800 and select commands. Input devices that can be used with the input device interface 814 can include, for example, an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"). The output device interface 806 can, for example, enable the display of images generated by the electronic system 800. Output devices that can be used with the output device interface 806 can include, for example, a printer and a display device, such as a liquid crystal display (LCD), a light emitting diode (LED) display, an organic light emitting diode (OLED) display, a flexible display, a flat panel display, a solid state display, a projector, or any other device for outputting information. One or more specific embodiments can include a device that serves as both an input device and an output device, such as a touch screen. In these specific embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and the input received from the user can be in any form, including acoustic, voice, or tactile input.
[0118] Finally, as Figure 8As shown, the bus 808 also couples the electronic system 800 to one or more networks and / or to one or more network nodes via one or more network interfaces 816, such as Figure 1 the electronic device 110 shown in Figure 1 . In this way, the electronic system 800 can be part of a computer network, such as a local area network (LAN), a wide area network ("WAN"), or an intranet, or can be part of a network of networks, such as the Internet. Any or all components of the electronic system 800 can be used in conjunction with the present disclosure.
[0119] According to aspects of the present disclosure, a method is provided that includes receiving, at an electronic device, a uniform resource locator associated with an application; determining, by the electronic device, that the application is not installed on the electronic device; determining, by the electronic device, based on at least a first portion of the uniform resource locator, that at least one version of the application is available without user authentication; providing, to one or more remote servers, information associated with the uniform resource locator; in response to the information, receiving, at the electronic device, code for at least the version of the application from the one or more remote servers; providing, by the electronic device, a request for user authorization to install and launch at least the version of the application from a user; receiving, by the electronic device, user authorization; and in response to receiving user authorization, installing and launching at least the version of the application.
[0120] According to aspects of the present disclosure, a method is provided that includes receiving, at an electronic device, a uniform resource locator for an application; and obtaining, by the electronic device, a temporary version of the application using the uniform resource locator, the temporary version including fewer features than a full version of the application.
[0121] According to aspects of the present disclosure, a non-transitory machine-readable medium is provided that includes code that, when executed by a processor, causes the processor to: receive, at an electronic device, a uniform resource locator associated with an application; determine, by the electronic device, that the application is not installed on the electronic device; determine, by the electronic device, based on at least a first portion of the uniform resource locator, that at least one version of the application is available without user authentication; provide, to one or more remote servers, information associated with the uniform resource locator; in response to the information, receive, at the electronic device, code for at least the version of the application from the one or more remote servers; provide, by the electronic device, a request for user authorization to install and launch at least the version of the application from a user; receive, by the electronic device, user authorization; and in response to receiving user authorization, install and launch at least the version of the application.
[0122] In accordance with aspects of the present disclosure, there is provided an apparatus that includes a memory and at least one processor configured to receive, at an electronic device, a uniform resource locator associated with an application; determine, by the electronic device, that the application is not installed on the electronic device; determine, by the electronic device, that at least one version of the application is available without user authentication based on at least a first portion of the uniform resource locator; provide information associated with the uniform resource locator to one or more remote servers; in response to the information, receive, at the electronic device, code for at least the version of the application from the one or more remote servers; provide, by the electronic device, a request for user authorization to install and launch at least the version of the application from a user; receive, by the electronic device, user authorization; and in response to receiving the user authorization, install and launch at least the version of the application.
[0123] In accordance with aspects of the present disclosure, there is provided a non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: receive a uniform resource locator at an electronic device; generate a first hash of the uniform resource locator; use the first hash of the uniform resource locator to determine whether the uniform resource locator is associated with any one of a plurality of applications obtainable from a remote server; in response to determining that the uniform resource locator is associated with any one of the plurality of applications: generate a second hash of a first portion of the uniform resource locator; use the second hash of the first portion to obtain a data set including data of at least two of the plurality of applications from the remote server; determine whether the uniform resource locator is included in the data set; and in response to determining that the uniform resource locator is included in the data set, install, at the electronic device, a particular one of the applications corresponding to the uniform resource locator; and in response to determining that the uniform resource locator is not included in the data set, navigate, at the electronic device, to the uniform resource locator using a browser; and in response to determining that the uniform resource locator is not associated with any one of the plurality of applications, navigate, at the electronic device, to the uniform resource locator using a browser.
[0124] In accordance with aspects of the present disclosure, a method is provided that includes receiving a Uniform Resource Locator (URL) at an electronic device; generating a first hash of the URL; using the first hash of the URL to determine whether the URL is associated with any one of a plurality of applications that can be obtained from a remote server; in response to determining that the URL is associated with any one of the plurality of applications: generating a second hash of a first portion of the URL; using the second hash of the first portion to obtain from the remote server a data set including data of at least two of the plurality of applications; determining whether the URL is included in the data set; and in response to determining that the URL is included in the data set, installing a specific one of the applications corresponding to the URL at the electronic device; and in response to determining that the URL is not included in the data set, navigating to the URL at the electronic device using a browser; and in response to determining that the URL is not associated with any one of the plurality of applications, navigating to the URL at the electronic device using a browser.
[0125] Specific implementations within the scope of the present disclosure may be partially or fully implemented using a tangible computer-readable storage medium (or multiple types of tangible computer-readable storage media) encoded with one or more instructions. The tangible computer-readable storage medium may also be substantially non-transitory.
[0126] A computer-readable storage medium may be any storage medium that can be read, written to, or otherwise accessed by a general or special-purpose computing device, including any processing electronics and / or processing circuitry capable of executing instructions. By way of non-limiting example, a computer-readable medium may include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. A computer-readable medium may also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash memory, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, racetrack memory, FJG, and Millipede memory.
[0127] In addition, a computer-readable storage medium may include any non-semiconductor memory, such as an optical disc storage device, a magnetic disk storage device, magnetic tape, or any other medium capable of storing one or more instructions. In one or more specific embodiments, a tangible computer-readable storage medium may be directly coupled to a computing device, while in other specific embodiments, a tangible computer-readable storage medium may be indirectly coupled to a computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.
[0128] Instructions may be directly executable or may be used to develop executable instructions. For example, instructions may be implemented as executable or non-executable machine code, or may be implemented as high-level language instructions that can be compiled to produce executable or non-executable machine code. In addition, instructions may also be implemented as data, or may include data. Computer-executable instructions may also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including, but not limited to, the number, structure, sequence, and organization of instructions may vary significantly without changing the underlying logic, functionality, processing, and output.
[0129] Although the foregoing discussion has primarily related to a microprocessor or multi-core processor that executes software, one or more specific embodiments are executed by one or more integrated circuits such as an ASIC or FPGA. In one or more specific embodiments, such integrated circuits execute instructions stored on the circuit itself.
[0130] Those skilled in the art will recognize that the various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or a combination of both. To illustrate this interchangeability of hardware and software, the various illustrative blocks, modules, elements, components, methods, and algorithms have been described generally in terms of functionality above. Whether such functionality is implemented as hardware or software depends upon the particular application and the design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application. The various components and blocks may be arranged differently (e.g., in a different order, or partitioned in a different manner) without departing from the scope of the subject technology.
[0131] It should be understood that the specific order or hierarchical structure of the blocks in the processes disclosed in the present invention is illustrative of exemplary methods. Based on design preference requirements, it should be understood that the specific order or hierarchical structure of the blocks in the process can be rearranged or all the blocks shown can be executed. Any of these blocks can be executed simultaneously. In one or more specific embodiments, multitasking and parallel processing may be advantageous. Additionally, the partitioning of the various system components in the above specific embodiments should not be construed as requiring such partitioning in all specific embodiments, and it should be understood that program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
[0132] As used in this specification and in any claims of this patent application, the terms "base station", "receiver", "computer", "server", "processor", and "memory" all refer to electronic devices or other technical devices. These terms exclude a person or a group of persons. For the purposes of this specification, the term "display" or "displaying" means displaying on an electronic device.
[0133] As used herein, the phrase "at least one of" after a series of items separated by the terms "and" or "or" in any item of the series modifies the list as a whole, rather than modifying each member of the list (i.e., each item). The phrase "at least one of" does not require selection of at least one from each of the items listed; rather, the phrase allows the meaning of including at least one from any one of the items and / or at least one from any combination of the items and / or at least one from each of the items. By way of example, the phrases "at least one of A, B, and C" or "at least one of A, B, or C" each mean only A, only B, or only C; any combination of A, B, and C; and / or at least one from each of A, B, and C.
[0134] The predicate words "configured to", "operable to", and "programmed to" do not imply any specific tangible or intangible modification to a subject matter but are intended to be used interchangeably. In one or more specific embodiments, a processor configured to monitor and control operations or components can also mean that the processor is programmed to monitor and control operations or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code can be interpreted as a processor programmed to execute code or operable to execute code.
[0135] Phrases such as aspect, the aspect, on the other hand, some aspects, one or more aspects, specific implementation, the specific implementation, another specific implementation, some specific implementations, one or more specific implementations, implementation scheme, the implementation scheme, another implementation scheme, some implementation schemes, one or more implementation schemes, configuration, the configuration, other configurations, some configurations, one or more configurations, the subject technology, disclosure, the present disclosure, their other variations, etc. are for convenience and do not mean that the disclosure involving such one or more phrases is essential for the subject technology, nor does it mean that such disclosure applies to all configurations of the subject technology. The disclosure involving such one or more phrases may apply to all configurations or one or more configurations. The disclosure involving such one or more phrases may provide one or more examples. Phrases such as aspect or some aspects may refer to one or more aspects and vice versa, and this applies similarly to the other foregoing phrases.
[0136] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration". Any implementation scheme described herein as "exemplary" or as an "example" need not be understood as being preferred over or superior to other specific implementations. In addition, to the extent that the terms "comprising", "having", etc. are used in the specification or claims, such terms are intended to be inclusive, similar to the way the term "comprising" is construed when used as a transitional word in a claim.
[0137] All structural and functional equivalents of the elements of the various aspects described throughout the present disclosure that are known or later become known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be covered by the claims. In addition, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element should be construed under the provisions of 35 U.S.C. § 112(f) unless the element is expressly recited using the phrase "means for...", or, in the case of a method claim, using the phrase "step for...".
[0138] The foregoing description is provided to enable those skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but are intended to cover the full scope consistent with the language of the claims, where reference to an element in the singular is not intended to mean "only one" but rather "one or more" unless specifically stated otherwise. The term "some," unless specifically stated otherwise, means one or more. Pronouns of the masculine gender (e.g., his) include the feminine and neuter genders (e.g., her and its), and vice versa. Headings and subheadings (if any) are used for convenience only and do not limit the subject disclosure.
Claims
1. A non-transitory machine-readable medium, the non-transitory machine-readable medium including code which, when executed by a processor, causes the processor to: Receive, at an electronic device, a uniform resource locator associated with an application; Determine, by the electronic device, that the application is not installed on the electronic device; Determine, by the electronic device, based on at least a first portion of the uniform resource locator, that at least one version of the application is available without user authentication; Provide, to one or more remote servers, information associated with the uniform resource locator; In response to the information, receive, at the electronic device, from the one or more remote servers, code for at least the version of the application; Provide, by the electronic device, a request for user authorization to install and launch at least the version of the application from a user; Receive, by the electronic device, the user authorization; And In response to receiving the user authorization, install and launch at least the version of the application.
2. A non-transitory computer-readable medium, the non-transitory computer-readable medium storing instructions which, when executed by one or more processors, cause the one or more processors to perform operations including the following: Receive, at an electronic device, a uniform resource locator; Generate a first hash of the uniform resource locator; Use the first hash of the uniform resource locator to determine whether the uniform resource locator is associated with any one of a plurality of applications obtainable from one or more remote servers; In response to determining that the uniform resource locator is associated with any one of the plurality of applications: Generate a second hash of a first portion of the uniform resource locator; Use the second hash of the first portion to obtain, from the one or more remote servers, a data set including data of at least two of the plurality of applications; Determine whether the uniform resource locator is included in the data set; And In response to determining that the uniform resource locator is included in the data set, install, at the electronic device, a specific one of the applications corresponding to the uniform resource locator; And In response to determining that the uniform resource locator is not included in the data set, navigate, at the electronic device, to the uniform resource locator using a browser; And In response to determining that the uniform resource locator is not associated with any one of the plurality of applications, navigate, at the electronic device, to the uniform resource locator using the browser.
3. The non-transitory computer-readable medium according to claim 2, wherein the first portion of the uniform resource locator includes a prefix of the uniform resource locator.
4. The non-transitory computer-readable medium according to claim 2, wherein determining whether the uniform resource locator is associated with any one of the plurality of applications that can be obtained from the one or more remote servers using the first hash of the uniform resource locator includes providing the first hash of the uniform resource locator to a Bloom filter.
5. The non-transitory computer-readable medium according to claim 4, the operation further comprising, before navigating to the uniform resource locator at the electronic device in response to determining that the first hash of the uniform resource locator is not associated with any one of the plurality of applications using the Bloom filter: generating a truncated third hash of the uniform resource locator; and determining whether the third hash is associated with any one of the plurality of applications based on providing the third hash to the Bloom filter.
6. The non-transitory computer-readable medium according to claim 2, the operation further comprising, before navigating to the uniform resource locator at the electronic device in response to determining that the uniform resource locator is not included in the data set: generating a third hash of a subset of the first portion of the uniform resource locator; obtaining, from the one or more remote servers, a second data set for at least two applications of the plurality of applications using the third hash of the subset of the first portion; and determining whether the uniform resource locator is included in the second data set.
7. The non-transitory computer-readable medium according to claim 6, the operation further comprising: installing, at the electronic device, the specific one of the applications corresponding to the uniform resource locator in response to determining that the uniform resource locator is included in the second data set.
8. The non-transitory computer-readable medium according to claim 2, wherein the uniform resource locator includes a hypertext transfer protocol address including an address of the one or more remote servers, an identifier of the specific one of the applications, and one or more variables associated with the specific one of the plurality of applications.
9. The non-transitory computer-readable medium according to claim 8, wherein the operation further comprises using the identifier in the uniform resource locator to identify the specific one of the applications corresponding to the uniform resource locator.
10. The non-transitory computer-readable medium according to claim 8, wherein the operation further comprises partially starting the specific one of the applications by providing at least one of the one or more variables in the uniform resource locator to the specific one of the applications.
11. The non-transitory computer-readable medium according to claim 3, wherein installing the specific one of the application programs corresponding to the uniform resource locator at the electronic device includes installing the data in the dataset of the specific one of the application programs in the application programs.
12. The non-transitory computer-readable medium according to claim 3, wherein installing the specific one of the application programs corresponding to the uniform resource locator at the electronic device includes downloading and installing additional data of the specific one of the application programs in the application programs.
13. A method, comprising: Receiving a uniform resource locator at an electronic device; Generating a first hash of the uniform resource locator; Using the first hash of the uniform resource locator to determine whether the uniform resource locator is associated with any one of a plurality of application programs obtainable from one or more remote servers; And In response to determining that the uniform resource locator is associated with any one of the plurality of application programs: Generating a second hash of a first portion of the uniform resource locator; Using the second hash of the first portion to obtain a dataset including data of at least two of the plurality of application programs from the one or more remote servers; Determining whether the uniform resource locator is included in the dataset; And In response to determining that the uniform resource locator is included in the dataset, installing a specific one of the application programs corresponding to the uniform resource locator at the electronic device; And In response to determining that the uniform resource locator is not included in the dataset, navigating to the uniform resource locator at the electronic device using a browser.
14. The method according to claim 13, further comprising: In response to determining that the uniform resource locator is not associated with any one of the plurality of application programs, navigating to the uniform resource locator at the electronic device using the browser.