Many users perform tasks using a variety of applications hosted by client devices. In an example, a user may map driving directions using a map application. In another example, the user may plan a social party using a social network application. Such applications may be deployed from a remote source, such as an app store, onto a client device.
This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key factors or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Among other things, one or more systems and/or techniques for client-side flight version acquisition are provided. A remote source, such as an app store, may expose a variety of application packages for acquisition by client devices. For example, a clothes shopping application package, a videogame application package, a social network application package, and/or a wide variety of application packages may be exposed by the remote source as application packages, which may be used to deploy/install applications on client devices. One or more flight versions of an application package may be available from the remote source. For example, a female oriented flight version of the clothes shopping application package, a male oriented flight version of the clothes shopping application package, a teenager oriented flight version of the clothes shopping application, and/or other flight versions of the clothes shopping application package may be available.
A client-side deployment component may be hosted on a client device. The client-side deployment component may be configured to execute client-side functionality for selectively identifying, acquiring, and/or deploying a qualifying flight version of an application package to the client device based upon a client context (e.g., a gender, location, occupation, etc. of the user may be used to select a flight version of the clothes shopping application package that may be relevant to the user), which may improve privacy of user data (e.g., a social network profile, a device location, email data, and/or other user data that the user has opted-in to allow the client-side deployment component to access) and/or may offload processing from the remote source to client devices. The available flight versions of the application package may be customized and/or tailored for various types of users, and thus the client context may be used to select the qualifying flight version from among the available flight versions of the application package (e.g., a female flight version may be customized with female oriented merchandise; a teenage flight version may be customized with teenager oriented merchandise; etc.). In an example, the user may take affirmative action to provide opt-in consent to allow access to user data for identifying the client context.
In an example, an application package available for retrieval, such as the clothes shopping application package, may be identified from the remote source. A flight description for the clothes shopping application package may be retrieved. The flight description may comprise sets of flight distribution criteria for flight versions of the clothes shopping application package (e.g., a Germany location criteria, a female criteria, and a healthcare worker criteria may be specified for a first flight version; a male criteria may be specified for a second flight version; a United States location criteria and a female criteria may be specified for a third flight version; etc.). A set of filtering modules (e.g., a location filtering module, a gender filtering module, an occupation filtering module, etc.) may be invoked to filter the flight description based upon a client context to identify a qualifying flight version of the clothes shopping application package. For example, the gender filtering module may filter/disqualify the second flight version because the user is a female as opposed to being a male. The location filtering module may filter/disqualify the first flight version because the user is located in the United States as opposed to Germany. The qualifying flight version may be identified as the third flight version because the flight distribution criteria of the third flight version may be satisfied by the client context. Accordingly, the third flight version of the clothes shopping application package may be acquired from the remote source, and maybe deployed on the client device.
To the accomplishment of the foregoing and related ends, the following description and annexed drawings set forth certain illustrative aspects and implementations. These are indicative of but a few of the various ways in which one or more aspects may be employed. Other aspects, advantages, and novel features of the disclosure will become apparent from the following detailed description when considered in conjunction with the annexed drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are generally used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth to provide an understanding of the claimed subject matter. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, structures and devices are illustrated in block diagram form in order to facilitate describing the claimed subject matter.
One or more techniques and/or systems for client-side flight version acquisition are provided herein. A client-side deployment component may be hosted on a client device. The client-side deployment component may identify an application package available for retrieval from a remote source (e.g., a real estate application package available from an app store). A flight description may be retrieved for the application package. The flight description may describe sets of flight distribution criteria for various flight versions of the application package (e.g., a home buyer distribution criteria may be specified for a home buyer flight version; a home seller distribution criteria may be specified for a home seller flight version; a real estate agent distribution criteria may be specified for a real estate agent version; etc.) Flight versions may be customized and/or tailored for particular users (e.g., the home seller flight version may comprise for sale by owner functionality; the home buyer flight version may comprise submit offer functionality; a real estate agent flight version may comprise agent listing functionality; etc.). A client context may be identified (e.g., a social network profile and an email address may indicate that the user is a real estate agent). A set of filtering modules may be invoked to filter the flight description based upon the client context to identify a qualifying flight version of the application package (e.g., the home seller flight version and the home buyer flight version may be filtered/disqualified based upon the client context indicating that the user is not buying or selling a personal home). Accordingly, the qualifying flight version (e.g., the real estate flight version) may be acquired from the remote source, and may be deployed on the client device. Where multiple versions of an application package are available as a qualifying flight version (e.g., are not filtered out by filtering modules), one or more of these versions may be acquired and/or deployed, such as based upon user selection (e.g., in response to a user prompt to select from a list of qualifying flight versions), respective weightings applied to qualifying flight versions (e.g., based upon client context, prior/historical data/behavior of the user and/or one or more other users, respective dates/freshness of qualifying flight versions, respective downloads/popularity of qualifying flight versions, respective reputations of providers of qualifying flight versions, respective sizes of qualifying flight versions, respective file types of qualifying flight versions, etc.) and/or a plethora of other considerations regarding whether to acquire and/or deploy particular qualifying flight versions. Client-side flight version acquisition may improve privacy of user data such as the client context and/or may offload processing from the remote source.
An embodiment of client-side flight version acquisition is illustrated by an exemplary method 100 of
At 104, an application package, such as the restaurant application package, may be identified as being available for retrieval from the remote source. At 106, a flight description for the application package may be retrieved. The flight description may comprise sets of flight distribution criteria for various flight versions of the application package, such as a first set of flight distribution criteria for a first flight version and a second set of flight distribution criteria for a second flight version. For example, the flight description may specify a vegan diet flight distribution criteria for the vegan diet flight version, a no carb diet flight distribution criteria for the no carb diet flight version, a 21 or older age flight distribution criteria for the over 21 drink flight version, etc. In an example, one or more of the flight versions may be experimental versions of the application package, which may be retrieved by client devices for experimental/trial purposes.
At 108, a set of filtering modules may be invoked to filter the flight description based upon a client context to identify a qualifying flight version of the application package. The set of filter modules may comprise a variety of filtering modules, such as a gender filtering module, a device location filtering module, a device configuration filtering module, a user characteristic filtering module, a probabilistic filtering module, etc. In an example, the client context may be identified based upon a hardware configuration of the device (e.g., a CPU type, an amount of memory, touch input capabilities, screen resolution, a data plan for a mobile device, etc.), software configuration of the client device (e.g., an operating system type, installation of an app such as a diet app that may be indicative of foods that the user may be limited to eating, etc.), and/or descriptive user information of the user of the client device (e.g., a social network post indicating that the user has a food allergy, an email indicating that the user has an interest in Italian restaurants, gender, age, location, and/or a wide variety of information about the user). A user may take affirmative action to provide opt-in consent to allow access to user and/or other data for identifying the client context. In an example, the client context may be maintained on the client device and/or the remote source may be restricted from accessing the client context. Restricting disclosure of the client context may improve privacy of user data that is maintained locally on the client device.
The client context may be used by the set of filtering modules to filter the flight description to identify the qualifying flight version. The set of filtering modules may be executed on the client device, which may offload processing from the remote source. In an example, an age user characteristic filtering module may filter/disqualify the over 21 drink flight version based upon the user being younger than 21 years old. In another example, a diet user characteristic filtering module may filter/disqualify the vegan diet flight version based upon a social network profile indicating that the user is participating in a chicken protein with no carbs diet. In this way, the no carb flight version of the restaurant application package may be identified as the qualifying flight version because the no carb diet flight distribution criteria is satisfied by the client context. At 110, the qualifying flight version of the application package may be acquired from the remote source. At 112, the qualifying flight version of the application package may be deployed on the client device. For example, the no carb flight version of the restaurant application package may be installed on the client device. At 114, the method ends.
The client-side deployment component 404 may be configured to identify a client context 412 based upon a hardware configuration of the client device 402, a software configuration of the client device 402, and/or descriptive user information of a user of the client device 402 (e.g., a France location, a female gender, a 28 year old age, etc.) (e.g., where the user has consented to use of the same). The client-side deployment component 404 may invoke a set of filtering modules, such as an age filtering module 406, a location filtering module 408, a gender filtering module 410, an occupation filtering module, and/or other filtering modules, to filter the shopping flight description 418 using the client context 412 to identify a qualifying flight version of the shopping application package 416. For example, the age filtering module 406 may filter/disqualify the female ages 2-8 flight version and a female ages 9-25 flight version because the user is 28 years old. The location filtering module 408 may filter/disqualify the Germany flight version because the user is located in France. The gendering filtering module 410 may filter/disqualify a male flight version because the user is female. The occupation filtering module may filter/disqualify an athlete flight version and the medial worker flight version because the user is not an athlete and is not a medical worker. In this way, a female ages 26+ flight version 452 may be identified as the qualifying flight version of the shopping application package 416 based upon the client context 412 satisfying a set of flight distribution criteria for the female ages 26+ flight version 452.
The client-side deployment component 504 may be configured to identify a client context 512 based upon a hardware configuration of the client device 502, a software configuration of the client device 502, and/or descriptive user information of a user of the client device 502 (e.g., a Gym XYZ membership, a vegan diet, etc.) (e.g., where the user has consented to use of the same). The client-side deployment component 504 may invoke a set of filtering modules, such as a membership filtering module 506, a user characteristic filtering module 508, an occupation filtering module, and/or other filtering modules, to filter the workout flight description 518 using the client context 512 to identify a qualifying flight version of the workout application package 516. For example, the membership filtering module 506 may filter/disqualify the Gym ABC membership flight version because the user is not a member of Gym ABC. The user characteristic filtering module 508 may filter the meat only diet flight version and the Gym XYZ meat only diet flight version because the user is on a vegan diet. The occupation filtering module may filter/disqualify the Olympic qualifier flight version because the user is not an Olympic qualifier. In this way, the Gym XYZ vegan diet flight version 552 may be identified as the qualifying flight version of the workout application package 516 based upon the client context 512 satisfying a set of flight distribution criteria for the Gym XYZ vegan diet flight version 552.
The client-side deployment component 604 may be configured to identify a client context 612 based upon a hardware configuration of the client device 602, a software configuration of the client device 602, and/or descriptive user information of a user of the client device 602 (e.g., a Germany location, a photo sharing app installed on the client device 602, etc.) (e.g., where the user has consented to use of the same). The client-side deployment component 604 may invoke a set of filtering modules, such as a probability filtering module 606, a location filtering module 608, and a software filtering module 610, to filter the social network flight description 618 using the client context 612 to identify a qualifying flight version of the social network application package 616. For example, the Germany photo sharing app 10% flight version 620, the Germany photo sharing app 60% flight version 622, and the Germany photo sharing app 30% flight version 624 are not filtered out by the location filtering module 608 and the software filtering module 610 because the client device 602 is located in Germany and the photo sharing app is installed on the client device 602. The probability filtering module 606 may be configured to probabilistically select a flight version based upon the 10% distribution criteria, the 60% distribution criteria, and the 30% distribution criteria. For example, the probability filtering module 606 may probabilistically select the Germany photo sharing app 60% flight version 622 as the as the qualifying flight version. Because the probability filtering module 606 may utilize the distribution criteria specified in the social network flight description 618 (e.g., a 10% selection weight may be applied to the Germany photo sharing app 10% flight version 620, a 60% selection weight may be applied to the Germany photo sharing app 60% flight version 622, and a 30% selection weight may be applied to the Germany photo sharing app 30% flight version 624), the probability filtering module 606 may locally emulate such a distribution probability with respect to the client device 602 (e.g., such that 620 would be selected 10% of the time, 622 would be selected 60% of the time and 624 would be selected 30% of the time). In this way, the Germany photo sharing app 60% flight version 622 may be identified as the qualifying flight version of the social network application package 616.
Still another embodiment involves a computer-readable medium comprising processor-executable instructions configured to implement one or more of the techniques presented herein. An example embodiment of a computer-readable medium or a computer-readable device is illustrated in
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing at least some of the claims.
As used in this application, the terms “component,” “module,” “system”, “interface”, and/or the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. Of course, many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
Although not required, embodiments are described in the general context of “computer readable instructions” being executed by one or more computing devices. Computer readable instructions may be distributed via computer readable media (discussed below). Computer readable instructions may be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform particular tasks or implement particular abstract data types. Typically, the functionality of the computer readable instructions may be combined or distributed as desired in various environments.
In other embodiments, device 812 may include additional features and/or functionality. For example, device 812 may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated in
The term “computer readable media” as used herein includes computer storage media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions or other data. Memory 818 and storage 820 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 812. Computer storage media does not, however, include propagated signals. Rather, computer storage media excludes propagated signals. Any such computer storage media may be part of device 812.
Device 812 may also include communication connection(s) 826 that allows device 812 to communicate with other devices. Communication connection(s) 826 may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device 812 to other computing devices. Communication connection(s) 826 may include a wired connection or a wireless connection. Communication connection(s) 826 may transmit and/or receive communication media.
The term “computer readable media” may include communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” may include a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
Device 812 may include input device(s) 824 such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s) 822 such as one or more displays, speakers, printers, and/or any other output device may also be included in device 812. Input device(s) 824 and output device(s) 822 may be connected to device 812 via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s) 824 or output device(s) 822 for computing device 812.
Components of computing device 812 may be connected by various interconnects, such as a bus. Such interconnects may include a Peripheral Component Interconnect (PCI), such as PCI Express, a Universal Serial Bus (USB), firewire (IEEE 1394), an optical bus structure, and the like. In another embodiment, components of computing device 812 may be interconnected by a network. For example, memory 818 may be comprised of multiple physical memory units located in different physical locations interconnected by a network.
Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device 830 accessible via a network 828 may store computer readable instructions to implement one or more embodiments provided herein. Computing device 812 may access computing device 830 and download a part or all of the computer readable instructions for execution. Alternatively, computing device 812 may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device 812 and some at computing device 830.
Various operations of embodiments are provided herein. In one embodiment, one or more of the operations described may constitute computer readable instructions stored on one or more computer readable media, which if executed by a computing device, will cause the computing device to perform the operations described. The order in which some or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated by one skilled in the art having the benefit of this description. Further, it will be understood that not all operations are necessarily present in each embodiment provided herein. Also, it will be understood that not all operations are necessary in some embodiments.
Further, unless specified otherwise, “first,” “second,” and/or the like are not intended to imply a temporal aspect, a spatial aspect, an ordering, etc. Rather, such terms are merely used as identifiers, names, etc. for features, elements, items, etc. For example, a first object and a second object generally correspond to object A and object B or two different or two identical objects or the same object.
Moreover, “exemplary” is used herein to mean serving as an example, instance, illustration, etc., and not necessarily as advantageous. As used herein, “or” is intended to mean an inclusive “or” rather than an exclusive “or”. In addition, “a” and “an” as used in this application are generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Also, at least one of A and B and/or the like generally means A or B and/or both A and B. Furthermore, to the extent that “includes”, “having”, “has”, “with”, and/or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising”.
Also, although the disclosure has been shown and described with respect to one or more implementations, equivalent alterations and modifications will occur to others skilled in the art based upon a reading and understanding of this specification and the annexed drawings. The disclosure includes all such modifications and alterations and is limited only by the scope of the following claims. In particular regard to the various functions performed by the above described components (e.g., elements, resources, etc.), the terms used to describe such components are intended to correspond, unless otherwise indicated, to any component which performs the specified function of the described component (e.g., that is functionally equivalent), even though not structurally equivalent to the disclosed structure. In addition, while a particular feature of the disclosure may have been disclosed with respect to only one of several implementations, such feature may be combined with one or more other features of the other implementations as may be desired and advantageous for any given or particular application.