PATENT DOCUMENT

Publication Number: US-10146830-B2
Application Number: US-201414246128-A
Country: US
Kind Code: B2

Title: Cross application framework for aggregating data relating to people, locations, and entities

Abstract:
Some embodiments provide a cross application framework that supports a number of different applications and/or services to aggregate data relating to people, locations, and entities. The framework of some embodiments aggregates, from various data sources, different types of data, such as multimedia, communications, social media data, and location data. Once the data is aggregated, the framework provides the data to each requesting application. When an application is used to search for a person, the framework may provide the application with the person&#39;s emails, text messages, videos, photos, and social network activities.

Claims:
What is claimed is: 
     
       1. A method, comprising:
 at an electronic device with a display:
 displaying a list of contacts of a user in a contact application; 
 while displaying the list of contacts, detecting selection of a first contact in the list of contacts; 
 in response to detecting selection of the first contact, displaying a first page for the first contact that includes a plurality of different affordances for initiating communications from the electronic device to the first contact; 
 retrieving content from a first content source that contains current information from the first content source that is specific to the first contact, wherein the first content source is a map application; 
 retrieving content from a second content source, different from the first content source, that contains current information from the second content source that is specific to the first contact, wherein the second content source is a social networking application that is distinct from the map application; 
 while displaying the first page for the first contact, detecting a touch input on the first page for the first contact; and, 
 in response to detecting the touch input on the first page for the first contact, replacing display of the first page for the first contact with display of a second page for the first contact that concurrently displays:
 a first graphical representation of the retrieved content from the first content source that contains current information from the first content source that is specific to the first contact, wherein the first graphical representation is a map that displays a current location of the first contact as determined by the map application; and 
 a second graphical representation of the retrieved content from the second content source that contains current information from the second content source that is specific to the first contact, wherein the second graphical representation is a map that displays a current location of the first contact as determined by the social networking application. 
 
 
 
     
     
       2. The method of  claim 1 , wherein the second page is displayed in the contact application. 
     
     
       3. The method of  claim 1 , including:
 while displaying the second page for the first contact, detecting a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, scrolling the second page for the first contact to display information from a third content source that contains current information from the third content source that is specific to the first contact. 
 
     
     
       4. The method of  claim 1 , including:
 while displaying the second page for the first contact, detecting a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, replacing display of the second page with the first page for the first contact that includes the plurality of different affordances for initiating communications from the electronic device to the first contact. 
 
     
     
       5. The method of  claim 1 , wherein the first content source is a first application, and the method includes:
 while displaying the second page for the first contact, detecting a touch input on the first graphical representation of the retrieved content from the first content source; and, 
 in response to detecting the touch input on the first graphical representation of the retrieved content from the first content source, displaying the first application on the electronic device. 
 
     
     
       6. The method of  claim 1 , wherein the second page for the first contact concurrently displays an item that, when selected, initiates a process for providing directions from a current location of the electronic device to a current location of the first contact. 
     
     
       7. The method of  claim 1 , wherein the current location of the first contact as determined by the social networking application is a location that the first contact checked into with a social networking service. 
     
     
       8. An electronic device, comprising:
 a display; 
 one or more processors; 
 memory; and 
 one or more programs, wherein the one or more programs are stored in the memory and configured to be executed by the one or more processors, the one or more programs including instructions for:
 displaying a list of contacts of a user in a contact application; 
 while displaying the list of contacts, detecting selection of a first contact in the list of contacts; 
 in response to detecting selection of the first contact, displaying a first page for the first contact that includes a plurality of different affordances for initiating communications from the electronic device to the first contact; 
 retrieving content from a first content source that contains current information from the first content source that is specific to the first contact, wherein the first content source is a map application; 
 retrieving content from a second content source, different from the first content source, that contains current information from the second content source that is specific to the first contact, wherein the second content source is a social networking application that is distinct from the map application; 
 while displaying the first page for the first contact, detecting a touch input on the first page for the first contact; and, 
 in response to detecting the touch input on the first page for the first contact, replacing display of the first page for the first contact with display of a second page for the first contact that concurrently displays:
 a first graphical representation of the retrieved content from the first content source that contains current information from the first content source that is specific to the first contact, wherein the first graphical representation is a map that displays a current location of the first contact as determined by the map application; and 
 a second graphical representation of the retrieved content from the second content source that contains current information from the second content source that is specific to the first contact, wherein the second graphical representation is a map that displays a current location of the first contact as determined by the social networking application. 
 
 
 
     
     
       9. The electronic device of  claim 8 , wherein the second page is displayed in the contact application. 
     
     
       10. The electronic device of  claim 8 , wherein the one or more programs include instructions for:
 while displaying the second page for the first contact, detecting a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, scrolling the second page for the first contact to display information from a third content source that contains current information from the third content source that is specific to the first contact. 
 
     
     
       11. The electronic device of  claim 8 , wherein the one or more programs include instructions for:
 while displaying the second page for the first contact, detecting a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, replacing display of the second page with the first page for the first contact that includes the plurality of different affordances for initiating communications from the electronic device to the first contact. 
 
     
     
       12. The electronic device of  claim 8 , wherein the first content source is a first application, and wherein the one or more programs include instructions for:
 while displaying the second page for the first contact, detecting a touch input on the first graphical representation of the retrieved content from the first content source; and, 
 in response to detecting the touch input on the first graphical representation of the retrieved content from the first content source, displaying the first application on the electronic device. 
 
     
     
       13. The electronic device of  claim 8 , wherein the second page for the first contact concurrently displays an item that, when selected, initiates a process for providing directions from a current location of the electronic device to a current location of the first contact. 
     
     
       14. The electronic device of  claim 8 , wherein the current location of the first contact as determined by the social networking application is a location that the first contact checked into with a social networking service. 
     
     
       15. A non-transitory computer readable storage medium storing one or more programs, the one or more programs comprising instructions, which when executed by an electronic device with a display, cause the electronic device to:
 display a list of contacts of a user in a contact application; 
 while displaying the list of contacts, detect selection of a first contact in the list of contacts; 
 in response to detecting selection of the first contact, display a first page for the first contact that includes a plurality of different affordances for initiating communications from the electronic device to the first contact; 
 retrieve content from a first content source that contains current information from the first content source that is specific to the first contact, wherein the first content source is a map application; 
 retrieve content from a second content source, different from the first content source, that contains current information from the second content source that is specific to the first contact, wherein the second content source is a social networking application that is distinct from the map application; 
 while displaying the first page for the first contact, detect a touch input on the first page for the first contact; and, 
 in response to detecting the touch input on the first page for the first contact, replace display of the first page for the first contact with display of a second page for the first contact that concurrently displays:
 a first graphical representation of the retrieved content from the first content source that contains current information from the first content source that is specific to the first contact, wherein the first graphical representation is a map that displays a current location of the first contact as determined by the map application; and 
 a second graphical representation of the retrieved content from the second content source that contains current information from the second content source that is specific to the first contact, wherein the second graphical representation is a map that displays a current location of the first contact as determined by the social networking application. 
 
 
     
     
       16. The computer readable storage medium of  claim 15 , wherein the second page is displayed in the contact application. 
     
     
       17. The computer readable storage medium of  claim 15 , including instructions, which when executed by the electronic device with the display, cause the electronic device to:
 while displaying the second page for the first contact, detect a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, scroll the second page for the first contact to display information from a third content source that contains current information from the third content source that is specific to the first contact. 
 
     
     
       18. The computer readable storage medium of  claim 15 , including instructions, which when executed by the electronic device with the display, cause the electronic device to:
 while displaying the second page for the first contact, detect a touch input on the second page for the first contact; and, 
 in response to detecting the touch input on the second page for the first contact, replace display of the second page with the first page for the first contact that includes the plurality of different affordances for initiating communications from the electronic device to the first contact. 
 
     
     
       19. The computer readable storage medium of  claim 15 , wherein the first content source is a first application, and wherein computer readable storage medium includes instructions, which when executed by the electronic device with the display, cause the electronic device to:
 while displaying the second page for the first contact, detect a touch input on the first graphical representation of the retrieved content from the first content source; and, 
 in response to detecting the touch input on the first graphical representation of the retrieved content from the first content source, display the first application on the electronic device. 
 
     
     
       20. The computer readable storage medium of  claim 15 , wherein the second page for the first contact concurrently displays an item that, when selected, initiates a process for providing directions from a current location of the electronic device to a current location of the first contact. 
     
     
       21. The computer readable storage medium of  claim 15 , wherein the current location of the first contact as determined by the social networking application is a location that the first contact checked into with a social networking service.

Description:
CLAIM OF BENEFIT TO PRIOR APPLICATIONS 
     This application claims the benefit to U. S. Provisional Patent Application 61/893,130, entitled “Cross Application Framework for Aggregating Data Relating to People, Locations, and Entities” filed Oct. 18, 2013. 
    
    
     BACKGROUND 
     Today, data relating to an entity, such as a person or location, is stored in various different data sources. As an example, a restaurant can be featured in a number of different websites through different web services. The restaurant may have its own page with a social network service, another page with an online business review service, etc. Similarly, a person&#39;s data can be distributed across various different data sources. For instance, a person&#39;s pictures and videos may be stored with several different cloud services (e.g., a multimedia sharing service, a social network service, etc.). 
     There are several problems with such data that is distributed across different data sources. First, the data is difficult to share. If a person wants to share his or her online profiles with another individual, then the person would have to communicate to individual the different web services the person is a part of, as well as the login names or usernames of the web services. Sharing becomes even more difficult when people changes services (e.g., become a part of a new service, and/or abandon another service). 
     Another problem with such distributed data is that it can be difficult to search the data. To find data relating to an entity, a person has to navigate to different websites. The person may have to open several different applications to view the data. For instance, the person may have to open a multimedia sharing application to view pictures or videos relating to an entity, open a social network application to view social media posts relating to the entity, open a map application to view location data relating the entity, open a message application to view communications (e.g., emails, text messages) relating to the entity, etc. 
     BRIEF SUMMARY 
     Some embodiments provide a cross application framework that supports a number of different applications and/or services to aggregate data relating to people, locations, and other entities. The framework of some embodiments aggregates, from various data sources, different types of data, such as multimedia (e.g., video, photos), communications (e.g., emails, text messages), social media data (e.g., social network activities), and location data (e.g., the current location of a person, the location where the person checked into). Once the data is aggregated, the framework provides the data to any one or more of the different applications. For instance, when an application is used to search for a person, the framework may provide the application with the person&#39;s emails, text messages, videos, photos, social network activities, etc. 
     In some embodiments, the framework is used to access various web services to aggregate or download data onto a device. For instance, the framework may access a social network service to download several social network posts relating to an entity (e.g., a person, a location), a multimedia sharing service to download photos and/or videos relating to the entity, etc. In conjunction with one or more web services, or instead of them, the framework of some embodiments is used to access data that is locally stored on a computing device. For instance, the framework may be used to gather photos or videos relating to an entity that are stored in a particular folder on the computing device or gather recent communications relating to the entity from a local cache of a communication application. The framework of some embodiments works in conjunction with one or more applications to aggregate data relating to an entity. 
     To aggregate data relating to an entity, the framework of some embodiments uses a profile associated with the entity. The profile may include various information regarding the entity, including entity identifiers or social media handles (e.g., usernames or login names) of different web services. The framework may aggregate data from each web service using the corresponding entity identifier from the profile. In some embodiments, the profile is a contact card created by the entity to share data with another entity. The contact card may be synced across multiple different devices, in some embodiments. Instead of a contact card, the profile can be an online public profile or registry relating to a person or location. 
     In addition to the framework, some embodiments provide an application that uses the framework to aggregate data and present the aggregated data. The framework of some such embodiments includes a staging area to view the aggregated data. In particular, the staging area allows the application&#39;s user to quickly view (e.g., scroll and/or navigate) between different types of aggregated data, such as photos relating to a person, communications relating to the person, etc. In this manner, the user does not have to open different applications and/or access different websites to view data relating to the entity. 
     One of the main ideas described herein is to break the application boundary and allow the user to search across different data sources. Breaking the application boundary means that every application can be discovered in another application. That is, the application&#39;s user can seamlessly transition to the different views with different data (e.g., quickly switch from viewing a restaurant&#39;s entire menu to viewing its reviews, making a reservation, or ordering a menu item; quickly switch from viewing a person&#39;s photos and videos from a number of different social network services to viewing the person&#39;s emails and text messages, etc.). 
     The preceding Summary is intended to serve as a brief introduction to some embodiments as described herein. It is not meant to be an introduction or overview of all subject matter disclosed in this document. The Detailed Description that follows and the Drawings that are referred to in the Detailed Description will further describe the embodiments described in the Summary as well as other embodiments. Accordingly, to understand all the embodiments described by this document, a full review of the Summary, Detailed Description and the Drawings is needed. Moreover, the claimed subject matters are not to be limited by the illustrative details in the Summary, Detailed Description and the Drawings, but rather are to be defined by the appended claims, because the claimed subject matters can be embodied in other specific forms without departing from the spirit of the subject matters. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The novel features as described here are set forth in the appended claims. However, for purposes of explanation, several embodiments are set forth in the following figures. 
         FIG. 1  illustrates a system with a data aggregation framework that gathers data for number of different applications. 
         FIG. 2  provides an illustrative example of a system that uses a set of social network frameworks to gather data from remote data sources. 
         FIG. 3  provides an illustrative example of how the data aggregation framework of some embodiments provides support for a contacts application. 
         FIG. 4  provides an illustrative example of how the framework of some embodiments presents location data relating to a person. 
         FIG. 5  provides an illustrative example of how the framework of some embodiments displays multimedia relating to a person. 
         FIG. 6  provides an illustrative example of how the framework of some embodiments provides support for a search tool of an operating system. 
         FIG. 7  provides another example of how the framework of some embodiments provides support for a search tool of an operating system. 
         FIG. 8  illustrates an example of how the framework of some embodiments provides support for a map application. 
         FIG. 9  provides an illustrative example of displaying additional data relating to a location. 
         FIG. 10  provides an illustrative example of displaying data relating to an entity. 
         FIG. 11  illustrates an example of person updating the person&#39;s contact card with social network information. 
         FIG. 12  illustrates specifying different access settings for different individuals. 
         FIG. 13  illustrates specifying different access settings for different groups of people. 
         FIG. 14  illustrates an example of a person sharing the person&#39;s contact with another person. 
         FIG. 15  illustrates an example of synchronizing an update to a contact card across multiple devices. 
         FIG. 16  provides a data flow diagram that illustrates a contact card update that is synchronized across several different devices through a cloud service. 
         FIG. 17  illustrates an example of a person receiving updates from a social network service after that person signs up with the service. 
         FIG. 18  illustrates another example of the person receiving updates from another social network service. 
         FIG. 19  conceptually illustrates a software architecture of an operating system of some embodiments. 
         FIG. 20  conceptually illustrates an electronic system with which some embodiments of the invention are implemented. 
     
    
    
     DETAILED DESCRIPTION 
     In the following detailed description of the invention, numerous details, examples, and embodiments of the invention are set forth and described. However, it will be clear and apparent to one skilled in the art that the invention is not limited to the embodiments set forth and that the invention may be practiced without some of the specific details and examples discussed. 
     Embodiments described herein provide a cross application framework that supports a number of different applications and/or services to aggregate data relating to people, locations, and entities. The framework of some embodiments aggregates, from various data sources, different types of data, such as multimedia (e.g., video, photos), communications (e.g., emails, text messages), social media data (e.g., social network activities), and location data (e.g., the current location of a person, the location where the person checked into with a social network service). Once the data is aggregated, the framework provides the data to any one or more of the different applications. For instance, when an application is used to search for a person, the framework may provide the application with the person&#39;s emails, text messages, videos, photos, and social network activities. 
     For some embodiments,  FIG. 1  illustrates a system  100  with a data aggregation framework  105  that supports a number of different applications  125 - 135 . The framework  105  of some embodiments is a service that operates in conjunction with several data sources  110 - 120  to gather data for the applications  125 - 135 . In the example of  FIG. 1 , the data sources  110 - 120  include at least one communication application  110 , a social network application  115 , and a multimedia application  120 . However, the data aggregation service  105  may operate in conjunction with fewer data sources or even more data sources. 
     The communication application  110  can be any different type of communication application that is used to exchange messages. Examples of such an application include an email application to exchange emails and a text message application to exchange text messages (e.g., Short Message Service (SMS) messages or other instant messages, etc.). Different from the communication application  110 , the multimedia application  120  is used to manage multimedia. The multimedia application can be a camera application to capture photos and videos, a media editing application to edit multimedia, a media organizing application to organize multimedia, etc. 
     In the system  100  of  FIG. 1 , the social network application  115  represents an application to access a social network service. There are many different social network services. A social network service in general provides a platform to build social relations among people. The relationship can be established based on different factors, including shared interests, real-life connections, activities, and professional background. The social network application  115  is used to access services of the corresponding social network. This can include posting messages, blogs, micro-blogs, sharing multimedia, exchange social network messages, etc. 
     In addition to the data sources  110 - 120 , the system  100  includes several data consumers  125 - 135 . Particularly, the applications  110 - 120  consume the data provided by the data aggregation service  105 . Each of these applications can be any different type of application such as a map application, a contacts application, or a search application. Instead of, or in conjunction with, a standalone application, in some embodiments, an operating system&#39;s search tool is the consumer of the data provided by the data aggregation service  105 . As an example, when a user enters a name of a person in the search tool, the service  105  might gather emails, videos, pictures, social media postings, and other data; and provide that data to the search tool. In this manner, the search tool displays the received data as a part of the search result set. 
     As mentioned above, the data aggregation service  105  of some embodiments operates in conjunctions with the data sources  110 - 120  to gather data for the data consumers  125 - 135 . In some embodiments, the data aggregation service  105  aggregates communications (e.g., emails, text messages) through one or more of the communication applications. The data aggregation service  105  aggregates multimedia (e.g., video clips, photos) through one or more of the multimedia applications. The data aggregation service  105  aggregates social network activities (e.g., text posts, video posts, photo posts) through one or more of the social network applications. 
       FIG. 1  also shows several storages  140 - 150  that store the gathered data. The storage&#39;s contents are conceptually shown in this figure as being partitioned into three separate storages. However, one of ordinary skill in the art would realize that the contents of these storages could be distributed across less storage (e.g., one storage) or even more storages. As shown, the storage  140  stores data relating to people, the storage  145  stores data relating to locations, and the storage  150  stores data relating to entities. Locations can encompass businesses (e.g., places that provide goods or services, such as restaurants, movie theaters, etc.), institutions, residences, and other places (e.g., a geographic area such as a park, a lake, etc.). In some embodiments, entities represent everything else that does not fall into the people and location categories. An entity in some embodiments can be literally anything that a person or a group of people might be interested in, e.g., an event (e.g., concert, sporting event), food, movie, religion, affiliation, an organization (e.g., Red Cross), etc. 
     Having described the system&#39;s components of  FIG. 1 , an example operation of the system  100  will now be described. The data aggregation service  105  operates in conjunction with one or more of the communication applications to aggregate communication data (e.g., emails, text messages). The data aggregation service  105  operates in conjunction with one or more of the multimedia applications to aggregate multimedia (e.g., photos, video clips). The data aggregation service  105  of some embodiments operates in conjunction with one or more social network applications to aggregate social network data. The social network data can include social network activities (e.g., postings, messages) and multimedia (e.g., photos, video clips). 
     In some embodiments, the data aggregation service  105  stores the data gathered from the data sources  110 - 120  in one or more of the storages  140 - 150 . For instance, the data aggregation service  105  might store communications, multimedia, and social network data relating to a person in the storage  140 . The data aggregation service  105  might store communications, multimedia, and social network data relating to a location in the storage  145 . In addition, the data aggregation service  105  might store communications, multimedia, and social network data relating to an entity in the storage  150 . 
     Instead of storing the data, the data aggregation service dynamically gathers data when it receives a request for the data from a data consumer (e.g., the application  125 ,  130 , or  135 ). Alternatively, in some embodiments, the data aggregation service  105  might store data from some of the data sources  110 - 120  but not all of the data sources. For instance, a photo application might capture a photo and store it in the device&#39;s storage, and the data aggregation service  105  may interface with a media library framework (not shown) to locate the photo when requested by a data consumer. 
     In some embodiments, the data aggregation service  105  utilizes one or more separate data access framework in order to aggregate data from different data sources.  FIG. 2  provides an illustrative example of a system  200  that uses a set of one or more social network framework  205  to aggregate data from social network services  210 - 220 . 
     In some embodiments, the social media services  210 - 220  are remote data sources that are accessible by the data aggregation service  105  through the set of social network frameworks  205 . In other words, these sources  210 - 220  are not one of the applications  225  that are installed on the same device that executes the data aggregation service  105 . In the example of  FIG. 2 , the services include a social network service  210 , a microblogging service  215 , and a photo/video sharing service  220 . 
     The set of social network frameworks  205  provides interfaces to access social media accounts for different social network services  210 - 220 . In particular, the set of social network frameworks  205  allows programmers to integrate applications with supported social networking services. The framework  205  of some embodiments provides various modules to create a network session and retrieve the activity feed for a particular person, a location, or an entity. In some embodiments, the set of social network frameworks  205  has access to account information to retrieve social network data from the services  210 - 220 . For instance, the set of network frameworks  205  accesses a storage  225  that has account names, tags, and/or handles for people, locations, and entities. 
     Several more detailed examples of the data aggregation framework are described below. Specifically, Section I describes examples of how the framework supports different types of applications, including a contacts application, a map application, and a search application. Section II then describes an example of presenting data relating to an entity. This section also describes how some embodiments automatically create an entity and present the entity to a person. This is followed by Section III that describes several examples of managing access to data from different social network services. Section IV then describes an example software architecture of an operating system with such a data aggregation framework. Lastly, Section V describes an electronic system that implements some embodiments of the invention. 
     I. Example Use Cases 
     The data aggregation framework of some embodiments provides support for different applications. Several example uses cases of the framework will now be described below by reference to  FIGS. 3-9 . In these examples, the framework supports a contacts application, a map application, and an operating system&#39;s search tool. However, the framework can support other applications and other operating services, in some embodiments. 
     A. Contacts Application 
       FIG. 3  provides an illustrative example of how the framework of some embodiments provides support for a contacts application. Specifically, this figure shows how the framework aggregates data to display communications relating to a person. This figure also introduces a user interface with several affordances that allows a user to switch between the contact information, which is currently in the card, and other data (e.g., communications, location data, and multimedia) relating to the person. Four operational stages  302 - 308  of the mobile device are shown in this figure. The first stage  302  shows the device  300  displaying a home page  310  on the device&#39;s touch-sensitive screen. The home page  310  shows several icons  312 - 318  for launching different applications. These icons include a maps icon  312  for launching a map application, a contacts icon  314  for launching a contacts application, a first social media icon  316  for launching a first social media application, and a second social media icon  318  for launching a second social media application. The homepage  310  is also overlaid by a dock  320 . Several other icons  322 - 328  are arranged along the dock. Specifically, the icons includes (1) a phone icon  322  for a phone application to make phone calls, (2) an email icon  324  for an email application to view and exchange emails, (3) a camera icon  326  for a camera application to capture and view photos and videos, and a message icon  328  for a message application to exchange messages (e.g., SMS messages or other instant messages). 
     In the first stage  302 , the device&#39;s user selects the contact icon  314  for the contacts application. In particular, the device&#39;s user taps the user&#39;s finger on the touch screen display over the icon  314 . The touch input gesture causes the contacts app to be opened, as illustrated in the second stage  304 . 
     The second stage  304  shows that the contacts application has been opened to a page  360  with a list of contacts  332 . This page  360  also includes a search tool  330 . The user can use the search tool  330  to search for a particular person or place (e.g., business). In some embodiments, the search tool filters the list of contacts  332  to only each person or place that satisfies the search query. In the example of the second stage  304 , each person is listed in the list in alphabetical order by the person&#39;s first name. To display additional data regarding a particular person, the user may select the name of the person from the list. As illustrated in this example, the user is selecting the name “Alex Bolita”  334  from the list of contacts  332 . 
     The third stage  306  shows the device  300  after the user has selected the name Alex Bolita  334  from the contacts list  332 . The selection resulted in the device displaying a page  336  with additional info relating to the person. As shown, the page  336  displays the name of the person, Alex Bolita. The page can also display a picture of the person. The page includes several fields  338 - 340 . These fields show the email address and phone number of the person. 
     In the example of the third stage  306 , the page  336  includes several selectable items to display additional information regarding the person. The additional information can include data gathered by the data aggregation framework. Specifically, the page includes a communication tab  342  to display communications relating to the person, a location tab  344  to display location data relating to the person, and a media tab  346  to display multimedia data (e.g., pictures, videos) relating to the person. In some embodiments, the page  336  is referred to as a staging area  336  for displaying additional data regarding the person. 
     In the third stage  306 , the user directs the contacts application to display communications relating to the person. Specifically, the user taps the user&#39;s finger on the touch screen display over the communication tab  342 . As shown in the fourth stage  308 , the gesture causes the device to display a page  348  that shows the person&#39;s communications. In particular, the page  348  displays the person&#39;s call log  350 , text messages  352 , e-mail messages  354 , and social networking posts  356 . As illustrated, each of these communications was retrieved from a different application (e.g., email application, social networking application). The user is thus able to view different communications related to the person across different applications. 
     In addition to viewing communication data related to a particular person, the framework of some embodiments also allows a user to view location data related to a person.  FIG. 4  provides an illustrative example of how the framework of some embodiments presents data about a location(s) of a particular person as gathered from different data sources. Specifically, this figure illustrates three stages  405 - 415  of the device displaying location information related to a particular person. Stage  405  illustrates the device  300  displaying the staging area  336  for a particular person, Alex Bolita. As previously described, the staging area  336  includes information regarding the person&#39;s telephone number and e-mail address. Furthermore, the staging area  336  displays tabs for accessing communications, media, or location data related to the person. As illustrated in this stage  405 , the device  300  is receiving a user&#39;s touch input over the location tab  344 . The touch input causes the device to display the location information related to Alex Bolita, as illustrated in the stage  410 . 
     Stage  410  illustrates the device  300  displaying a page  420  with several maps  430 - 440 . Each map provides location data that has been retrieved from a particular data source (e.g., map application or social network service). In particular, map  430  displays the current location of the person  435  as determined by the particular map application. The user may then select different tabs for different purposes, including a “get directions” tab to receive directions from the user&#39;s current location (i.e., the location of the device) to the particular person (i.e., Alex Bolita). The page  425  also displays a map  440  for location data gathered from the social network service. As illustrated in stage  410 , the device is receiving a user&#39;s touch input to scroll down on the page, and thus bring into the display area more of the map  440  for the social network service. 
     Stage  415  illustrates the device  300  displaying a greater portion of the map  440  based on the social network service. Specifically, this map  440  indicates that this person checked into “Muscle Gym” 3 hours ago. As such, the page  425  displays location data gathered from multiple different sources, including the map application, social network services, and other sources that are capable of providing this type of information to the device. 
     In addition to viewing communication data (e.g.,  FIG. 3 ) and location data (e.g.,  FIG. 4 ) related to a particular person, the framework of some embodiments also allows a user to view various media data (e.g., images and videos) related to a person.  FIG. 5  provides an illustrative example of how the framework of some embodiments displays media data related to a particular person. Specifically, this figure illustrates three stages  505 - 515  of the device displaying media data related to a particular person. 
     Stage  505  illustrates the device  300  displaying the same staging page  336  described above by references to  FIGS. 3 and 4 . In particular, the staging page  336  is displaying information for a particular person, Alex Bolita. In this particular example, the device  300  is receiving a touch input of the media tab  344 . The input causes the device to display multimedia (e.g., photos, video) related to the particular person, as illustrated in stage  510 . 
     Stage  510  illustrates the device  300  displaying a page  525  that includes multimedia from various different sources. In particular, page  525  is displaying images that are stored within a library of the device, images gathered from e-mails (i.e., as attachments in emails or from the body of emails, etc.). Furthermore, stage  510  illustrates the user scrolling down on the page to view additional multimedia data from different sources (i.e., applications or services). 
     Stage  515  illustrates the device displaying multimedia data (i.e., videos and images) gathered from a social network  530  application. As such, the device provides the user with a holistic view of all of the person&#39;s multimedia data as gathered from a variety of different applications (e.g., email, media editing applications, etc.) and services (e.g., social networks, image services, etc.). In addition to accessing the communication, location, and media data from the staging page described in  FIG. 3-6 , in some embodiments, the operating system of the device allows a user to access this same data through various different user interface mechanisms. 
     In some embodiments, the data aggregation framework aggregates multimedia based on metadata (e.g., tags, keywords, markings, album name). For example, the framework may use tags and/or album names to aggregate multimedia regarding a person, location, or entity. In some embodiments, the data aggregation framework communicates a social network framework to retrieve photos and videos from a social network service. The aggregation framework might utilize the social network framework to dynamically retrieve (in response to an application query) multimedia postings relating to a person, a location, or an entity from a social network site. 
     B. Search Tool 
     In the example use cases described above, the data aggregation framework provides support for a contacts application. In some embodiments, the data aggregation framework provides support for a search or finder tools of an operating system (OS).  FIG. 6  provides an illustrative example of how the framework of some embodiments provides support for a search tool. In particular, the figure illustrates four stages  605 - 620  of a user searching for a particular person and being presented with different data related to the person. Stage  605  illustrates the device  600  displaying the home page  625  of the operating system. The home page  625  displays the set of selectable icons for launching different applications, including the map application, the contact application, a social app  1  application, and a social app  2  application. The homepage  625  is also overlaid by the dock that includes the phone icon, email icon, web icon, and music icon. 
     Stage  605  illustrates the device  600  receiving a swiping gesture on the home screen  625 . In particular, the user is touching the screen of the device  600  and swiping their finger in a particular direction (e.g., a downward direction) on the screen. In some embodiments, when the device  600  detects such a swiping gesture, the device presents a search tool for searching data on the device. 
     Stage  610  illustrates the device  600  now displays a search tool  635  and an on-screen keyboard  630 , which have replaced the home page  625  that was displayed in stage  605  as a result of the user&#39;s performing the swiping gesture. The search tool  635  receives and displays the search terms that a user has input using the on-screen keyboard  630  and that will be searched by the device  600 . The user may input different search terms by touching the appropriate keys on the on-screen keyboard  630 . 
     Stage  615  illustrates that the search tool  635  displays the search term “Alex Bolita”. This term was input by the user during stage  610 . As such, the device  600  is displaying various different types of data that has been gathered by the device for the particular search term within a search result page  640 . In particular, the page  640  displays a communication section  645  that provides a list of different types of communications of the particular person, a location tab  650  for providing location data related to the person, a media tab  655  for displaying multimedia (e.g., pictures, videos) related to the person, and a search web  660  tab for providing information related to the person as available on the Internet. 
     As illustrated in stage  615 , the communication  645  section further displays different types of communications related to the person, including a call log, text messages, and social network posts related to Alex Bolita. The call log indicates that there was a missed call from Alex at 11:00 AM on Oct. 17, 2013. The text messages display a text message sent between Alex Bolita. Lastly, the social network posts section indicates that Alex Bolita posted a message “Free Pancakes Everyone” at 4:11 PM. As such, the staging area  640  displays a variety of different types of communications gathered from different applications (e.g., call log, text messages, social media, etc.) related to the particular person. Thus, the device  600  is able to provide a holistic view of all of a person&#39;s communications gathered from different applications and services. 
     Stage  615  also illustrates the device  600  receiving a touch input on the media tab  655 . In particular, the user is interested in viewing media data for Alex Bolita. Stage  620  illustrates the device  600  displaying the various media  655  for Alex Bolita. As illustrated, the display area displays images gathered from emails, social networks, and various other data sources. 
     In the example described above, the search result page  615  displays communications from various data sources but does not display location data and multimedia. That is, the user has to select a tab to display the location data and the multimedia data. In some embodiments, the search tool can be used to display a search result page that includes communications, location data, and multimedia for a particular person, location, or entity. 
       FIG. 7  provides another example of how the framework of some embodiments provides support for a search tool of an operating system (OS). This figure is similar to the previous figure. However, in this example, the search result includes a contact for a person. The device&#39;s user selects this contact to display a staging area for accessing communication, location data, and media data relating to the person. This figure illustrates four stages  705 - 720  of the user searching for a particular person and the operating system presenting the staging area for accessing different types of data related to the person. 
     Stages  705  and  710  of  FIG. 7  are identical to stages  605  and  610  of  FIG. 6 . In particular, stage  705  illustrates the home page  725  being displayed by the operating system of the device  700 . Furthermore, the device  700  is receiving a downward swiping gesture from the user. Stage  710  illustrates the operating system of the device  700  displaying a search tool  730  for entering and displaying search terms and the GUI of a keypad  730 . 
     Stage  715  illustrates the operating system displaying various search results for the search term “John Appleseed” that was input in stage  710 . In particular, the search results include a contact  745  icon for John Appleseed, as well as other information. Furthermore, the user is selecting the contact tab  745  in order to view more information for this particular person. 
     Stage  720  illustrates the device displaying the staging area  750  with various different menu tabs for accessing different data for the contact John Appleseed. The staging area  750  includes the mobile telephone number and email address of this person. Furthermore, the staging area  750  provides a communications  755  tab for accessing different types of communications of the person, a location  760  tab for accessing location data related to the person, and a media  765  tab to display multimedia (e.g., pictures, videos) relating to the person. In addition to providing support for the search tool, the framework provides support for various other applications hosted by the operating system. 
     C. Map Application 
     In the example use case described above, the data aggregation framework provides support for a search tool. In some embodiments, the framework aggregates data for a map application.  FIG. 8  illustrates an example of how the framework of some embodiments provides support for a map application. Particularly, the six operational stages  802 - 812  in this figure illustrate how a user can access a staging area  812  of a map application. In some embodiments, the staging area provides access to communications, location data, and/or multimedia relating to a location. 
     The first stage  802  illustrates the home page  814  of the device  800  displaying three icons for launching three different applications. Particularly, the home page  814  displays a map icon  816  for launching a map application, a contacts icon for launching a contacts application, and a social app  1  icon for launching a social media application. The first stage  802  also shows that the user of the device is selecting the map icon  816  (e.g., by tapping on the touch-sensitive screen of the device over the map icon  816  on) in order to open the map application. 
     The second stage  804  illustrates that the device is now displaying a map application with a map page  816  and a search tool  818 . The map page shows the current location of the user (e.g., the user&#39;s device). In some embodiments, the search tool  818  of the map application is for searching for a particular place or location on the map. In the third stage  806 , an on-screen keyboard  820  has appeared on the display screen of the device as the result of selecting the search tool  818  in the previous stage. The third stage  804  also shows that the user is entering the name of the desired place into the search tool by using the on-screen keyboard  820 . 
     The fourth stage  808  illustrates that the user has typed “ABC Theater” in the search tool as the location for which the user needs an address. The search tool of some embodiments conducts a dynamic search for all possible locations that the user might have in mind as the user enters the name or address of the place. As shown in the fourth stage  808 , the search tool is now displaying a list of locations  822  that have similar names to the search phrase. In some embodiments, when there is more than one result for the search, the search tool displays the results in the list  822  in a particular order (e.g., depending on whether the result exists in the contacts, whether the result is in the search history, etc.). In the fourth stage  808 , the user selects the first result (i.e., ABC Concert Hall) by tapping on its corresponding item  824  in the list  822 . 
     The fifth stage  810  illustrates that the map application is now displaying the location of the searched item on the map (e.g., by dropping a pin on the specific location). Additionally, the map application is displaying a banner  826  on top of the searched location (i.e., pointing to the pin), which shows the name of the location and the driving distance from the current location of the device to the searched location (e.g., by displaying the driving time under a car icon on the banner  826 ). In this stage  808 , the user selects the banner  826  by tapping on the touch sensitive screen of the device over the banner  826 . In some embodiments, selecting the banner in the map application results in accessing the staging area in order to receive additional data regarding the searched location or place. 
     The sixth stage  812  illustrates the staging area page  850 , which includes different information about the searched place (i.e., ABC Concert Hall) in several different sections. These sections include a name and driving distance section  830 , a field  832  for displaying the phone number of the place, and a field  834  for displaying the address of the place. In some embodiments, the selection of the phone number launches a phone application to call the phone number, and the selection of the address launching a navigation application to navigate to the address. The staging area page  828  also includes a communication tab  836  for opening a list of different types of communications related to the location, an events tab location tab  838  for displaying events (e.g., schedule of events) in connection with the searched place, and a media tab  840  for displaying multimedia (e.g., pictures, videos) related to the location. 
     In some embodiments, the events represent a catalog associated with the entity. Different entities are associated with different catalogs. As an example, a theater&#39;s catalog can be the schedule of shows or event, a restaurant&#39;s catalog can be its entire menu, a store&#39;s catalog can be the products that it sells, etc. In some embodiments, the application allows the user to purchase items from the catalog. For instance, the person can navigate to the events page and use the page to order a ticket to a show that is scheduled at the location. The catalog of some embodiments includes a list of featured items, such as today&#39;s menu special, sale items, etc. The catalog may be downloaded from one or more different services, such as a movie ticket and show time service, a web-based restaurant menu service, travel arrangement service, etc. 
       FIG. 9  provides an illustrative example of displaying additional data relating to a location. Particularly, this figure illustrates through five operational stages  905 - 925  how a user can receive additional information about a place that was previously searched in a map application. The first stage  905  is similar to the fifth stage  810  of  FIG. 8 . The first stage  905  demonstrates the result of a search for “ABC Concert Hall” and display of the location on a map application of the device  800 . The user selects the banner  826  in order to receive additional information about the concert hall. 
     The stages  910  and  920  of this figure are also similar to the sixth stage  812  of  FIG. 8 . Both stages  910  and  920  show the staging area page  828  that includes different information about the searched place (i.e., ABC Concert Hall) in several different sections. The difference between the two stages is that in each stage the user selects a different tab in order to receive different type of information about the place. 
     In the second stage  910 , the user selects the communication tab  836  in order to see the communications that are related to the place. As shown, the selection of the tab  836  causes the device to display a communication page  930 . The communication page  930  lists various communication relating to the location from various different data sources. Specifically, it lists communications from at least two different social network services. The page includes comments that are submitted by different users of a first social network service and comments that are submitted by different users of a second social network service. Each comment is associated with metadata that identify the person that left the comment and time the comment was posted. 
     In some embodiments, the communications are retrieved from a social network service using a social network account associated with the location (e.g., the business or establishment). Alternatively, or conjunctively, the comments may be retrieved based on tags (e.g., hash tags) associated with different postings. The communication section may include other information, such as reviews of locations, reviews of the goods or services, etc. 
     The third stage  915  illustrates that the gesture causes the device to display a communication page  930  that includes all the communications related to the location from different data sources. In the fourth stage  920 , the user selects the media tab  840  in order to see all the available multimedia related to the location from various data sources. The multimedia in some embodiments can include the pictures and/or video clips that users of social media services have posted to social media sites. 
     In some other embodiments, any multimedia that has been taken by any individual will be displayed to the user of the application if the name or address of the place is tagged (e.g., hash tagged) in the media and the media is posted with a social network service. In the stage  920 , the user directs the map application to display multimedia relating to the location. Specifically, the user taps the user&#39;s finger on the touch screen display over the communication tab  840 . 
     The stage  925  illustrates that the gesture causes the device to display a multimedia page  935  that includes all the pictures and media clips related to the place in different social media services. Particularly, this stage shows the pictures and clips that are submitted by different users the first social network service and the pictures and clips that are submitted to the third social network service. The multimedia in this media screen can include any multimedia posted in the location&#39;s social network page on the social network website. 
     II. Example of Other Entities 
     As mentioned above, in addition to people and locations, the data aggregation framework aggregates communications, location data, and multimedia data relating to entities. In some embodiments, entities represent everything else that does not fall into the people and location categories. An entity in some embodiments can be literally anything that a person or a group of people might be interested in, e.g., an event (e.g., concert, sporting event), food, movie, religion, affiliation, etc. 
     In some embodiments, the data aggregation framework creates an entity automatically if there is a certain number of people at a particularly event and/or if there is a certain amount of social activities relating to the particular event. For example, in a festival, many people may show up and start using their mobile devices (e.g., smart phones, tablets) to post messages and media. In some embodiments, the data aggregation framework aggregates data relating to the event and automatically creates an entity for that event. An application might receive the aggregated data to present information regarding the event. For example, when a person is within a threshold distance from the event, the application might provide a notification regarding the event entity. The person can then select the notification to display communications, location data, and/or multimedia relating to the event entity. 
       FIG. 10  provides an illustrative example of automatically creating a new entity and providing a notification regarding that event. Three operational stages  1005 - 1015  of the device  1000  are shown in the figure. The first stage  1005  illustrates the home page  1020  of the device  1000  displaying two application icons for launching two different applications. The home page  1020  is overlain by a dock that includes four other application icons. 
     In the example illustrated in  FIG. 10 , the user of the device  1000  is near the location of a music festival. The circle  1030  in stage  1005  conceptually represents the area (or a part of the area) in which the festival is occurring. Each dot in the circle represents a particular person talking about the event (e.g., through social media). The first stage  1005  shows that there are only two people talking about the event. 
     The second stage  1010  illustrates that the social media interest in the event has grown. This is conceptually shown by the increase in the number of people at the event. The number of people in the dotted circle  1030  has now increased significantly in comparison with the previous stage. This means that many more users of other devices in the audience are now talking about the music festival (e.g., by posting pictures taken from the festival, adding comments about the festival with social network applications, etc.). 
     As mentioned above, the data aggregation framework creates an entity automatically if there is a certain number of people at a particularly event and/or if there is a certain amount of social activities relating to the particular event. As it is illustrated in the second stage  1010 , a new event (i.e., “2013 Music Festival”) is created and the home page  1020  is now overlaid by a banner  1025  for the new event. The banner states that there is a new event. The event is identified by the name of the event. The banner also includes a note to select the banner if the user wishes to view additional details. Here, the user taps the user&#39;s finger on the touch screen display over the banner  1025 . 
     The third stage  1015  illustrates that the touch input resulted in the device  1000  displaying a page  1035  relating to the event entity. The page is similar to the staging area page described above by reference to  FIG. 3 . However, this staging area page  1035  includes affordances to display additional data regarding an event entity rather than a person. 
     The staging area page  1035  includes a communication tab  1055  for opening a list of different types of communications related to the event, a location tab  1060  for displaying all of the data related to the location of the event, and a media tab  1065  for displaying multimedia (e.g., pictures, videos) related to the event. In some embodiments, the staging area of an entity provides other information. In this example of the third stage  1015 , the staging area page  1045  also includes the name of festival, a default thumbnail for the festival next to the name, and an email address of the festival. In some embodiments, one or more of these pieces of information can be provided by anyone. For example, for a given event, an event schedule can automatically show up and the management of that schedule could be open source so anyone can manage it. 
     III. Access to Shared Info 
     Some embodiments provide tools that allow a person to choose different social network services that the person would like to share. In some embodiments, the access tools can be used to control access at an individual level (e.g., different shared data for different people) and/or at a group level (e.g., different shared data for different groups of people, such as family, friend, acquaintance, etc.). Several examples of such access tools will now be described below by reference to  FIGS. 11-18 . 
     In some embodiments, a person&#39;s public profile (e.g., a cloud account profile) or public registry is used to define an access control list (“ACL”). The ACL of some embodiments provides a list of social network services that the person would like to share.  FIG. 11  illustrates an example of configuring an ACL for sharing data from different applications and/or services. In this example, the ACL is associated with a user&#39;s contact card. Two operational stages  1105  and  1110  of the device  1100  are shown in the figure. 
     In the first stage  1105 , the device  1100  is displaying a contact card  1115  on its touch screen display. The userof the device  1100  is Alex Bolita, and the user is editing the user&#39;s contact card  1115 . The first stage  1105  illustrates the user&#39;s contact card  1115  displaying various different information about the user, Alex Bolita. The information includes the phone number, email, and address of the user. 
     The first stage  1105  also illustrates the user editing the card  1115  to allow access to a social network service. Specially, the card  1115  includes an affordance  1120  to share data relating to the social network service. Here, the user taps the user&#39;s finger on the touch screen display over the affordance  1120 . In this example, the affordance is a check box; however, it can be any user-interface item to enable or disable sharing of data for the corresponding social network service. 
     The second stage  1110  shows that the device  1100  after the contact card  1115  has been updated. As shown, the touch input from the first stage  1105  caused the check box for the social network service to appear with a check mark. The check mark provides a visual indication to the user that the user data from the corresponding social network service will be shared with one or more people that have access to this contact card  1115 . 
     The access tools of some embodiments allow a user to specify access control at an individual level. That is, the user can granularly specify what user info is available to different individuals. For example, one person can have access to user data from multiple social network services, while another person can have access to user data from only one particular social network service.  FIG. 12  illustrates specifying different ACL settings for different people. 
       FIG. 12  illustrates four people, namely persons 1-4. In this example, person 1 shares one set of user data with person 3 and another set of user data with person 4. Similarly, person 2 shares one set of user data with person 3 and another set of user data with person 4. As illustrated, person 1 currently has five attributes, corresponding to data from different applications and/or services that the person is capable of sharing with other people. Person 1 has permitted person 3 to receive data from only attributes 1 and 2. However, person 1 has permitted person 4 access to data from all attributes 1-5. Thus, person 1 is able to specify, for each different person, what information that particular person is allowed to access from a particular application or service. 
     Continuing with the illustration, person 2 has permitted person 3 access to data from attribute 2 and attribute 3. Furthermore, person 2 has permitted person 4 access to data from attributes 3-5. Thus, different people can specify different ACLs based on their particular preferences for how their information is to be shared with other people. 
     The access tools of some embodiments allow a user to specify access control at a group level. That is, the user can specify what user info is available to different groups of people (e.g., acquaintances, friends, family members). For example, a family member can have access to user data from multiple social network services, while an acquaintance can have access to user data from only one particular social network service. 
       FIG. 13  illustrates specifying the ACL such that different groups are provided with different access to information related to the user. Specifically, this figure illustrates a person, “Person 1”, that has specified an ACL across various different applications and services, including Social Network  1 , Social Network  2 , Media Sharing Network, Microblogging Network, Blogging Network, and Professional Network. In some embodiments, a user may specify different ACLs for different groups. In some embodiments, each group may be defined by the user to include a group of persons and/or entities and/or devices. As illustrated, person 1 is sharing different applications/services with different groups. In particular, person 1 is sharing data from Social Network  1 , Social Network  2 , Media Sharing Network, and Microblogging Network with Group  1 . Likewise, person 1 is sharing data from Blogging Network and Professional Network with people and/or devices grouped within Group  2 . Lastly, person 1 is also sharing the data from Professional Network with Group  3 . The person 1 is able to specify different ACLs for different groups. Accordingly, all of the data related to a particular application will be shared with persons, entities, and devices that have been provided access to the particular data. Likewise, this data will not be accessible by people, entities, or devices that do not have permission to the data. By providing various different mechanisms for specifying ACLs, the user is able to specify exactly where and how their data will be shared across each of the different applications and services. 
     In some embodiments, the user may specify different access permissions based on an application and/or service type. In particular, a user may specify that a first application is able to share data with all other people or groups while a second application may only share information with people and/or groups that are, for example, designated as “family.” Thus, the ACLs may be defined according to application types rather than on an individual person or group basis. 
     The public profile (e.g., the contact card) can be shared with one person or a group of people. In some embodiments, the public profile is an object that can be sent to one or more individuals (e.g., through email message, through text message). When a public profile is updated on one device, the update may be propagated to each other device that has the same public profile. 
       FIG. 14  provides an illustrative example of one person sharing his or her contacts card with another person. Two operational stages  1405  and  1410  of the device  1400  are shown in the figure. These stages show the person designating different applications and services to share with another person. 
     The first stage  1405  illustrates the contact card  1415  of the person, Alex Bolita. As described above, the contact card  1415  includes various information, such as the user&#39;s telephone number, e-mail address, and physical address. Furthermore, the contact card allows a user to either select (or de-select) different applications and/or services that the user would like to share. In this example, the user has opted to shared user data from multiple social network services. To share the contact card  1415 , the person selects the affordance  1430  (e.g., the share button). 
     The second stage  1410  illustrates the device after the selection of the affordance  1430 . As shown, the device is now displaying a page  1420  to share the contact card. The page includes a label that provides a textual indication to the device&#39;s user to input an email address of a person that the user would like to share the contact card with. The page includes a field  1435  to input the email address and a selectable item  1425  to send the contact card via the email address. In the example of the second stage  1410 , the user has inputted an e-mail address of a particular person. When the person receives the email, the person can then associate the contact card with the person&#39;s device. The person can then use the device to access user data from Social Network Service  1 - 3  of the user Alex Bolita. 
     The previous example illustrated sharing one person sharing a contact card with another person.  FIG. 15  illustrates an example of synchronizing an update to a contact card across multiple devices. This figure is similar to the previous figure; however, the device  1500  shows a contact card  1505  with an affordance  1515  to update the card. In this example, the user has updated the contact card. The user then initiates the synchronization by tapping the user&#39;s finger on the touch screen display over the affordance  1515  (e.g., the update button). 
       FIG. 16  provides a data flow diagram that illustrates a contact card update that is synchronized across several different devices of different people. Specifically, this figure illustrates, in three data flow stages  1605 - 1615 , a person updating the person&#39;s contact card and the updated contact card being synchronized with devices of several other people. This particular example illustrates devices  1625 - 1635  of three people, Alex, Mary, and Joe communicating with a cloud service  1620 . In the first stage  1605 , Alex, through Alex&#39;s device  1625 , has (at  1 ) updated his contact card. 
     As illustrated in  FIG. 15 , Alex may update different information within his contact card including, for example, his telephone number, his email address, or his physical address. Furthermore, Alex may update his ACL to designate different permissions to different applications for sharing data related to Alex. For example, Alex may de-select a social network service from sharing information that has previously been permitted to share information. 
     In the second stage  1610  of  FIG. 16 , after Alex updates his contact card, this update is sent (at  2 ) to the cloud service  1620 . After obtaining the information within the updated contact card, the cloud service then uses the contact card to update (at  3 ) the Alex&#39;s public profile  1640 . The public profile of some embodiments is used by other devices (e.g., devices  1630  and  1635 ) to aggregate data regarding the person. As shown in the second stage  1610 , the cloud service (at  4 ) retrieves a list of contacts for Alex. In some embodiments, the cloud service maintains this list for one or more of Alex&#39;s device. 
     In the third stage  1615 , based on the retrieved contact list, the cloud service  1620  sends (at  5 ) a notification regarding the updated contact information to the devices  1630  and  1635 . Thus, one or more contacts, including Mary and Joe, receive the updated contact information for Alex. Furthermore, these contacts may now be allowed access various data related to Alex, based on the particular specifications provided within the ACL as specified by Alex. In some embodiments, the cloud service uses a contact&#39;s email address to send the update to the other devices (e.g., the devices  1630  and  1635 ). 
     In the example described above, an update to a contact card on one device initiates update operations on some other devices that has the same contact card. Instead of the contact card, some embodiments provide tools to update a public profile relating to a person, location, or an entity. For example, the public profile can be a cloud account profile that is associated with the cloud service  1620  or it can be some other public registry that is shared across multiple devices. 
     In some embodiments, the data aggregation framework provides data from a data source only if the person requesting the data is somehow associated with that data source. As an example, the data aggregation framework aggregates data from a particular social network service and provides that data to an application only if the person initiating the request is singed up, registered with the particular social network service, and/or installed an application from the particular social network service. Several such examples will now be described by reference to  FIGS. 17 and 18 . 
       FIG. 17  illustrates an example of a person receiving updates from a social network service after that person signs up with the service. The figure illustrates two devices  1700  and  1705  at different periods. The device  1700  is Alex&#39;s device and is shown at time  1  (T 1 ) through time  3  (T 3 ). The device  1705  is Joe&#39;s device and is shown at T 1  through T 5 . This example assumes that Alex is a contact of Joe. 
     At T 1 , an update is being made to Alex&#39;s contact card  1715 . Specially, the device  1700  is displaying the contact card  1715 . The selectable item  1730  of the contact card  1715  shows that Alex has previously shared info regarding a first social network. To share info relating to a second social network, Alex taps his finger on the device&#39;s touch screen display over the selectable item  1735 . After selecting the item  1735 , Alex then selects (at T 2 ) the update button  1710 . The selection causes the shared contacts info to be updated, as shown by the device  1700  at T 3 . 
     At T 1  and T 2  Joe&#39;s device  1705  is displaying data relating to Alex. The device  1705  is displaying an activities page  1720  with Alex&#39;s social network posts from the first social network. The page  1720  is not displaying any data relating to the second social network. This is because Alex&#39;s contact info has not been updated with the second social network. 
     At T 3 , Joe&#39;s device  1705  is displaying data relating to Alex. The device  1705  is still displaying the activities page  1720  with Alex&#39;s social network posts from the first social network, and is not displaying any posts from the second social network even though Alex&#39;s contact info has been updated and the update has been received at the device  1705 . This is because the Joe has not installed an application from the second social network service on the device  1705  and/or has not signed-up with the second social network service. 
     T 4  shows Joe registering with the second social network service on a sign-up page  1725 . T 5  shows the device  1705  after registering with the social network service and reopening the page  1720  with Alex&#39;s activities. As shown, the activity list now includes any posts relating to Alex from the second social network service. 
     In the previous example, the Joe&#39;s device  1705  receives updates after Joe signs up with a social network service.  FIG. 18  illustrates a similar example. However, in this case, the Joe&#39;s device  1705  automatically receives updates for a third social network service because Joe has previously signed up for that same service. This figure shows the devices  1700  and  1705  at three different time periods (T 1 -T 3 ). 
     At T 1 , the device  1700  is displaying a sign-up page  1805  for a third social network service. Alex has filled in the necessary information (e.g., account name, password). To register with the service, Alex taps his finger on the touch screen display over the register button  1810 . 
     At T 2 , an update is being made to Alex&#39;s contact card  1715 . Specially, the device  1700  is displaying the contact card  1715 . Alex has selected the selectable item  1915  for sharing info from the third social network service. Alex then selects (at T 2 ) the update button  1710 . The selection of the button causes the shared contacts info to be updated, as shown by the device  1700  at T 3 . 
     At T 1  and T 2 , Joe&#39;s device  1705  is displaying data relating to Alex. The device  1705  is displaying the activities page  1720  with Alex&#39;s social network posts from the first and second social networks. The device  1705  is not displaying any data relating to the third social network. This is because Alex&#39;s contact info has not been updated with the third social network, and this update has not been received at Joe&#39;s device  1705 . 
     T 3  shows Joe&#39;s device after it has received a message regarding an update to Alex&#39;s contact card. The contact card has been updated with the third social network service. This updates causes the data aggregation framework (not shown) to aggregate data from the third social network service. This is shown at T 3  because the activity page  1720  has been updated to include each post relating to Alex from the third social network service. 
     IV. Software Architecture 
     In some embodiments, the data aggregation framework is provided as one of several different services of an operating system (OS). The OS manages the device hardware and provides the services (e.g., frameworks, application-programming interfaces (APIs)) to implement native applications.  FIG. 19  conceptually illustrates a software architecture of an OS  1900  of some embodiments. As shown, the figure includes the OS  1900  and several native applications  1980 - 1990  that runs on the OS. The OS  1900  is defined by several layers  1905 - 1920 . To simplify the discussion, only four layers are shown in the figure, namely an application frameworks layer  1905 , a media layer  1910 , a core service layer  1915 , and a lower level service layer  1920 . 
     The application frameworks layer  1905  includes several key frameworks for building applications. Generally, the frameworks include different components and modules that define the appearance of the application (e.g., the graphical user interface (GUI) of the application). In some embodiments, the frameworks at this layer  1905  also provide the basic application infrastructure and support for several technologies, such as multitasking, touch-based input, push notifications, and other high-level system services. 
     The media layer  1910  includes the graphics, audio, and video services that can be used to implement multimedia experiences in different applications. This layer  1910  is mostly concerned with presentation of images, video, and audio. Here, the layer includes an asset library framework  1925 , a photo/video capture framework  1930 , and other media services  1935 . 
     The assets library framework  1925  allows an application to access photos, videos, and other media. The application ( 1980 ,  1985 , or  1990 ) can use the asset library framework  1925  to integrate media content. For example, an application might use this framework  1925  in conjunction with the data aggregation framework  1950  to gather multimedia relating to a person, location, or an entity. In some embodiments, the asset library framework  1925  can also be used to organize content. For example, the framework provides tools to tag content (e.g., with the name of a person, location, or entity) and/or create different collections (e.g., albums). In some embodiments, the data aggregation framework uses the tag and/or album name to aggregate multimedia regarding a person, location, or entity. 
     As shown in  FIG. 19 , the media layer  1910  includes the photo/video capture framework  1930 . In some embodiments, the photo/video capture framework  1930  provides tools to choose media files and capturing new content (e.g., photos, audio clips, video clips). In some embodiments, the media layer  1910  includes other services  1935  to draw graphics, provide animation, perform rendering, perform multimedia playback, integrate streaming media (e.g., AirPlay), etc. 
     The core services layer  1915  includes many different key services that can be used to build applications. In the example of  FIG. 19 , these service frameworks include (1) a cloud storage framework  1940 , (2) a social network framework  1945 , (3) a data aggregation framework  1950 , (4) a locations framework  1955 , (5) an email framework  1960 , (6) a messages framework  1965 , (7) a transactions framework  1940 , and (8) other core services  1975 . 
     The cloud storage framework  1940  allows application to write to cloud storage. In some embodiments, one or more public profiles of a person are saved to the cloud using this cloud storage framework  1940 . An example of updating such a public profile is described above by reference to  FIG. 16 . In that example, a control server (e.g., a ubiquity cloud server) is used to store a person&#39;s public profile in a cloud storage (e.g., a storage server). The public profile includes, in some embodiment, the person&#39;s contact info (e.g., name, email address, mailing address, telephone number) as well as other supplemental information, such as account information (e.g., account name, account handle) for different social network sites. When the public profile is updated, the control server of some embodiments notifies other people (e.g., the devices of other people with the public profile) to update the public profile. 
     The social network framework  1945  provides tools to access social media accounts. An example of such a social network framework is described above by reference to  FIG. 2 . The social network framework  1945  allows programmers to integrate applications with supported social networking services. In some embodiments, this framework  1945  provides a template for creating data requests (HTTP requests). The framework of some embodiments provides various modules to create a network session, get the activity feed for different users, make a new post, set properties on a post, add attachments (e.g., images, videos), publish a post to an activity feed, etc. In some embodiments, the social network framework  1945  is used to retrieve the activity feed from one or more different social network services. Once retrieved, the data aggregation framework  1950  of some embodiments aggregates the activity feed and provides the activity feed to a requesting application (e.g., the application 1980, 1985, or 1990). 
     In some embodiments, the transactions framework  1970  is used to track activities relating to a person, location, or entity. This framework  1970  provides the tools to interface with other social network applications and/or services that are not supported by the transactions framework  1970 . The main reason for having the transactions framework  1970  is that overtime there will be other social networks. These other social network can integrate their service by calling or registering with the framework&#39;s APis. For example, the transactions framework  1970  may support several of the more popular social network services (e.g., using the APis of the social network services). On the other hand, the transactions framework  1970  provides the tools to integrate other social network services. Similar to the social network framework  1945 , the transactions framework  1970  provides various modules to create a network session, get the activity feed for different users, make a new post, set properties on a post, add attachments (e.g., images, videos), publish a post to an activity feed, etc. 
     In some embodiments, the email framework  1960  allows different applications to send and receive emails. The messages framework  1965  allows different applications to send and receive text messages. The data aggregation framework  1950  of some embodiments operates in conjunction with one or more of these messaging frameworks  1960  and  1965  to aggregate data (e.g., emails, text messages, attachments, etc.). 
     The locations framework  1955  provides location and heading information to applications. For location information, the framework  1955  of some embodiments uses a device&#39;s GPS, cell, or Wi-Fi radios to find the device&#39;s current longitude and latitude. This framework  1955  can be used to provide position-based information to the user. One example usage of the location information is described above by reference to  FIG. 4 . In that example, the locations framework  1955 , which operates on a first device, provides location data to a second device. The data aggregation framework, which operates on the second device, aggregates the location data for an application. The application then uses the location data to render a map of the current location of the user of the first device. 
     In some embodiments, the locations framework  1955  is used to track the current location of a person and provide a notification based the current location. For example, the application might use the locations framework  1955  to notify a person when there is a new entity (e.g., a new event) that is nearby. An example of such notification is described above by reference to  FIG. 10 . In some embodiments, the locations framework  1955  can also be used to search for nearby locations (e.g., restaurants, shops, facilities) 
     As shown in  FIG. 19 , the core services layer  1915  includes other core services  1975 . In some embodiments, these other core services include an address book framework for accessing to a user&#39;s contacts database. In some embodiments, the contacts database can a person&#39;s contact info (e.g., name, email address, mailing address, telephone number) as well as other supplemental information, such as account information (e.g., account name, account handle) for different social network sites. In addition to the address book framework, the core service layer includes other services, including peer-to-peer framework for peer-to-peer connectivity over a network (e.g., Bluetooth), data protection framework for encrypting data, file sharing support framework to share files, etc. 
     The lower level services  1920  provide many low-level features that are used by services at the higher layers. In some embodiments, the lower level services  1920  encompass kernel environment, drivers, and low-level interfaces of the OS  1900 . The lower level services  1920  may also include a security framework to control security, a radio communication framework to communicate through radio, etc. 
     One of ordinary skill in the art would understand that the software architecture described above is one example architecture and can be modified in a number of different ways. For example, the OS  1900  may include additional or fewer layers. The different frameworks and APIs can be provided at different layers. For example, the email or messages framework may be at a higher layer (e.g., the media layer  1910 ) or a lower layer (e.g., the lower level services layer  1920 ). 
     V. Electronic System 
     Many of the above-described features and applications are implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more computational or processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, random access memory (RAM) chips, hard drives, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections. 
     In this specification, the term “software” is meant to include firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some embodiments, multiple software inventions can be implemented as sub-parts of a larger program while remaining distinct software inventions. In some embodiments, multiple software inventions can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software invention described here is within the scope of the invention. In some embodiments, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs. 
       FIG. 20  conceptually illustrates an electronic system  2000  with which some embodiments of the invention is implemented. The electronic system  2000  may be a computer (e.g., a desktop computer, personal computer, tablet computer, etc.), server, dedicated switch, phone, PDA, or any other sort of electronic or computing device. Such an electronic system includes various types of computer readable media and interfaces for various other types of computer readable media. Electronic system  2000  includes a bus  2005 , processing unit(s)  2010 , a system memory  2025 , a read-only memory  2030 , a permanent storage device  2035 , input devices  2040 , and output devices  2045 . 
     The bus  2005  collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of the electronic system  2000 . For instance, the bus  2005  communicatively connects the processing unit(s)  2010  with the read-only memory  2030 , the system memory  2025 , and the permanent storage device  2035 . 
     From these various memory units, the processing unit(s)  2010  retrieves instructions to execute and data to process in order to execute the processes of the invention. The processing unit(s) may be a single processor or a multi-core processor in different embodiments. 
     The read-only-memory (ROM)  2030  stores static data and instructions that are needed by the processing unit(s)  2010  and other modules of the electronic system. The permanent storage device  2035 , on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when the electronic system  2000  is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device  2035 . 
     Other embodiments use a removable storage device (such as a floppy disk, flash memory device, etc., and its corresponding drive) as the permanent storage device. Like the permanent storage device  2035 , the system memory  2025  is a read-and-write memory device. However, unlike storage device  2035 , the system memory  2025  is a volatile read-and-write memory, such a random access memory. The system memory  2025  stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention&#39;s processes are stored in the system memory  2025 , the permanent storage device  2035 , and/or the read-only memory  2030 . From these various memory units, the processing unit(s)  2010  retrieves instructions to execute and data to process in order to execute the processes of some embodiments. 
     The bus  2005  also connects to the input and output devices  2040  and  2045 . The input devices  2040  enable the user to communicate information and select commands to the electronic system. The input devices  2040  include alphanumeric keyboards and pointing devices (also called “cursor control devices”), cameras (e.g., webcams), microphones or similar devices for receiving voice commands, etc. The output devices  2045  display images generated by the electronic system or otherwise output data. The output devices  2045  include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD), as well as speakers or similar audio output devices. Some embodiments include devices such as a touchscreen that function as both input and output devices. 
     Finally, as shown in  FIG. 20 , bus  2005  also couples electronic system  2000  to a network  2065  through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system  2000  may be used in conjunction with the invention. 
     Some embodiments include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media may store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter. 
     While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some embodiments are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some embodiments, such integrated circuits execute instructions that are stored on the circuit itself. In addition, some embodiments execute software stored in programmable logic devices (PLDs), ROM, or RAM devices. 
     As used in this specification and any claims of this application, the terms “computer”, “server”, “processor”, and “memory” all refer to electronic or other technological devices. These terms exclude people or groups of people. For the purposes of the specification, the terms display or displaying means displaying on an electronic device. As used in this specification and any claims of this application, the terms “computer readable medium,” “computer readable media,” and “machine readable medium” are entirely restricted to tangible, physical objects that store information in a form that is readable by a computer. These terms exclude any wireless signals, wired download signals, and any other ephemeral signals. 
     While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention.

Metadata:
Filing Date: 20140406
Publication Date: 20181204
Grant Date: 20181204
Priority Date: 20131018
Inventors: VAN OS, MARCEL
HERZ, SCOTT
Assignee: APPLE INC
CPC Classifications: [{"code": "G06F16/244", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F16/48", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F16/435", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F17/30029", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F17/30412", "inventive": true, "first": true, "tree": "[]"}, {"code": "G06F17/30038", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 52827128