Registered applications for electronic devices

By receiving the URL of the application on an electronic device and providing relevant information to the remote server, and providing the installation and startup of the simplified functional version of the application, the time-consuming problem of the application installation process in the prior art is solved, and the effect of quickly accessing some functions of the application is achieved.

CN115443460BActive Publication Date: 2025-04-22APPLE INC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
CN202180027329.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-09-23
Filing Date
2021-03-19
Publication Date
2025-04-22
Estimated Expiration
2041-03-19

AI Technical Summary

Technical Problem

In the prior art, when a user installs an application on an electronic device, he or she needs to access a remote server to authenticate, download and install code. This process is time-consuming and resource-consuming, especially when the user needs some application functions.

Method used

Provides simplified functional versions of the application or immediate access to applets by receiving the application's unified resource locator (URL) on the electronic device to determine if the application is not installed. The method includes providing URL-related information to the remote server, receiving and installing code for a simplified functional version of the application, and installing and starting the version after the user authorizes it.

Benefits of technology

It implements quick access to some of the application without the application installed on the device, reducing the time and resource consumption required by users before installing the complete application.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN115443460B_ABST
    Figure CN115443460B_ABST
Patent Text Reader

Abstract

The subject technology provides a portion of the functionality of an application on an electronic device where the application is not installed. When the user desires the functionality, and without authenticating the user's information, the portion of the functionality of the application is provided through a small program of the application that can be obtained, installed, and started on the user's device. The small program of the application can provide the user with access to a purchase function, an ordering function, or any other sub-function of the application. When the application itself is installed on the device, the small program of the application can be deleted while maintaining the application's access to the data generated by the small program on the device.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This patent application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 041,760, entitled “Registered Applications for Electronic Devices,” filed on June 19, 2020, and also claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 008,577, entitled “Application Clips for Electronic Devices,” filed on April 10, 2020, the disclosures of each of which are hereby incorporated herein in their entirety. Technical Field

[0003] The present specification includes general reference to applications for electronic devices, and more particularly to registered applications such as application clips for electronic devices. Background Art

[0004] Users usually install applications for performing various functions on their electronic devices, especially mobile electronic devices. Before installing the application, the user usually accesses an application repository at a remote server, selects an application from the repository, provides authentication information and / or payment to the server, and after receiving access to the code based on the authentication, downloads 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 reroutes the user to a web page associated with the owner of the application, or provides the user with an opportunity to authenticate, download and install the application using the above steps. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Certain features of the subject technology are set forth in the appended claims. However, for purposes of explanation, several embodiments of the subject technology are set forth in the following drawings.

[0006] Figure 1 An exemplary network architecture is shown according to one or more implementations.

[0007] Figure 2 An exemplary environment is shown that can provide a reduced-functionality version of an application according to one or more implementations.

[0008] 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.

[0009] Figure 4A flow chart of an exemplary process for providing a reduced functionality version of an application program according to one or more implementations is shown.

[0010] Figure 5 A flow chart of an exemplary process for replacing a reduced-functionality version of an application with a full version of the application is shown in accordance with one or more implementations.

[0011] Figure 6 A flow chart of an exemplary process for providing a temporary version of an application program is shown in accordance with one or more implementations.

[0012] Figure 7 A flowchart of an exemplary process for obtaining registered applications according to one or more implementations is shown.

[0013] Figure 8 An electronic system is shown that can be used to implement one or more implementations of the subject technology. DETAILED DESCRIPTION

[0014] The specific embodiments shown below are intended to be descriptions of various configurations of the subject technology and are not intended to represent the only configuration that the subject technology can be practiced. The accompanying drawings are incorporated herein and constitute a part of the specific embodiments. The specific embodiments include specific details intended to provide a thorough understanding of the subject technology. However, the subject technology is not limited to the specific details set forth herein, but can 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 blurring the concepts of the subject technology.

[0015] The subject technology provides immediate access to a portion of the functionality of an application when the application is not installed on the device. Such immediate access may be provided when there is a current need for the portion of the functionality of the application. For example, the current need may 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.

[0016] For example, when a user walks into a store without having installed the application for the store on their smart phone, smart watch, tablet or other electronic device, this may be helpful. 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, the app's applet (e.g., the purchase portion of the store's application or the subscription portion of the store's application) can begin downloading, while providing the user with an option to authorize the installation of the app's applet. In this way, when the user authorizes installation and / or launch, the app's applet is immediately installed, launched and ready to use. This process of obtaining an app's applet (sometimes referred to herein as a simplified functional version of an application, a temporary version of an application, a portion of an application, an application applet or an application applet) can be performed without requiring the user's authentication information, and without downloading code for the complete application, as these two situations may be undesirably time-consuming and / or resource-consuming.

[0017] Figure 1 An exemplary system architecture 100 including various electronic devices that may implement the subject system according to one or more implementations is shown. However, not all of the depicted components may be used in all implementations, and one or more implementations may include additional or different components than those shown in the figures. Changes in the arrangement and types 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.

[0018] The network architecture 100 includes an electronic device 110, an electronic device 115, and a server 120. For the purpose of explanation, the system architecture 100 is shown in FIG. Figure 1 1 is shown as including electronic device 110, electronic device 115, and server 120; however, system architecture 100 may include any number of electronic devices, peripheral devices, and any number of servers or a data center including multiple servers.

[0019] The network 106 may communicatively couple (directly or indirectly) electronic device 110 and / or electronic device 115, for example, with each other device and / or server 120. In one or more implementations, the network 106 may be an interconnected network that may include the Internet or devices communicatively coupled to the Internet.

[0020] 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 (e.g., a watch, a wristband, etc.), any other suitable device including, for example, a touch screen, or any electronic device with a touch pad. In one or more specific implementations, the electronic device 110 may not include a touch screen, but may support touch screen-like gestures. In one or more specific implementations, the electronic device 110 may include a touch pad. Figure 1 , the electronic device 110 is depicted as a mobile smart phone device having a touch screen by way of example.

[0021] 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, a headset), a tablet device, a wearable device (e.g., 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 the following with respect to Figure 8 In one or more specific implementations, 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.

[0022] 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, a headset), a tablet device, a wearable device such as a watch, a wristband, etc. Figure 1 In the embodiment, the electronic device 115 is depicted as a desktop computer by way of example. The electronic device 115 may be and / or may include the following with respect to Figure 8 All or part of the electronic system described.

[0023] 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, server 120 stores data and software and includes specific hardware (e.g., processors, graphics processors, and other specialized or custom processors) for hosting application repositories, performing privacy-preserving mappings between uniform resource locators (URLs) and application identifiers, and / or verifying and / or authenticating users of the server (e.g., for accessing applications in an application repository). In one specific implementation, server 120 may be used as a cloud server.

[0024] Figure 2An exemplary environment 200 of an electronic device in which the subject system may be implemented according to one or more implementations is shown. However, not all of the depicted components may be used in all implementations, and one or more implementations may include additional or different components than those shown in the figures. Changes in the arrangement and types 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.

[0025] Environment 200 includes electronic device 110, store 202, and wireless access point 204 (e.g., Wi-Fi access point, cellular access point, NFC access point, etc.). For the purpose of explanation, environment 200 is shown in FIG. Figure 2 2 is shown as including a single electronic device 110, a single store 202, and one wireless access point 204; however, environment 200 may include any number of electronic devices, any number of stores, and any number of wireless access points.

[0026] Environment 200 allows electronic device 110 to identify at least one version of an application that is not installed on electronic device 110 and that is available for immediate use with electronic device 110 (eg, without authenticating a user account of a user of electronic device 110 ).

[0027] In one or more specific implementations, multiple versions of an application may be used. Each version of a particular application and the application itself (e.g., a full application) may have the same application identifier or the same portion of the application identifier as other versions of the same application. Each version of the application may be a reduced functionality version of the application that has fewer features than the full version of the application. In some examples, the application may be an application associated with a store 202 (e.g., an application associated with a particular online and / or physical retailer).

[0028] A complete version of an application may be obtained, for example, from the remote server 120R 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 the 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.

[0029] The full version of the application may provide various functions, such as payment functions, online ordering functions, store locator functions, account access functions, application settings functions, search functions, help desk functions, order history functions, news push functions, image capture functions, messaging functions, mapping functions, etc. 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 than the reduced functionality version of the application. For example, the full version of the application may be able to request access to a photo library associated with the electronic device, where the reduced functionality version of the application is blocked from requesting access to the photo library. In another example, the reduced functionality version of the application may be able to access a subset of components (e.g., sensors, cameras, etc.) that are accessible by the full application.

[0030] However, in various operational scenarios, a user may not need all of the functionality of a full application and / or a user may not be able or willing to spend the time and / or effort to locate, authenticate, download, install, and launch a full application. Figure 2 In a network environment, a user of electronic device 110 may arrive at and / or walk into store 202 without installing a complete application associated with the store on electronic device 110. However, the user may benefit from the ability to use one or more portions of the functionality of the application for the store while in store 202. For example, a user may desire to use a payment function of the application to pay for goods or services at store 202. As another example, a user may desire to skip the line at the store by utilizing the online ordering function of the application. In one or more specific implementations, multiple simplified functional versions of the application may be used (e.g., a payment function version, an ordering function version, a dine-in ordering function, a take-out ordering function, a reservation function, a mapping function, etc.).

[0031] In these scenarios, it may be helpful to provide the user with the ability to obtain one or more of a reduced functionality version of an application (sometimes referred to herein as an applet of an application, an application mini-program, a version of a full application with less functionality than the full application, a temporary version of an application with less functionality than the full application, or a portion of an application) without having to expend the time and effort of locating, authenticating, downloading, and installing the full application. For example, a version of an application may be temporarily installed on an electronic device 110 (e.g., when a user arrives at or enters a 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 an application, such as a reduced functionality version of an application (e.g., an application mini-program), may include functionality that is different from (or not included in) the full version of the application.

[0032] Environment 200 allows electronic device 110 to obtain a network identifier or network locator, such as a uniform resource locator (URL) or uniform resource identifier (URI) for an application (e.g., a full application associated with store 202), and use the uniform resource locator to obtain a temporary version of the application that includes less functionality than the full version of the application.

[0033] A URL identifying an application (e.g., a full application associated with store 202, or another registered application such as an app applet or another experience) may have the form https: / / codes.server.com / experienceID?{arguments} in one or more specific implementations, where "codes.server.com" identifies a remote server with which the registered application is registered, "experienceID" is an identifier of the registered application (e.g., a bundle identifier), and "{arguments}" includes one or more variables and / or parameters to be used to install the registered application and / or to be passed to the registered application at launch. The portion of the URL before the variables (e.g., https: / / codes.server.com / experienceID or codes.server.com / experienceID) may be referred to as a prefix of the URL.

[0034] Environment 200 allows electronic device 110 to receive a uniform resource locator associated with an application; determine that the application is not installed on 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 a version of the application) to one or more remote servers such as remote server 120R; in response to the information, receive code for at least the version of the application from the one or more remote servers; provide a request for user authorization from a user to install and launch at least the version of the application; receive user authorization; and in response to receiving the user authorization, install and launch at least the version of the application.

[0035] The electronic device 110 may determine that at least the version of the application is available without user authentication based on at least a first portion of the uniform resource locator, in part 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 may 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 is mappable to an application identifier (e.g., at a server storing registered mappings between URLs and application identifiers), 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 may navigate directly to the URL using a web browser.

[0036] In one or more specific implementations, if the Bloom filter indicates that the URL is not mapped to any application identifier based on the hash of the full URL (e.g., where the Bloom filter does not include information for variables in the URL and therefore indicates that the URL is not mapped to any application identifier), the electronic device 110 may provide one or more progressive subsets or truncations of the URL to the Bloom filter. For example, the electronic device 110 may progressively remove path or query component suffixes from the URL and check the results according to the Bloom filter. For example, in one or more specific implementations, before navigating directly to the URL using a web browser, a hash of one or more prefixes of the URL obtained by progressively removing the path or query component suffixes of the URL may be provided to the Bloom filter to determine whether the URL may correspond to any application identifier. As an example, the electronic device 110 may 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 (?), a forward slash, a hash tag, etc.

[0037] Determining that at least the version of the application is available without user authentication based on at least a first portion of the uniform resource locator may include providing at least the 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 (e.g., if a local Bloom filter at the electronic device indicates that the URL can be mapped to an application identifier), and receiving from the remote server one or more identifiers of the application and / or an identifier of a version of the application associated with at least the first portion of the URL.

[0038] In one or more specific implementations, determining that at least the version of the application is available can be accomplished in a privacy-preserving operation in which 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 the server 120. The server 120 looks up a collection or "bucket" of information including an application identifier and / or an application applet identifier corresponding to the hash (e.g., the hashing algorithm can be designed to have multiple different URLs or portions thereof that hash to the same value), and then sends back a bucket of information including identifiers of available versions of the application and / or identifiers of the application (e.g., and the URLs or portions 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.

[0039] For example, in one or more implementations, code for a version of an application may be included in a data bucket (e.g., along with code for one or more other applications or versions of applications in the bucket). In one or more other implementations, an identifier for the version of an application may be obtained from the bucket and used to obtain associated code for the version of the application (e.g., from the same server that provides the bucket or from a separate server). For example, in one or more implementations, the data bucket may 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 may include information (e.g., a name and / or image) for display at the device in a request for authorization to install and launch the version of the application, and may include an identifier. The code for the desired version of the application may be obtained from a second server (e.g., an application server separate from the registration server) using the identifier in the bucket corresponding to the URL. In this way, the device may identify available versions of the application while avoiding, for example, revealing to the server the location of the device or the browsing or other activities of the user (e.g., at least until the user authorizes the installation and launch of a particular application or version of the application).

[0040] In one or more specific implementations, the code for a version of an application may be obtained by first obtaining application metadata for a version of the application from an application server using an identifier obtained from a bucket received from a registration server; providing a launch user interface using the obtained application metadata; obtaining code for a version of the application from an application server using the identifier when the launch user interface is displayed at the device; and installing and launching the version of the application when the code is obtained. In one or more specific implementations (e.g., if user authorization has not been previously obtained using data in the bucket), application metadata for multiple versions and / or multiple applications may be obtained from an application server using multiple identifiers from a bucket received from a registration server. The device may use the identifier to select appropriate application metadata for providing an appropriate launch user interface, and may include a request for authorization to install and launch a version of the application in the launch user interface. After receiving authorization to install and launch a version of the application, the code for the version of the application may be downloaded, installed, and launched.

[0041] 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 the URL, the electronic device 110 may 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 a path or query component suffix from the URL. For example, in one or more specific implementations, before navigating directly to the URL using a web browser, a hash of one or more prefixes of the URL may be provided to a remote server to obtain an additional bucket of information including an application identifier and / or an application applet identifier corresponding to the hash.

[0042] The electronic device 110 may determine that the 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 prior to determining whether any version of the application is available) or using an application identifier provided by a server (e.g., in a bucket).

[0043] In one or more specific implementations, the application applet and / or associated application can be a registered application registered with a remote server (e.g., a registration server corresponding to one or more of servers 120). Although applications and 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 a remote server and obtained using the operations described herein are also contemplated.

[0044] The registered application may have been previously registered with the server (e.g., by the developer of the application with the registration server). Registering the application may include providing a title, subtitle, and image for the application (e.g., which may be obtained as metadata from the registration server in an information bucket and displayed to the user via their device in the event of a request for authorization to install and launch the application). Registering the application may also include providing a URL for the application, and / or providing, generating, and / or linking one or more encoded identifiers (e.g., a QR code, NFC code, or other image-based code) to the URL. Registering the application may also include providing 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).

[0045] Providing registered applications obtained as described herein (e.g., using privacy-preserving operations without requiring user authentication) can provide users of electronic devices with quick access to new device functionality (e.g., functionality not previously installed on the device to provide new experiences to the user such as application applets) that are customized for the user (e.g., for the user's current environment, actions, or location) and are high-quality, secure applications.

[0046] In one or more specific implementations, the time for providing a user with access to the functionality of a registered application, such as an application applet, can be reduced by obtaining code (e.g., binary code) for the registered application while simultaneously requesting authorization from the user to install and launch the registered application. For example, a server, such as server 120, can include in a first set of pre-fetched metadata (e.g., metadata including a registered title, subtitle, and image to be included in a request for user authorization to install and launch an application applet or other experience, as described below in conjunction with Figure 3 In some embodiments, the user device may provide binary code for a registered application (e.g., binary code for an application applet or other experience associated with the registered application) to the user device in a manner described in further detail herein. In this manner, 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 downloaded binary code.

[0047] In various scenarios, a uniform resource locator (URL) for an application is obtained 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 a user scans a code associated with a store 202 and / or a particular location (e.g., using a 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, a local server 120L at the store 202, and / or a remote server 120R determines that the electronic device 110 is at or near the store 202, such as using geolocation operations and / or one or more wireless beacons).

[0048] In one example, a user may use a browser on electronic device 110 to click on a link for a webpage associated with store 202 (or click on a link within that or another webpage), which is mapped (e.g., based on a mapping between application identifiers and URLs that has been previously registered, such as with server 120) to an application associated with store 202. In other examples, a 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.

[0049] In another example, the user may use a camera or other sensor of the electronic device 110 to scan a code, such as a barcode or QR code associated with a store, and obtain a uniform resource locator obtainable by the electronic device based on the scanned code. For example, the electronic device 110 may derive the URL directly 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.

[0050] exist Figure 2 In the example of , environment 200 includes a QR code 208 at a point of sale 206 of a store 202 and a QR code 210 at an entrance 212 of the store 202. QR code 208 and QR code 210 may be the same QR code, or may be different QR codes. For example, in one specific implementation, QR code 208 may be a QR code associated with point of sale 206 that causes electronic device 110 to obtain a version of an application for store 202 that includes only payment functionality. QR code 210 may be a QR code associated with entrance 212 to store 202 that causes electronic device 110 to obtain a version of an application for store 202 that includes only online ordering functionality or includes online ordering functionality and payment functionality.

[0051] In another example, the electronic device 110 may communicate with one or more access points, such as the wireless access point 204, to determine that the electronic device 110 is at or near the location of the store 202. The electronic device 110 may communicate with a local server 120L and / or a remote server 120R associated with the store 202 to determine, based on the location of the electronic device 110 at or near the store, to obtain a network identifier, such as a URL, for an application associated with the store 202.

[0052] In one or more specific implementations, 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 technologies (e.g., based on the arrival time, arrival angle, 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. In addition, the electronic device 110 may implement an inertial navigation system (INS) that uses one or more device sensors (e.g., motion sensors such as accelerometers, gyroscopes) to calculate device status (e.g., position, orientation, and speed) to supplement the location data provided by the above-mentioned positioning technologies.

[0053] Environment 200 may facilitate providing one or more temporary versions and / or reduced functionality versions of an application for electronic device 110 based on determining that the location of electronic device 110 is within store 202 or within a threshold distance of store 202. Examples of store 202 include, but are not limited to, a retail store, a dine-in restaurant, a drive-through restaurant, a showroom, a kiosk, a gas station, a museum, an amusement park, a public market, a tourist landmark, an indoor shopping mall, an outdoor shopping mall, a sports stadium, a music venue, or any identifiable location, such as any location that may be geo-fenced.

[0054] exist Figure 2 In the example of , electronic device 110 is located outside entrance 212 of store 202. However, the user may be traveling, for example, by a vehicle (e.g., car, motorcycle, bicycle) that is within a threshold distance of store 202. For example, if store 202 is a drive-through restaurant, the user may be traveling by car in a drive-through lane that is at a predetermined location and distance relative to the physical restaurant.

[0055] In addition to facilitating location solutions for the electronic device 110, the wireless access point 204 may 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 implementations, the wireless access point 204 may connect the electronic device 110 to an intranet associated with the store 202 and / or the local server 120L for obtaining a URL for an application or a version of the application. Alternatively or in addition, one or more of the wireless access points, such as the wireless access point 204, may connect the electronic device 110 to a remote server 120R (e.g., via the Internet).

[0056] Various examples are described herein in conjunction 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 reduced functionality version of the application.

[0057] Figure 3 An example is shown in which code such as executable code or binary code (e.g., encrypted binary code) for an applet for an application (e.g., a reduced functionality version or temporary version of an application) may be downloaded to electronic device 110 (e.g., from server 120) when electronic device 110 prompts a user for authorization to install and launch an application applet (e.g., “App Applet 1”) (e.g., to provide immediate access to a version of an application that is not installed on electronic device 110).

[0058] exist Figure 3 In the example of , electronic device 110 may have obtained a URL (e.g., a URL associated with server 120, which may be local server 120L or remote server 120R) for an application (e.g., an application associated with a store such as store 202) 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. Figure 3 In the example of , when the electronic device 110 provides a request 300 for authorization to install and launch an application applet, the electronic device 110 has begun downloading code (e.g., binary code or other executable code such as "Application Applet 1 Binary Code").

[0059] exist Figure 3In the example of , request 300 includes text stating "Are you willing to install and launch application applet 1?". However, this is merely illustrative and other text and / or graphical information may be used for the request. For example, request 300 may also include information for application applet 1 provided to server 120 (e.g., a registration server) in 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 device's location information). 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 that option is selected.

[0060] exist Figure 3 In the example of , the user is provided with a selectable option 302 (e.g., a "yes" button) for authorizing the installation and launching of the application applet and a selectable option 304 (e.g., a "no" button) for denying the installation and launching of the application applet. Figure 3 In the example of , selectable option 302 and selectable option 304 are virtual buttons provided on the touch screen of electronic device 110, however, this is merely illustrative, and the user may provide or deny authorization in a variety of other ways (e.g., by voice input to electronic device 110 and / or using a keypad, physical button, or other input component of electronic device 110). In one or more specific implementations, request 300 (e.g., and / or another request provided after installing the application applet) may include a request for permission to provide push notifications with electronic device 110 (e.g., within a period of time, such as a few hours or days, after installing the application applet or after the last launch of the application applet).

[0061] In one or more specific implementations, the push notification can be a location-based notification. In one or more specific implementations, the request 300 may include a request to allow access to the location of the electronic device (e.g., one-time access) and / or confirm the location of the electronic device (e.g., confirm the location determined by the electronic device such as using geolocation and / or beacon operation).

[0062] For example, a user of electronic device 110 may tap electronic device 110 on or near a tag (e.g., an NFC or RFID tag, such as a specific implementation of wireless access point 204 of store 202) at a particular location or scan a QR code or other encoded identifier associated with a particular location. In response to the tap or scan, 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 electronic device 110 (e.g., as part of request 300 for authorization and / or as an initial request prior to the request for authorization) (e.g., by providing a checkbox allowing the user to opt out of location sharing). The request for authorization and / or location sharing may include instructional information describing the application applet in one or more specific implementations.

[0063] Once authorization (e.g., including authorization to provide location confirmation) is received by the electronic device, the application applet can be installed and launched. Before or after launch, the application applet can perform a location check (e.g., if location confirmation has been approved). Performing a location check may include obtaining (e.g., from server 120) an area within which the application applet is allowed to be installed and / or allowed to run (e.g., the known coordinates of the tapped label or QR code and the radius around these coordinates, the proximity to a known Bluetooth beacon, or another geographical description of the area). The known coordinates and the geo-fence around these known coordinates may be obtained in an information bucket obtained when displaying the request 300 or may be obtained in a separate operation. In one or more specific implementations, the area provided may include a maximum radius (e.g., two kilometers) and / or a minimum radius (e.g., 10 meters). Because a complete application (e.g., a registered application) may have multiple associated (e.g., associated with different locations and / or different functions for the application) application applet, different areas (e.g., different sizes such as different radii) may be provided for different labels or QR codes for the same application.

[0064] In one or more specific implementations, in response to receiving an area (e.g., coordinates and radius) from a server, the application applet can obtain the location of the device, compare the location of the device to the received area, and return a binary response to the server indicating whether the electronic device 110 is within the area defined by the server (e.g., whether the device is in the expected location corresponding to the tapped tag or scanned code). In response to receiving a response indicating that the electronic device is within the area, the server can 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, rate limits can be applied to the application applet. For example, the application applet can be limited to providing only one location confirmation response each time a specific location-related tag or code is tapped or scanned.

[0065] It should also be understood that location confirmation can be performed on the device (e.g., for additional privacy purposes, without providing a binary or other location-based response to the server). For example, a bucket of information obtained from the server using a hash of a portion of the URL can include the location coordinates of the tapped NFC code or scanned QR code and associated threshold proximity (e.g., geo-fence) 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.

[0066] When the electronic device 110 receives authorization to install and launch the application applet (e.g., via selecting selectable option 302), the code 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 in response to receiving the authorization, the key being independent of the user or the user's account, and installing the downloaded binary code using the key. In one or more specific implementations, the key can be downloaded before receiving the authorization.

[0067] In one exemplary use case, a customer of store 202 may bring an electronic device 110 that does not have an application associated with store 202 installed to a point of sale 206. In one or more specific implementations, electronic device 110 may detect (e.g., via communication with a GPS system and / or via communication with wireless access point 204) that the electronic device is at or near a POS. Electronic device 110 may also or alternatively be used to scan a code such as a QR code 208 associated with point of sale 206. In response to detecting electronic device 110 at or near point of sale 206, in response to scanning of QR code 208, and / or in response to selection of a link associated with store 202, electronic device 110 may begin downloading a temporary and / or reduced functionality version of an application or applet for store 202, which, for example, includes only the payment functionality of the application. During the download, electronic device 110 may provide request 300 and selectable options 302 and 304 to the user (e.g., using a touch-sensitive display of electronic device 110). In response to selection of selectable option 302, the electronic device may launch an application applet having a payment function and display a user interface (UI) of the application applet to allow the user to pay for goods or services using the application applet.

[0068] 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 scenarios where the code (e.g., binary code) for the application applet 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, 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.

[0069] It should also be understood that, in order to further enhance immediate access to one or more application applets of an application, code for one or more application applets, such as binary code and / or executable code, can be preloaded onto an electronic device in anticipation of a user's potential desire for the application applets. Such preloading of code for one or more application applets can be performed based on machine learning and / or crowdsourcing information of user preferences. For example, when an electronic device is close to a venue and / or the electronic device is located in or near a venue, a server (such as server 120) can determine that users of many electronic devices are installing and launching application applets with map functions for a particular venue (e.g., a museum, a concert venue, a sports venue, a theme park, etc.). The server can determine that the electronic device 110 of a new user is approaching the venue or is located in or near the venue, and responsively provides the code for the same application with map functions 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 is downloaded, or later when a user scans a code at the venue or enters information indicating that mapping functionality is desired (e.g., entering a search request associated with the venue or locations within the venue, such as using a search application installed on the device but that is not a spatial or geographic mapping application and does not have spatial or geographic mapping capabilities).

[0070] although Figure 3An example of requesting user authorization before installing and launching an application applet is depicted, but 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 implementations, the application applet can be downloaded, installed, and launched when the electronic device 110 reads a QR code (such as QR code 208 or QR code 210) (e.g., rather than when the user provides authorization, such as by clicking "Install" or "Open" the application applet). 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 implementations, the user interface can be displayed so as to appear to float above the content previously displayed on the display screen of the electronic device.

[0071] Figure 4 A flowchart of an exemplary process for providing a version of an application on an electronic device according to one or more specific implementations is shown. Figure 1 The process 400 is described with reference to 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 of the process 400, and one or more blocks (or operations) of the process 400 may 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 the purpose of explanation, the blocks of the process 400 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 400 may occur in parallel. In addition, the blocks of the process 400 do not have to be performed in the order shown, and / or one or more blocks of the process 400 do not have to be performed and / or may be replaced by other operations.

[0072] At block 402, an electronic device, such as electronic device 110, receives a uniform resource locator (URL) associated with an application (e.g., a complete application or a complete version of an application). When installed on an electronic device, the application can provide multiple functions for the electronic device. Receiving the uniform resource locator can include scanning a QR code by the electronic device. 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 a uniform resource locator based on the location of the electronic device (e.g., as described above in conjunction with Figure 2 described above).

[0073] At block 404, the electronic device determines that the application is not installed on the electronic device.

[0074] At box 406, the electronic device determines 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. The version of the application can be a simplified functional version of the application, which has fewer functions than the full version of the application. The version of the application can be a temporary version of the application, which has fewer functions than the full version of the application. The version of the application may be referred to herein as an application applet or an application applet. Determining that a version of the application is available may include providing a URL or a hash of the URL to a bloom filter at the electronic device and / or to one or more remote servers such as server 120 (e.g., as described above in conjunction with Figure 2 and Figure 3 The registration server) provides a portion of a hash of the URL or a hash of a portion of the URL.

[0075] At block 408, the electronic device may 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 may include an identifier of at least a 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 a 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 preserving operation, information associated with the URL may be obtained from the one or more remote servers.

[0076] At box 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 provides 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 smaller than the code for the complete 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 may 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 complete 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).

[0077] At block 412, the electronic device may provide a request for user authorization from the user (e.g., Figure 3Request 300 shown) to install and start at least this version of the application. In one or more specific implementations, a request for user authorization at box 412 is provided during the receipt of the code at box 410.

[0078] At block 414, the electronic device may receive user authorization (e.g., via selecting selectable option 302 to authorize installation and launching). In one or more implementations, user authorization is received without receiving user authentication. User authentication may include providing identification information of the user and / or security information of the user (e.g., a 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 particular user.

[0079] At block 416, in response to receiving the user authorization, the electronic device may install and launch at least the version of the application. In one or more implementations, installing and launching the version of the application may include requesting a key for the binary code from the one or more remote servers in response to receiving the user authorization; receiving the key in response to the request; and installing and launching at least the version of the application using the key. In implementations where the binary code is an encrypted binary code (such as a DRM-encrypted binary code), the key may be a device-specific decryption key that is independent of the user.

[0080] In one or more specific implementations, the electronic device 110 may also limit the rate and / or amount of data usage based on the version of the application. For example, the electronic device 110 may monitor the data usage of at least the version of the application for a predetermined amount of time (e.g., one minute, several minutes, less than one minute) after launching at least the 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 the version of the application. For another example, in one or more specific implementations, the electronic device 110 may limit the use of a version of the application based on the user's location (e.g., when the user leaves the store 202, the use of the version of the application may be prevented or limited).

[0081] In one or more specific implementations, the electronic device may also preload 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 the location (e.g., when it is expected that the user will need or desire one or more sub-functions of one or more applications).

[0082] In one or more specific implementations, the code for the version of the application can be automatically deleted after the user completes use of the version of the application, without user input. For example, the electronic device 110 can identify that the version of the application has not been used for a period of time exceeding a threshold period of time (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 period of non-use exceeds the threshold period of time, without requiring user interaction.

[0083] In one or more specific implementations, when the full application corresponding to the version of the application is installed, the code of the version of the application can be deleted so that the temporary and / or reduced functionality version of the application is replaced by the full application. In one or more specific implementations, the full application can be obtained in response to selecting an option to do so provided within the version of the application.

[0084] Figure 5 A flowchart of an exemplary process for replacing a version of an application (e.g., an application applet or a reduced functionality version or a temporary version of an application) with a complete application (e.g., a full version of an application) according to one or more specific implementations is shown. Figure 1 The process 500 is described with reference to 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 of the process 500, and one or more blocks (or operations) of the process 500 may 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 the purpose of explanation, the blocks of the process 500 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 500 may occur in parallel. In addition, the blocks of the process 500 do not have to be performed in the order shown, and / or one or more blocks of the process 500 do not have to be performed and / or may be replaced by other operations.

[0085] At block 502, an electronic device such as electronic device 110 receives a request to obtain a complete application (e.g., a complete application corresponding to an application applet installed on the electronic device). When a user launches an add-on application for accessing a remote application store or repository (e.g., at server 120) and locates the complete application in the application store, electronic device 110 may receive the request to obtain the complete application and select the complete application for download and installation.

[0086] At box 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 storage device at a remote server (such as server 120)). The stored data may 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. Applications that are not complete applications may be prevented from accessing stored data generated by the simplified functional version. In one or more specific 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) may 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 allowing longer or remote storage of data generated by the simplified functional version of the application, and / or access to other user data associated with a user account stored at a remote server 120 or on the electronic device 110).

[0087] At block 506, the electronic device deletes the reduced functionality version of the application from the electronic device. The electronic device may delete the reduced functionality version of the application without receiving user input explicitly requesting or indicating the deletion.

[0088] At box 508, the electronic device downloads and installs the complete application from the one or more remote servers to the electronic device. In one or more specific implementations, the electronic device requests the user account authentication information of the user for receiving the complete application before downloading and installing the complete application. The request for authentication information can be generated by the additional application for accessing the 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 complete 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.

[0089] At block 510, the electronic device provides access to the stored data through the full application. The full application can then provide user-specific functionality to the user based on the stored data, even if the user has never used the full application.

[0090] In one or more specific implementations, the electronic device may also generate an icon of the full application that can be selected by the user to launch the full application. This version of the application may be provided for use by the user without providing an associated optional icon (e.g., at least a reduced functionality version of the application does not have an associated optional icon). The icon may be provided, for example, on a home screen on the electronic device. The icon may be created at the electronic device or may be obtained from the remote server 120.

[0091] Figure 6 A flowchart of an exemplary process for providing a temporary version of an application on an electronic device according to one or more specific implementations is shown. Figure 1 The process 600 is described with reference to 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 of the process 600, and one or more blocks (or operations) of the process 600 may 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 the purpose of explanation, the blocks of the process 600 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 600 may occur in parallel. In addition, the blocks of the process 600 do not have to be performed in the order shown, and / or one or more blocks of the process 600 do not have to be performed and / or may be replaced by other operations.

[0092] At block 602, an electronic device, such as electronic device 110, receives a uniform resource locator for an application. Receiving the uniform resource locator may include scanning a QR code by the electronic device. Receiving the uniform resource locator may 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 may include receiving a uniform resource locator based on a location of the electronic device (e.g., as described above in conjunction with Figure 2 The temporary version of the application may be referred to herein as an application applet or an application applet.

[0093] At block 604, the electronic device receives a temporary version of the application using the uniform resource locator, the temporary version including less functionality than the full version of the application. The electronic device may 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. The authorization from the user may be received in response to a request for authorization provided by the electronic device, as described above in conjunction with Figure 3 as described in the examples.

[0094] In one or more specific implementations, authorization is received from the user without user authentication. In one or more specific implementations, 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 specific implementations, the electronic device determines (e.g., using a Bloom filter at the electronic device) that the URL is associated with the application identifier, and determines (e.g., by providing a hash of a portion of the URL or a portion of the hash of the URL to a server, and locally sorting information received from the server in response to the hash of a portion of the URL or a portion of the hash of the URL) that the temporary version of the application is available.

[0095] In one or more specific implementations, 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 the installed full version of the application with access to data generated by the temporary version of the application before deleting the temporary version of the application (e.g., as described above in conjunction with Figure 5 described above).

[0096] Various examples for obtaining an application 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 application applet described herein may be applied to obtain any suitable application or other experience capable of being provided by an electronic device. For example, code such as binary or executable code may 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.

[0097] Figure 7 A flowchart of an exemplary process for obtaining registered applications of an electronic device according to one or more specific implementations is shown, such as for obtaining an experience registered with a remote server, which experience will be provided by the electronic device. For the purpose of explanation, this article mainly refers to Figure 1 The process 700 is described with reference to the electronic device 110 and the server 120. However, the process 700 is not limited to Figure 1The electronic device 110 and the server 120 of the process 700, and one or more blocks (or operations) of the process 700 may 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 the purpose of explanation, the blocks of the process 700 are described herein as occurring sequentially or linearly. However, multiple blocks of the process 700 may occur in parallel. In addition, the blocks of the process 700 do not have to be performed in the order shown, and / or one or more blocks of the process 700 do not have to be performed and / or may be replaced by other operations.

[0098] At box 702, the electronic device may receive a uniform resource locator (URL). For example, receiving the uniform resource locator may include scanning a code by the electronic device, such as a QR code or a code embedded in another visual medium, such as an image that does not appear to include the code to the human eye, or a code that is wirelessly transmitted and / or broadcasted, such as via NFC or Bluetooth. The code may, for example, be an encoded arrangement of colors, shapes, and / or other features of an image. Receiving the 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 the uniform resource locator may include receiving the 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 conjunction with Figure 2 described above).

[0099] 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.

[0100] 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 obtaining the uniform resource locator.

[0101] In response to determining at box 706 that the uniform resource locator (e.g., "yes") is associated with any one of the applications, at box 710, the electronic device may generate a second hash of the first portion of the uniform resource locator. The first portion of the uniform resource locator may be, for example, a prefix of the uniform resource locator. At box 712, the electronic device may obtain a data set (e.g., a collection of information or an information bucket) including data of at least two of the applications from the one or more remote servers (e.g., the same remote server or another remote server such as a registration server) using the second hash of the first portion. At box 714, the electronic device may determine whether the uniform resource locator is included in the data set. At box 716, in response to determining at box 714 that the uniform resource locator (e.g., "yes") is included in the data set, the electronic device may install a specific one of the applications corresponding to the uniform resource locator at the electronic device. Installing a specific one of the applications corresponding to the uniform resource locator at the electronic device may include installing data in a data set of the specific one of the applications, or may include downloading and installing additional data for the specific one of the applications (for example, downloading and installing metadata and / or binary code for the specific one of the applications from another remote server such as an application server).

[0102] In response to determining at box 714 that the uniform resource locator is not included in the data set (e.g., "No"), or determining at box 706 that the uniform resource locator is not associated with any of the applications (e.g., "No"), at box 718, the electronic device may navigate to the uniform resource locator using a browser at the electronic device.

[0103] 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 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 the uniform resource locator truncation (e.g., by removing a path or query component suffix from the URL to generate a hash of a prefix of the URL), provide the third hash to the Bloom filter, and determine whether the uniform resource locator is associated with any of the applications using the Bloom filter and the third hash of the prefix of the URL (e.g., by determining whether the third hash is associated with any of the multiple applications based on providing the third hash to the Bloom filter). The electronic device may perform one or more consecutive 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 of the applications.

[0104] In one or more specific implementations, in response to determining (at box 714) that the uniform resource locator is not included in the data set, and before navigating to the uniform resource locator using a browser at the electronic device at box 718, the electronic device may generate a third hash of a subset of the first portion of the uniform resource locator (e.g., by removing a path or query component suffix from the URL to generate a hash of the URL prefix), using the third hash of the subset of the first portion, obtain a second data set for at least two of the applications from the one or more remote servers, and determine whether the uniform resource locator is included in the second data set. The electronic device may be configured to perform one or more consecutive path or query component suffix removals before determining at box 714 that the uniform resource locator is not included in the second data set. In response to determining that the uniform resource locator is included in the second data set (or in the first data set), the electronic device may install a specific one of the applications corresponding to the uniform resource locator at the electronic device (e.g., at box 716). In this way, false positives due to additional information in the URL (e.g., variables, parameters, etc.) can be avoided.

[0105] In one or more specific implementations, the uniform resource locator 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 specific one of the applications (e.g., "experienceID"), and one or more variables associated with the specific one of the applications (e.g., {arguments}). The electronic device may use the identifier in the uniform resource locator to identify the specific one of the applications corresponding to the uniform resource locator (e.g., at box 714). The electronic device may also partially launch 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.

[0106] The present disclosure recognizes that the use of such personal information data in the present technology can be used to benefit the user. For example, the personal information data can be used to provide application applets to the user's electronic device based on the user's location, the user's preferences, the user's activities and / or crowdsourced information from the user or other users.

[0107] This disclosure envisions 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 that are generally recognized as meeting or exceeding the requirements of the industry or government that maintain user privacy. Such information about the use of personal data should be prominently and easily accessible to users, and should be updated as the collection and / or use of data changes. The user's personal information should be collected only for legitimate use. In addition, such collection / sharing should only occur after receiving user consent or other legal basis specified in applicable law. In addition, such entities should consider taking any necessary steps to defend and safeguard access to such personal information data and ensure that others who have access to personal information data comply with their privacy policies and processes. In addition, such entities may subject themselves to third-party assessments to demonstrate their compliance with widely accepted privacy policies and practices. In addition, policies and practices should be adjusted for specific types of personal information data collected and / or accessed, and applied to applicable laws and standards, including specific considerations that are exclusive to jurisdictions that can be used to impose higher standards. For example, in the United States, collection or access to 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.

[0108] Regardless of the foregoing, the present disclosure also contemplates implementation schemes in which users selectively block the use or access of 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 users to choose to "opt in" or "opt out" to participate 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 notifications related to access or use of personal information. For example, a user may be notified that their personal information data will be accessed when downloading an application, and then reminded again just before the personal information data is accessed by the application.

[0109] Furthermore, it is an object of the present disclosure that personal information data should be managed and processed to minimize the risk of unintentional or unauthorized access or use. Risks can be minimized by limiting data collection and deleting data once it is no longer needed. Additionally, 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 stored data (e.g., collecting location data at a city level rather than at an address level or at a level that is insufficient for facial recognition), controlling how data is stored (e.g., aggregating data across users), and / or other methods such as differential privacy, where appropriate.

[0110] Therefore, 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 various embodiments may be implemented without access to such personal information data. That is, various embodiments of the present technology will not fail to function properly due to the lack of all or part of such personal information data.

[0111] In one or more implementations, the application applet is accessible to applications installed on the electronic device. For example, based on the location of the electronic device, the scanning of the code by the electronic device, and / or the power level of the electronic device, an application applet having only a subset of the functionality of the installed application can be launched.

[0112] Figure 8 An electronic system 800 is shown that can be used to implement one or more implementations of the subject technology. The electronic system 800 can be Figure 1 The electronic device 110 and / or server 120 shown may be and / or may be a part thereof. The electronic system 800 may 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 a buffer), 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 a subset and variation thereof.

[0113] The bus 808 generally represents all system buses, peripheral busses, and chipset buses that communicatively connect the 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 with 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 perform the processes disclosed in the present subject matter. In different specific implementations, the one or more processing units 812 can be a single processor or a multi-core processor.

[0114] ROM 810 stores static data and instructions required by one or more processing units 812 and other modules of the electronic system 800. On the other hand, permanent storage device 802 can be a read-write memory device. 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 implementations, a mass storage device (such as a magnetic disk or optical disk and its corresponding disk drive) can be used as permanent storage device 802.

[0115] In one or more implementations, a removable storage device (such as a floppy disk, a flash drive, and its corresponding disk drive) may be used as the permanent storage device 802. Like the permanent storage device 802, the system memory 804 may be a read-write memory device. However, unlike the permanent storage device 802, the system memory 804 may be a volatile read-write memory, such as a random access memory. The system memory 804 may store any of the instructions and data that one or more processing units 812 may need at runtime. In one or more implementations, the processes disclosed in the subject matter are stored in the system memory 804, the permanent storage device 802, and / or the ROM 810. 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 perform the processes of one or more implementations.

[0116] The bus 808 is also connected to an input device interface 814 and an output device interface 806. The input device interface 814 enables a user to transmit information and select commands to the electronic system 800. Input devices that can be used with the input device interface 814 may include, for example, an alphanumeric keyboard and a pointing device (also referred to as a "cursor control device"). The output device interface 806 may, 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 may 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 implementations may include a device that acts as both an input device and an output device, such as a touch screen. In these specific implementations, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including acoustic, voice, or tactile input.

[0117] Finally, if Figure 8As shown, bus 808 also couples 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 800. In this manner, electronic system 800 may be part of a computer network, such as a LAN, a wide area network ("WAN"), or an intranet, or may be part of a network of networks, such as the Internet. Any or all components of electronic system 800 may be used with the subject disclosure.

[0118] According to various aspects of the present disclosure, a method is provided, the method comprising receiving a uniform resource locator associated with an application at an electronic device; 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 information associated with the uniform resource locator to one or more remote servers; receiving, at the electronic device, code for at least the version of the application from the one or more remote servers in response to the information; providing, by the electronic device, a request for user authorization from a user to install and launch at least the version of the application; receiving the user authorization by the electronic device; and installing and launching at least the version of the application in response to receiving the user authorization.

[0119] According to aspects of the present disclosure, a method is provided, the method comprising receiving a uniform resource locator for an application at an electronic device; and obtaining, by the electronic device, a temporary version of the application using the uniform resource locator, the temporary version including less functionality than a full version of the application.

[0120] According to various aspects of the present disclosure, a non-transitory machine-readable medium is provided, which includes codes that, when executed by a processor, cause the processor to: receive a uniform resource locator associated with an application at an electronic device; 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 information associated with the uniform resource locator to one or more remote servers; in response to the information, receive code for at least the version of the application from the one or more remote servers at the electronic device; provide, by the electronic device, a request for user authorization from a user to install and launch at least the version of the application; receive the user authorization by the electronic device; and, in response to receiving the user authorization, install and launch at least the version of the application.

[0121] According to various aspects of the present disclosure, a device is provided, which includes a memory and at least one processor, the at least one processor being configured to receive a uniform resource locator associated with an application at an electronic device; 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 information associated with the uniform resource locator to one or more remote servers; receive, at the electronic device, code for at least the version of the application from the one or more remote servers in response to the information; provide, by the electronic device, a request for user authorization from a user to install and launch at least the version of the application; receive the user authorization by the electronic device; and install and launch at least the version of the application in response to receiving the user authorization.

[0122] According to various aspects of the present disclosure, a non-transitory computer-readable medium storing instructions is provided, which, when executed by one or more processors, causes the one or more processors to perform operations including: 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 applications that can be obtained from a remote server; in response to determining that the uniform resource locator is associated with any one of the plurality of applications: generating a second hash of a first portion of the uniform resource locator; using the second hash of the first portion to obtain a data set including data of at least two of the plurality of applications from a remote server; determining 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, installing a specific one of the applications 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 data set, navigating to the uniform resource locator using a browser at the electronic device; and in response to determining that the uniform resource locator is not associated with any of the plurality of applications, navigating to the uniform resource locator using a browser at the electronic device.

[0123] According to various aspects of the present disclosure, a method is provided, the 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 applications that can be obtained from a remote server; in response to determining that the uniform resource locator is associated with any one of the plurality of applications: generating a second hash of a first portion of the uniform resource locator; using the second hash of the first portion to obtain a data set including data of at least two of the plurality of applications from a remote server; determining 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, installing a specific one of the applications 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 data set, navigating to the uniform resource locator using a browser at the electronic device; and in response to determining that the uniform resource locator is not associated with any one of the plurality of applications, navigating to the uniform resource locator using a browser at the electronic device.

[0124] Implementations within the scope of the present disclosure may be implemented in part or in whole using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) programmed with one or more instructions. Tangible computer-readable storage media may also be non-transitory in nature.

[0125] Computer-readable storage media can be any storage media that can be read, written, or otherwise accessed by a general or special computing device, including any processing electronics and / or processing circuitry capable of executing instructions. For example, without limitation, computer-readable media can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. Computer-readable media can 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.

[0126] In addition, the computer-readable storage medium may include any non-semiconductor memory, such as optical disk storage, magnetic disk storage, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more specific implementations, the tangible computer-readable storage medium may be directly coupled to the computing device, while in other specific implementations, the tangible computer-readable storage medium may be indirectly coupled to the computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.

[0127] Instructions can be directly executable, or can be used to develop executable instructions. For example, instructions can be implemented as executable or non-executable machine code, or can be implemented as high-level language instructions that can be compiled to produce executable or non-executable machine code. In addition, instructions can also be implemented as data, or can include data. Computer executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As recognized by those skilled in the art, the details including but not limited to the number, structure, sequence and organization of instructions can be significantly different without changing the underlying logic, function, processing and output.

[0128] Although the above discussion mainly involves microprocessors or multi-core processors that execute software, one or more implementations are performed by one or more integrated circuits such as ASICs or FPGAs. In one or more implementations, such integrated circuits execute instructions stored on the circuits themselves.

[0129] Those skilled in the art will recognize that the various illustrative frames, modules, elements, parts, methods and algorithms described herein can be implemented as electronic hardware, computer software or a combination of the two. In order to illustrate this interchangeability of hardware and software, various illustrative frames, modules, elements, parts, methods and algorithms have been generally described above according to functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the entire system. The technician can implement the described functionality in different ways for each specific application. Various parts and frames can be arranged differently (e.g., arranged in different orders, or divided in different ways) without departing from the scope of the subject technology.

[0130] It should be understood that the specific order or the hierarchical structure of the frame in the process disclosed by the present invention are the illustration of exemplary methods. Based on the design preferred requirements, it should be understood that the specific order or the hierarchical structure of the frame in the process can be rearranged or all the frames shown are executed. Any frame in these frames can be executed simultaneously. In one or more specific implementations, multitasking and parallel processing may be advantageous. In addition, the division of each system component in the above-mentioned specific implementation should not be understood as requiring such division in all specific implementations, and it should be understood that program components and systems can be generally integrated together in a single software product or encapsulated in multiple software products.

[0131] As used in this specification and 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 people or groups of people. For the purpose of this specification, the term "display" or "displaying" means displaying on an electronic device.

[0132] As used herein, the phrase "at least one of" following a list of items, any of which is separated by the terms "and" or "or", modifies the list as a whole, rather than each member (i.e., each item) of the list. The phrase "at least one of" does not require selection of at least one of each item listed; rather, the phrase allows for a meaning that includes at least one of any one item and / or at least one of any combination of items and / or at least one of each item. For example, the phrases "at least one of A, B, and C" or "at least one of A, B, or C" each refer to only A, only B, or only C; any combination of A, B, and C; and / or at least one of each of A, B, and C.

[0133] The predicate words "configured to," "operable to," and "programmed to" do not imply any particular tangible or intangible modification of a subject matter but are intended to be used interchangeably. In one or more specific implementations, a processor configured to monitor and control an operation or component may also mean that the processor is programmed to monitor and control the operation or that the processor is operable to monitor and control the operation. Likewise, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.

[0134] Phrases such as aspect, this aspect, on the other hand, some aspects, one or more aspects, a specific implementation, this specific implementation, another specific implementation, some specific implementations, one or more specific implementations, an embodiment, this embodiment, another embodiment, some embodiments, one or more embodiments, configuration, this configuration, other configurations, some configurations, one or more configurations, subject technology, disclosure, the present disclosure, other variations thereof, etc. are for convenience and do not mean that the disclosure involving such one or more phrases is essential to the subject technology, nor does it mean that such disclosure applies to all configurations of the subject technology. Disclosures involving such one or more phrases may apply to all configurations or one or more configurations. Disclosures 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 aforementioned phrases.

[0135] The word "exemplary" is used herein to mean "serving as an example, instance, or illustration." Any implementation described herein as "exemplary" or as an "example" is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, to the extent that the terms "including," "having," and the like are used in the specification or claims, such terms are intended to be inclusive, in a manner similar to the way the term "comprising" is interpreted when used as a transitional word in a claim.

[0136] All structural and functional equivalents to the elements of the various aspects described throughout this 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 made available to the public regardless of whether the disclosure is explicitly stated in the claims. No claim element shall be interpreted under the provisions of 35 U.S.C. §112(f) unless the element is explicitly stated using the phrase “means for…” or, in the case of a method claim, the element is stated using the phrase “step for…”

[0137] The previous description is provided to enable those skilled in the art to practice the various aspects described herein. Various modifications of these aspects are apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, the claims are not intended to be limited to the aspects shown herein, but are intended to make the full scope consistent with the language claims, wherein reference to elements in singular values ​​is not intended to mean "only one", but refers to "one or more", unless specifically noted. Unless otherwise specifically stated, the term "some" refers to one or more. Male pronouns (e.g., his) include female and neutral (e.g., her and its), and vice versa. Titles and subtitles (if any) are used only for convenience and do not limit the subject disclosure.

Claims

1. A method for starting an application, comprising: receiving, at an electronic device, a uniform resource locator associated with the application; Determining, by the electronic device, that the application is not installed on the electronic device; determining locally on 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; responsive to said determining that at least said version of said application is available, providing information associated with said uniform resource locator to one or more remote servers; receiving, at the electronic device from the one or more remote servers, code for at least the version of the application in response to the information, wherein the version of the application is a reduced functionality version of the application, the reduced functionality version of the application having less functionality than a full version of the application, and wherein the code for the version of the application is less than code for the application; providing, by the electronic device, a request for user authorization from a user to install and launch at least the version of the application; as well as In response to receiving the user authorization, at least the version of the application is installed and launched. 2 . The method of claim 1 , wherein said request for user authorization is provided during said receiving of said code.

3. The method of claim 2, wherein the code comprises binary code for the version of the application, and wherein the method further comprises: requesting a key for the binary code from the one or more remote servers in response to receiving the user authorization; In response to the request, receiving the key; as well as At least the version of the application is installed and launched using the key.

4. The method of claim 1, wherein the code for the version of the application is less than ten megabytes.

5. The method according to claim 1, further comprising: monitoring data usage of at least the version of the application for a predetermined amount of time after launching at least the version of the application; as well as If the data usage exceeds a predetermined rate during the predetermined amount of time, operation of at least the version of the application is terminated.

6. The method according to claim 1, further comprising: Receiving, by the electronic device, a request to obtain the complete application; storing, at the electronic device, data generated during operation of the reduced functionality version of the application; deleting the reduced functionality version of the application from the electronic device; downloading and installing the complete application from the one or more remote servers to the electronic device; as well as Access to the stored data is provided to the full application by the electronic device. 7 . The method according to claim 6 , further comprising requesting, by the electronic device, authentication information of a user account of the user for receiving the complete application before downloading and installing the complete application.

8. The method of claim 6, further comprising generating an icon of the full application selectable by the user to launch the full application, wherein at least the reduced functionality version of the application does not have an associated selectable icon.

9. The method of claim 1, wherein receiving the uniform resource locator comprises scanning a QR code by the electronic device.

10. The method of claim 1, wherein receiving the uniform resource locator comprises receiving a selection of a link.

11. The method of claim 1, wherein receiving the uniform resource locator comprises receiving the uniform resource locator based on a location of the electronic device.

12. The method according to claim 1, further comprising: identifying, by the electronic device, that a period of non-use of the version of the application exceeds a threshold period of time; as well as The code for the version of the application is deleted from the electronic device.

13. The method of claim 12, wherein deleting the code comprises automatically deleting the code in response to the non-use period exceeding the threshold period of time and without requiring user interaction.

14. The method of claim 1, further comprising preloading at least one reduced functionality version of at least one application from the one or more remote servers to the electronic device based on a location of the electronic device and crowdsourced information from other electronic devices associated with the location.

15. The method of claim 1, wherein the user authorization is received without receiving user authentication information.

16. A method for installing an application, comprising: receiving, at an electronic device, a uniform resource locator for the application; obtaining, by the electronic device, a temporary version of the application using the uniform resource locator, the temporary version of the application including less functionality than a full version of the application, and wherein code for the temporary version of the application is less than code for the full version of the application; Receiving authentication information of a user at the electronic device; Obtaining, by the electronic device, the complete version of the application using the authentication information; In response to obtaining the complete version of the application, deleting the temporary version of the application from the electronic device; installing the full version of the application on the electronic device; as well as Prior to deleting the temporary version of the application, access to data generated by the temporary version of the application is provided to the installed full version of the application. 17 . The method of claim 16 , further comprising receiving authorization from a user of the electronic device to obtain the temporary version of the application before obtaining the temporary version of the application. The method of claim 17 , wherein the authorization from the user is received without authentication of the user.

19. A non-transitory machine-readable medium comprising code that, when executed by a processor, causes the processor to: Receiving, at the electronic device, a uniform resource locator associated with the 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 information associated with the uniform resource locator to one or more remote servers; receiving, at the electronic device from the one or more remote servers, code for at least the version of the application in response to the information, wherein the version of the application is a reduced functionality version of the application, the reduced functionality version of the application having less functionality than a full version of the application, and wherein the code for the version of the application is less than code for the application; providing, by the electronic device, a request for user authorization from a user to install and launch at least the version of the application; Receiving the user authorization by the electronic device; and In response to receiving the user authorization, at least the version of the application is installed and launched.

Citation Information

Patent Citations

  • Portable electronic devices and methods for downloading applications based on presence of the portable electronic device in a defined geographical region

    CN101796803A

  • Application program downloading method and device

    CN102811240A

  • Code scanning method, code scanning device and mobile terminal

    CN107944325A

  • Method and device for starting applet and computer storage medium

    CN110389935A

  • Application installation system

    US10353686B1