Many users utilize applications to consume functionality provided by services. In an example, a user may install a social network application on a mobile device in order to access social network functionality provided by a social network service (e.g., the user may view user profiles, share content, send messages, etc.). In another example, a user may utilize a web browser to access a personal email account hosted by a personal email service. In another example, a user may install a microblogging application on a tablet device in order to share and/or view textual posts shared through a microblogging service. A user may have many user accounts (e.g., a social network login, an email login, a microblogging login, etc.) and/or contact lists (e.g., a social network friend list, an email address book, a microblogging follower list, etc.) for such services, which may be cumbersome for the user to manage.
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 dynamically maintaining a service profile are provided herein. That is, an operating system of a device (e.g., a laptop, a tablet, a mobile phone, a computer, a video game system, a television cable box, etc.) may host one or more applications that are associated with services. For example, a social network application may be associated with a social network service, a microblogging application may be associated with a microblogging service, a video chat application may be associated with a communication service, etc. It may be advantageous to aggregate user accounts from such services for utilization by the operating system (e.g., an operating system user interface such as a welcome screen or desktop interface), system components (e.g., a camera of a device), or other applications (e.g., a photo editing application). In this way, a user may have a robust experience where information from various services may be provided to the user through a single interface, which may be less cumbersome than individually opening applications, separately logging into accounts, and separately interacting with services through the applications. For example, the operating system may be capable of providing social network data through a first operating system user interface tile, video chat capabilities through a second operating system user interface tile, and/or a wide variety of other content and capabilities associated with services. Services may be added, updated, and/or removed from the system (e.g., from the operating system) based upon information provided by applications. In this way, a user can add a service (e.g., a service not hardcoded into the operating system) for utilization by the operating system, system components, and/or other applications by merely installing an application that can define information related to the service.
In an example, an application may be identified as a service provider application. A service provider application may be an application that is capable and/or trustworthy of defining a service. For example, a user may install an instant messaging application that declares itself as a service provider application having knowledge about one or more services (e.g., the instant messaging application may be associated with an application manifest specifying a service provider parameter identifying the instant messaging application as a service provider application). A service definition may be received from the service provider application (e.g., through an operating system application programming interface (API), through a service definition file stored within an operating system folder by the service provider application, etc.). The service definition may define the service associated with the service provider application (e.g., the instant messaging application may define an icon, a service ID such as a URL, a service display name, a set of capabilities such as messaging or photo sharing, and/or a variety of other information defining an instant messaging service).
A service profile for the service may be generated based upon the service definition. The service profile may be exposed to a system component, a second application, or other entity. In an example, the service profile may be exposed to an operating system desktop interface. Utilizing the service profile, the operating system desktop interface may access instant messaging service information from the instant messaging service. For example, the operating system desktop interface may display an instant messaging icon, an instant messaging service name, an ability to send a photo message, an instant messaging contact list, an instant messaging history, etc. In another example, the service profile may be exposed to a second application such as an email application. Utilizing the service profile, the email application may access instant messaging service information from the instant messaging service utilizing the service profile. For example, the email application may provide a user with the instant messaging contact list and the ability to send a photo message to a contact within the instant messaging contact list. Service profiles may be dynamically added, removed, and/or updated. In this way, the operating system may maintain an extensible service profile platform (e.g., as opposed to merely supporting a few services hardcoded into the operating system during release or from an operating system update).
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 in order 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.
An embodiment of dynamically maintaining a service profile is illustrated by an exemplary method 100 of
At 106, a service definition may be received from the service provider application. The service definition may define the service associated with the service provider application. For example, the school social network application may specify a school social network service ID such as a website address or IP address, an icon corresponding to a school mascot, display name for the school, capabilities of the school social network service such as messaging, profile viewing, posting, etc., and/or a variety of other information used to display information related to the school social network service, access service information from the school social network service, and/or facilitate execution of functionality provided by the school social network service, for example. In an example, the service definition may be received through an operating system application programming interface (API) exposed to the service provider application. In another example, the service provider application may store a service definition file within an operating system folder. In this way, the operating system may access a service definition comprised within the service definition folder. It may be appreciated that a variety of techniques may be used to provide and/or receive the service definition.
At 108, a service profile may be generated for the service based upon the service definition. In an example, a school social network service profile may comprise service display information specifying how the service is to be presented (e.g., by an operating system interface, a system component, a second application, etc.). The service display information may specify an icon used to visually represent the school social network service (e.g., an icon representing a mascot of a Technology Learning School), a display name (e.g., “Technology Learning School”), a service ID (e.g., a URL or IP address used to access the school social network service), etc. In another example, the school social network service profile may comprise a set of capabilities associated with the school social network service. For example, the school social network service may support a messaging capability, a social network profile access capability, a social network post capability, a calendar access capability, and/or other actions invokeable through the social network service (e.g., register for a class, email a professor, submit homework, etc.). It may be appreciated that a service profile may specify a wide variety of capabilities, such as a video call capability of a video chat service, an email capability of a personal email service, a phone call capability of an internet phone service, etc.
In an example, the service profile may be stored into a service profile database dynamically maintained by an operating system. In this way, a service may be dynamically introduced to the operating system based upon information provided by a service provider application. Thus, a user may influence what service information is provided and/or supported by the operating system by merely installing an application that is a service provider application (e.g., the operating system is not limited to supporting a few services that are initially hardcoded into the operating system and/or added through operating system updates). Accordingly, the ability of the operating system to support services may be extensible. In an example, services may be added, removed, and/or updated. For example, the service profile may be removed based upon a service profile removal request (e.g., the service profile removal request may be triggered based upon uninstallation of the service provider application, a request from the user, a notice that the service is no longer available, etc.). In another example, the service profile may be updated based upon a service profile update from the service provider application (e.g., a new icon may be specified for the service). In another example, the service provider application may specify service definitions for multiple services, and thus multiple service profiles may be generated based upon information provided by the service provider application (e.g., the school social network application may have knowledge about a school sports social network service).
At 110, the service profile may be exposed to a system component, a second application, and/or other entities. In an example, an operating system user interface (e.g., a desktop interface, a welcome screen interface, a tile interface, a menu options interface, a dropdown action list interface, etc.) may display an action capable of being performed by the school social network service (e.g., upon selecting a school social network contact displayed by the operating system user interface, a dropdown action list specifying a send message and/or other actions capable of being performed through school social network service may be displayed to a user). In another example, an operating system welcome screen interface may obtain service information from the school social network service utilizing the service profile. The operating system welcome screen interface may display the service information, such as a new homework assignment assigned to the user, through a tile interface. In another example, a second application, such as an image editing application, may be invoked to obtain service information from the school social network service by accessing the school social network service utilizing connection information within the service profile (e.g., the image editing application may utilize the connection information to retrieve an image attached to a message within a user inbox maintained by the school social network service). In this way, various system components and/or applications may utilize dynamically defined service profiles in order to access service information and/or facilitate actions associated with services. At 112, the method ends.
The service aggregator 306 may be configured to receive a service definition 304 from the photo sharing service provider application 302 (e.g., through an operating system API, through a service definition file, etc.). The service aggregator 306 may be configured to generate the service profile 308 associated with the photo sharing service based upon the service definition 304. In an example, the service profile 308 may specify a service ID (e.g., www.photosharer.com, an IP address, etc.) used to access the photo sharing service. The service profile 308 may comprise an icon (e.g., a photosharer.ico file corresponding to a logo of the photo sharing service) that may be displayed by the operating system, a system component, and/or other applications to represent the photo sharing service. The service profile 308 may comprise a set of capabilities supported by the photo sharing service, such as a photo profile post capability, a photo view capability, a message capability, and/or other actions supported by the photo sharing service. It may be appreciated that merely a few examples of information specified within a service profile are illustrated for simplicity.
The service aggregator 306 may be configured to expose the service profile 308 to one or more system components and/or one or more applications. In an example, the service aggregator 306 may expose the service profile 308 to a camera system component 310. In this way, the camera system component 310 may allow a user to perform an action supported by the photo sharing service, such as posting a photo captured by the camera system component 310 to a user photo board hosted by the photo sharing service. In another example, the service aggregator 306 may expose the service profile 308 to a user interface system component 312, such as an operating system welcome interface. In this way, the operating system welcome interface may utilize the service profile 308 in order to access and display service information obtained from the photo sharing service (e.g., logo from .ico file, a photo stream of photos shared by friends of the user, etc.). In another example, the service aggregator 306 may expose the service profile 308 to a second application, such as an image editor app 314. In this way, the image editor app 314 may provide the user with the ability to access and/or edit images shared through the photo sharing service.
The service profile database 402 may be dynamically maintained such that service profiles may be updated, removed, and/or added. In one example, a service profile update may be received from a photo sharing service provider application 302 illustrated in
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 that is devised in these ways 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 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, those skilled in the art will recognize 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 912 may include additional features and/or functionality. For example, device 912 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 918 and storage 920 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 912. Any such computer storage media may be part of device 912.
Device 912 may also include communication connection(s) 926 that allows device 912 to communicate with other devices. Communication connection(s) 926 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 912 to other computing devices. Communication connection(s) 926 may include a wired connection or a wireless connection. Communication connection(s) 926 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 912 may include input device(s) 924 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) 922 such as one or more displays, speakers, printers, and/or any other output device may also be included in device 912. Input device(s) 924 and output device(s) 922 may be connected to device 912 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) 924 or output device(s) 922 for computing device 912.
Components of computing device 912 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 13104), an optical bus structure, and the like. In another embodiment, components of computing device 912 may be interconnected by a network. For example, memory 918 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 930 accessible via a network 928 may store computer readable instructions to implement one or more embodiments provided herein. Computing device 912 may access computing device 930 and download a part or all of the computer readable instructions for execution. Alternatively, computing device 912 may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device 912 and some at computing device 930.
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.
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 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 which performs the function in the herein illustrated exemplary implementations of the disclosure. 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.