Abstract:
A system and method for locationally aware communication that does not reveal a user&#39;s exact location to any other user. Users interact with client applications installed on their computing devices, which are connected to one or more remote serves. Users may determine when certain other users are nearby specified geographic areas, may communicate with others, and may view, send, and receive invitations to events. Communication may be transmitted to individual recipients or to groups of recipients. Invitations may be transmitted to specified invitees or to broader groups of users. Users may define parameters controlling the extent to which information about their locations may be shared with others.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of U.S. Provisional Patent Application 62/186,079 filed Jun. 29, 2015 entitled “System and Method for Locationally Aware Communication” the entire contents of which is hereby incorporated by reference in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    Individuals use a variety of technological means to communicate with their friends, as well as to plan social meetings with their friends. Popular methods include software applications that provide real-time communication capabilities via text (including instant messaging, email, and social media posts), audio, and/or video. These applications often run on personal computer and mobile devices, such as smart phones. Many such applications allow users to communicate with multiple friends simultaneously, in a group discussion format. Using such technological means, individuals may commence an impromptu conversation with one or more friends or they may send their friends messages requesting real-time conversations or proposing a real-world gathering, such as a party. Many individuals currently also make use of digital calendars to keep track of appointments and to send calendar invitations to their friends for social gatherings. 
         [0003]    With the increasing popularity of social media platforms, many individuals now communicate with their friends by posting a series of static status messages to their social media profile pages. Such status messages may refer to their present location or their future plans. The content of any such status messages may prompt a friend of the posting individual to respond or otherwise reach out to the posting individual and, potentially, get together with the posting individual in the real world. 
         [0004]    At the same time, many of the devices upon which users frequently run such applications and access such social media platforms feature locational capabilities, through which the device determines its location (and, by proxy, the location of its user). These locational capabilities allow individuals to share their locations with others (in various forms including addresses, place names, or coordinates). Sharing one&#39;s location with friends can have great utility, specifically because it can facilitate real-world socialization. If, for example, an individual shares that he is located at position A, any of his friends who have access to that shared information and who are also near position A can communicate with the individual and, if they choose, meet in person. 
         [0005]    Certain social media platforms allow users to include their present locations in their static status posts. Such posts can be informative and useful to the user and his friends who view the post, but they are of limited utility because they require the user to take explicit action to include his location in a post, and the location included in the post can quickly grow stale as soon as the user relocates to a different location. 
         [0006]    Other existing applications actively keep track of a user&#39;s position, allowing the user and his or her friends to access up-to-date locational information. Such applications have certain advantages when compared to static status posts. Specifically, they provide useful information to users without explicit input from those users. That is, by running in the background of a user&#39;s device, these applications update themselves with regard to the user&#39;s location throughout the day and without requiring the user to remember to share his location or make any additional effort to do so. Such applications may be of particular use to, for example, spouses who wish to have immediate access to each other&#39;s locations or parents who wish to be able to locate their children quickly and with great accuracy. 
         [0007]    Despite its utility, however, location-sharing technology raises significant privacy concerns for many individuals. Many individuals may not wish for their exact locations at any particular time to be accessible by others. An alternative approach, therefore, making use of passive location-sharing technology while protecting the privacy of users, would be of great utility to users. 
       BRIEF SUMMARY OF THE INVENTION 
       [0008]    An embodiment of the invention is a system and method that allows a user to know when other users who are socially connected to the user (that is, his or her friends and acquaintances) are nearby specified locations, and to communicate with such other users, without exposing the exact location of any user to any other user. The system is comprised of a remote operations center, featuring one or more servers, and client devices that run a client application and connect to such remote operations center over the internet or another network. Each client device calculates its location using one or more internal sensors and transmits such location to the system&#39;s servers, which log such location in a database. As each client device changes location, it reports updated locations to the system&#39;s servers, which update the system&#39;s database. 
         [0009]    In such embodiment of the invention, the client application allows users to determine when their friends and acquaintances are nearby by interacting with a map interface to define a query comprised of a center point and search radius. Users can search the map interface visually (by navigating the visual map) or by specifying an address or landmark to act as the query center point. The client application submits the query to the system&#39;s servers, which process the query by: accessing the system&#39;s database; identifying those other users of the system who are denoted in the database as being connected to the querying user; identifying, from within the list of those other users, those whose account settings permit the querying user to be informed of when such other users are nearby; accessing the most recent locations of client devices associated with such subset of other users; calculating which of those stored locations are within the geographic area specified by the query; generating a list of the user accounts associated with such stored locations; and transmitting such list to the client device of the querying user. The client application informs the user of how many of such other users are within the queried geographic area and, by tapping a button provided within the client application, a user can then see the identities of such other users (but, in such embodiment, not the exact location of any of those other users). The system thus allows users to learn when others are nearby without disclosing the exact locations of users to each other, balancing the privacy preferences of users with the utility of location sharing. 
         [0010]    In an embodiment, the client application permits a user to tailor his or her privacy preferences by defining one or more parameters to specify which other users can use the system to determine when he or she is likely located within a queried geographic area. Such parameters may include: the selection of whether such user should be included in vicinity queries performed by any other users of the application; the selection, on a user-by-user basis, of whether such user should be included in vicinity queries performed by particular other users; the selection of whether such user should be included in vicinity queries when such user is located at one or more particular locations; or the selection of whether such user should be included in vicinity queries conducted at particular times. Such defined parameters are transmitted by the client application to the system&#39;s servers, which store such parameters and apply them to user queries. 
         [0011]    In an embodiment, each user of the client application can specify one or more geographic locations to be stored in the system&#39;s database in relation to such user&#39;s account, as well as one or more time periods during which such specified geographic locations should be used by the system in place of any location detected by the user&#39;s client device. This feature enables users to reap the benefit of receiving location-specific messages and invitations from others who use the application who may search within the alternate vicinity specified by the user. 
         [0012]    An embodiment of the invention also includes a messaging client, which allows users to communicate with each other via text, video, audio, still images, or other digital data. A user may send a message to a single other user, to multiple other users as a group, or to multiple other users individually (that is, as a series of individual messages). 
         [0013]    In an embodiment, the client application also permits users to transmit invitations to events, which invitations may include text, video, audio, still images, or other digital data. Users sending invitations may specify when the events relating to such invitations are private or public. In such embodiment, invitations to private events are viewable only by the recipients specified by the sender. In contrast invitations to public events are viewable by all users by visual review or search of either: (1) a mapping interface within the client application (upon which public events are marked by visual elements overlaid on the map location of the applicable event) or (2) a listing of invitations to public events that the client application makes available to users. The invention thus enables users to easily learn about their local social context, that is, users can easily learn who is nearby and what is occurring nearby. 
         [0014]    Messages and invitations sent through an embodiment of the invention may be transmitted outside of the system by making use of one or more additional communication protocols, such as SMS or email, so that users can send information to non-users from within the client application. For example, if a user composes a message or invitation and selects a group of recipients that include: (1) other users of the client application, (2) individuals who do not use the client application but for whom the sender has a telephone number, and (3) individuals who do not use the client application but for whom the sender has an email address, the system in such embodiment will: (1) transmit the message or invitation to the client application running on the client device(s), if any, on which the user accounts of recipients who use the client application are logged in, (2) route the message or invitation to the SMS application of the sender&#39;s device, or send the message or invitation via SMS, for those recipients who do not use the client application but for whom the sender has a telephone number, and (3) route the message or invitation to the email application of the sender&#39;s device, or send the message or invitation via email, for those recipients who do not use the client application but for whom the sender has an email address. Additional communication protocols can be added in other embodiments to provide users with further ways to communicate with others (regardless of whether those others use the client application). Moreover, in additional embodiments, a user of the client application can specify the order in which additional communication protocols are to be prioritized (e.g., first SMS, second email versus first email, second SMS). 
         [0015]    Certain embodiments of the invention may include advertisements displayed or otherwise distributed through the client application. Such advertisements may include visual and/or audible components and may or may not be distributed with regard to the location of users of the client application. For example, in an embodiment, an advertisement for an event that is to occur at location A (e.g., a concert venue) may be distributed to a user of the application who is located near location A at a time prior to the occurrence of such advertised event. In additional embodiments, the selection of which advertisements are to be distributed to particular users of the application may give weight to the preferences and interests expressed by such users. 
         [0016]    In one embodiment, advertisements may be displayed within a dedicated portion of the screen on which the client application is being viewed. In another embodiment, advertisements may be presented as visual markers on the mapping interface provided within the client application. In such an embodiment, the user may be able to obtain additional information about such advertisement by selecting it from within the application interface. 
         [0017]    The pricing charged for such advertisements may take into account several location-based factors. In one embodiment, the cost charged to an advertiser may increase in relation to the concentration of advertisements to be displayed with respect to a specified locational area. For example, if there are 10 advertisements that are to be displayed near location A and 5 advertisements that are to be displayed near location B, a higher price may be charged to those advertisers who wish to display advertisements near location A. In another embodiment, the cost charged to an advertiser may increase in relation to the concentration of users of the application near the location at which such advertisement is to be displayed. For example, if there are 100 users near location X and 10 users near location Y, a higher price may be charged to those advertisers who wish to display advertisements near location X. In another embodiment, advertisers may be permitted to bid different amounts to affect the probability that their advertisements will be displayed. For example, in such an embodiment, the service may limit the number of advertisements that will be displayed by the client application at a particular moment within a certain vicinity. If two advertisers wish to display advertisements to application users who are near location Q, each such advertiser may be permitted to bid for the right to have its advertisement displayed. In such an embodiment, the frequency with which an advertisement is displayed may be related to the relative size of the bid submitted by the sponsoring advertiser. 
         [0018]    In further embodiments, advertisers may be charged with respect to the number of application users who interact with (or “click through”) their advertisements that may be displayed within the client application, including on top of the application&#39;s mapping interface. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING 
         [0019]      FIG. 1  is a schematic of an embodiment of the system. 
           [0020]      FIG. 2  is a schematic of an embodiment of a client device. 
           [0021]      FIG. 3  illustrates the collection of location information from a client device. 
           [0022]      FIG. 4  illustrates the updating of location information from a client device. 
           [0023]      FIG. 5  illustrates a flow of information for an example query of nearby users who are denoted as connected to a user in the system&#39;s database. 
           [0024]      FIG. 6  illustrates an example query of nearby users who are denoted as connected to a user in the system&#39;s database. 
           [0025]      FIG. 7  illustrates an alternative example query of nearby users who are denoted as connected to a user in the system&#39;s database. 
           [0026]      FIG. 8  illustrates a flow of information for sending an individual message. 
           [0027]      FIG. 9  illustrates a flow of information for sending a group message to multiple recipients. 
           [0028]      FIG. 10  illustrates a flow of information for sending an individual message to multiple recipients. 
           [0029]      FIG. 11  illustrates a flow of information for sending a private invitation. 
           [0030]      FIG. 12  illustrates a flow of information for sending and retrieving a public invitation. 
           [0031]      FIG. 13  is a view of the main home screen of the client application interface. 
           [0032]      FIG. 14  is a view of the main home screen of the client application interface with search radius increased. 
           [0033]      FIG. 15  is a view of the main home screen of the client application interface with search radius decreased. 
           [0034]      FIG. 16  is a view of a search screen for a location or address. 
           [0035]      FIG. 17  is a view of a search screen for a location or address, with a location entered. 
           [0036]      FIG. 18  is a view of the main home screen after selection of a searched location. 
           [0037]      FIG. 19  is a view of the main home screen after a selected location is moved by the user. 
           [0038]      FIG. 20  is a view of the client application interface after a user selects “Connect with Nearby Friends”. 
           [0039]      FIG. 21  is a view of the client application interface after a user selects a nearby contact to whom the user is denoted as being connected in the system&#39;s database. 
           [0040]      FIG. 22  is a view of the client application interface after a user selects a contact to whom the user is denoted as being connected in the system&#39;s database who is not nearby. 
           [0041]      FIG. 23  is a view of the client application interface after a user selects nearby and non-nearby contacts to whom the user is denoted as being connected in the system&#39;s database. 
           [0042]      FIG. 24  is a view of the client application interface after a user selects to message multiple contacts to whom the user is denoted as being connected in the system&#39;s database. 
           [0043]      FIG. 25  is a view of the client application interface after a user selects to message multiple contacts to whom the user is denoted as being connected in the system&#39;s database, as part of a group conversation. 
           [0044]      FIG. 26  is a view of the client application interface after a user selects to send a message separately to multiple contacts to whom the user is denoted as being connected in the system&#39;s database. 
           [0045]      FIG. 27  is a view of the client application interface after a user selects a contact to whom the user is not denoted as being connected in the system&#39;s database. 
           [0046]      FIG. 28  is a view of the client application interface after a user selects to message a contact to whom the user is not denoted as being connected in the system&#39;s database. 
           [0047]      FIG. 29  is a view of the client application interface after a user selects both contacts to whom the user is denoted as being connected in the system&#39;s database and contacts to whom the user is not denoted as being connected in the system&#39;s database. 
           [0048]      FIG. 30  is a view of the client application interface after a user selects to send an invitation to one or more contacts. 
           [0049]      FIG. 31  is a view of the client application interface in which a user specifies an alternate location, and a time period during which such alternate location should be used, at which the system will treat the user as being located. 
           [0050]      FIG. 32  is a view of the client application interface showing a visual marker of an alternate location at which the system will treat the user as being located. 
           [0051]      FIG. 33  is a view of the client application interface showing a side menu for navigation among sections of the client application, with the Home section selected. 
           [0052]      FIG. 34  is a view of the client application interface showing a side menu for navigation among sections of the client application, with the Messages section selected. 
           [0053]      FIG. 35  is a view of the client application interface showing the main Messages section. 
           [0054]      FIG. 36  is a view of the client application interface allowing a user to select a person with whom to start a new message thread. 
           [0055]      FIG. 37  is a view of the client application interface allowing a user to select multiple people with whom to start a new group message thread. 
           [0056]      FIG. 38  is a view of the client application interface allowing a user to mute or leave a specific message thread. 
           [0057]      FIG. 39  is a view of the client application interface allowing a user to mute or leave multiple message threads. 
           [0058]      FIG. 40  is a view of the client application interface showing a message thread involving two users. 
           [0059]      FIG. 41  is a view of the client application interface showing a message thread involving a group. 
           [0060]      FIG. 42  is a view of the client application interface showing a message passed through to the client device&#39;s SMS application. 
           [0061]      FIG. 43  is a view of the client application interface showing a message passed through to the client device&#39;s SMS application and sent. 
           [0062]      FIG. 44  is a view of the client application interface showing a side menu for navigation among sections of the client application, with the Invitations section selected. 
           [0063]      FIG. 45  is a view of the client application interface showing received invitations. 
           [0064]      FIG. 46  is a view of the client application interface showing sent invitations. 
           [0065]      FIG. 47  is a view of the client application interface showing public invitations. 
           [0066]      FIG. 48  is a view of the client application interface for the creation of an invitation. 
           [0067]      FIG. 49  is a view of the client application interface for the selection of recipients of an invitation. 
           [0068]      FIG. 50  is an alternate view of the client application interface for the selection of recipients of an invitation. 
           [0069]      FIG. 51  is a view of the client application interface for the selection of recipients of an invitation, with certain recipients selected. 
           [0070]      FIG. 52  is an alternate view of the client application interface for the selection of recipients of an invitation, with certain recipients selected. 
           [0071]      FIG. 53  is a view of the client application interface for the creation of an invitation, with a recipient selected. 
           [0072]      FIG. 54  is a view of the client application interface showing a side menu for navigation among sections of the client application, with the Friends section selected. 
           [0073]      FIG. 55  is a view of the client application interface showing the main Friends section. 
           [0074]      FIG. 56  is an alternate view of the client application interface showing the main Friends Section, showing only contacts to whom the user is denoted as being connected in the system&#39;s database. 
           [0075]      FIG. 57  is an alternate view of the client application interface showing the main Friends Section, showing only contacts to whom the user is not denoted as being connected in the system&#39;s database. 
           [0076]      FIG. 58  is a view of the client application interface showing the main Friends Section, including a search tool by which the user can filter contacts. 
           [0077]      FIG. 59  is a view of the client application interface showing the main Friends Section, in which one contact is selected. 
           [0078]      FIG. 60  is a view of the client application interface showing the main Friends Section, in which two contacts are selected. 
           [0079]      FIG. 61  is a view of the client application interface showing a side menu for navigation among sections of the client application, with the Settings section selected. 
           [0080]      FIG. 62  is a view of the client application interface showing the main Settings section. 
           [0081]      FIG. 63  is a view of the client application interface showing the main Profile section. 
           [0082]      FIG. 64  is a view of the client application interface showing the Edit Profile section. 
           [0083]      FIG. 65  is a view of the client application interface showing the Account section. 
           [0084]      FIG. 66  is a view of the client application interface showing the Notification Settings section. 
           [0085]      FIG. 67  is a view of the client application interface showing the Edit Invisibility section. 
           [0086]      FIG. 68  is a view of the client application interface showing the Custom Invisibility section. 
           [0087]      FIG. 69  is an alternate view of the client application interface showing the Custom Invisibility section, with certain settings changed. 
           [0088]      FIG. 70  is a view of the client application interface showing the Locational Invisibility section. 
           [0089]      FIG. 71  is a view of the client application interface showing the Total Invisibility section. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0090]    The following is a detailed description of multiple embodiments of the disclosed invention, comprising a digital communication system including central servers and individual client applications running on devices controlled by users of the system, which system enables users to determine when certain other users of the system are nearby, and to communicate with other users. Certain embodiments may never disclose the exact location of any user to any other user. Certain embodiments may feature advertisements, which may be location-based. 
         [0091]    An embodiment of the invention is a system featuring an application and providing a service that enables users to know when other users, to whom they are denoted as connected within such system, are nearby specified locations, without ever exposing the exact location of any user to any other user, and to communicate with users and others. The client application runs on one or more device(s) in possession of the user. On such a device, and with the permission of the user, the application determines the location of that device (and, by proxy, the location of the user). In a preferred embodiment, the application retrieves the location of the device from locational services already running on such device, which services are accessible to third-party applications such as the embodiment application. The location of the device may be determined to varying degrees of accuracy, and may be based upon a variety of measurements relating to cellular telephone towers, wireless internet gateways, or global positioning system signals. 
         [0092]    Regardless of the degree of accuracy, however, such location is transmitted from the user&#39;s device to one or more servers running the service, which log such location for such device in databases of the system. As such device changes location, the application sends updated location information to such servers, which in turn update the databases of the system to keep current locational information regarding such device. Such location determination, transmission, and recording occur without the need for the user to interact with the system in order to trigger any update or other posting or signaling of the user&#39;s location. 
         [0093]    The invention disclosed herein includes a method of enabling users to know when other users, to whom they are denoted as connected within such system, are nearby specified locations, without, in certain embodiments, ever exposing the exact location of any user to any other user, and to communicate with users and others. Users sign up for the service provided by the invention by creating accounts for themselves. Information about each user that is to be used in the functioning of the service provided by the invention is stored in one or more databases of the system for purposes of the functions described below. 
         [0094]    As shown in  FIG. 1 , a preferred embodiment comprises a system featuring a remote operations center, which center is comprised of one or more servers that can connect to the internet or another network, and client devices running the client application and that can connect to the internet or such other network. The server(s) included within the remote operations center are comprised of one or more processors, memory, one or more long-term storage devices, and one or more network adapters connecting such servers to the internet or another network. As shown in  FIG. 2 , in such embodiment, each client device running the client application features one or more processors, memory, one or more long-term storage devices, one or more network adapters, and one or more sensors from which the location of such device can be determined. 
         [0095]    Each client device running the application calculates the location of such device using one or more built-in sensors, which may include, but are not limited to, global positioning system sensors, cellular radio transmitters and receivers, Wi-Fi radio transmitters and receivers, and Bluetooth radio transmitters and receivers. As summarized in  FIG. 3 , upon determining the location of the device, the client device running the application transmits such locational information, together with the identity of the account logged into the application on such client device, over the internet or another network, to the system&#39;s server(s). The server(s) receive such data through the internet or such other network and log it in a database stored on one or more of the long-term storage devices connected to the server(s). Through repetition of this procedure on numerous client devices running the application, such database will include locational information for the network of user accounts created within the application. As summarized in  FIG. 4 , if and when the location of a client device changes, such client device detects such change using one or more sensors and transmits such changed locational information, together with the identity of the account logged into the application on such client device, over the internet or another network, to the system&#39;s server(s). The server(s) receive such data through the internet or such other network and log it in the database to update such database with respect to the location of the applicable client device. In this way, the database receives periodic updates regarding the locations of the devices running the client application. 
         [0096]    In a preferred embodiment, the application running on a client device provides a visual mapping interface within the application, which functions as follows: within the application, the user is presented with a map, which may initially be centered about the user&#39;s own location; the graphical interface also features tools that allow the user to: (1) move the center point of the area represented by the map and (2) specify a search radius (from within a range bounded by a prescribed maximum and minimum) to be applied about the selected map center point. In a preferred embodiment, a user may select a center point visually by moving the displayed map via the interface provided in the application or by specifying an address or location to serve as the center point. 
         [0097]    As summarized in  FIG. 5 , a user of the client application can specify a query, comprising a center point and a radius defining a geographic area. The client application converts the center point and radius specified by the user into a set of geographic coordinates and transmits such information to the server(s), which receive such query and process it. The processing of such query is comprised of: accessing the system&#39;s database; identifying those other users of the system who are denoted in the database as being connected to the querying user; identifying, from within the list of those other users, those whose account settings permit the querying user to be informed of when such other users are nearby; accessing the most recent locations of client devices associated with such subset of other users; calculating which of those stored locations are within the geographic area specified by the query; generating a list of the user accounts associated with such stored locations; and transmitting such list to the client device of the querying user. 
         [0098]    In such embodiment, upon receipt of such list from the server(s), the client application running on the querying user&#39;s client device displays to the querying user an indication of the number and/or identity of such other users who have client devices for which the most recently stored locations are within the queried geographic area. In this way, the above-described embodiment manipulates locational data received from a multiplicity of users of the system to present to a querying user a list of other users who are likely located within the queried geographic area and who are denoted in the system&#39;s database as being connected to the querying user. In a preferred embodiment, the client application that receives such list displays an integer to the querying user, which integer represents the number of such other users who are included in such list. In a preferred embodiment, the querying user can also access, through the client application, the identities of those other users included in such list. In this way, the querying user can use the embodiment to determine which other users, to whom he or she is denoted as connected within such system, are likely located within the queried geographic area. Additional embodiments permit the querying user to command the client application to further manipulate the list of other users who are likely located within the queried geographic area by ordering, ranking, or filtering such list. In a preferred embodiment, each time the user changes the selected map center point or search radius, the client application transmits a query using those changed parameter(s) to the server(s) for processing. 
         [0099]      FIG. 6  illustrates an example query, and the corresponding results of such query. In such example, User A is denoted in the system as connected to Users B, C, D, and E, and the user accounts of Users B, C, D, and E each are set to permit User A to be informed when each respective user is nearby. The most recent location logged in the system for User B is located 2 miles from User A; the most recent location logged in the system for User C is located 1 mile from User A, the most recent location logged in the system for User D is located 0.8 miles from User A, and the most recent location logged in the system for User E is located 2.5 miles from User A. User A selects his own location as the map center point for the query and selects a search radius of 1.2 miles. The locations logged in the system for Users C and D satisfy the query because those locations fall within the queried area. The locations logged in the system for users B and E do not satisfy the query. 
         [0100]      FIG. 7  illustrates an alternate example query, and the corresponding results of such alternate query. In such example, User A′ is denoted in the system as connected to Users B′, C′, D′, and E′, and the user accounts of Users B′, C′, D′, and E′ each are set to permit User A′ to be informed when each respective user is nearby. The most recent location logged in the system for User B′ is located 2.5 miles from location a; the most recent location logged in the system for User C′ is located 1.5 miles from location a, the most recent location logged in the system for User D′ is located 1 mile from location a, and the most recent location logged in the system for User E′ is located 3 miles from location a. User A′ selects location a as the map center point for the query and selects a search radius of 2 miles. The locations logged in the system for Users C′ and D′ satisfy the query because those locations fall within the queried area. The locations logged in the system for users B′ and E′ do not satisfy the query. 
         [0101]    In a preferred embodiment, the number of such other users who are nearby the queried center point is presented by the application visually as an integer to the querying user. Additional embodiments may employ alternative means of informing the querying user about the number of such other users who are nearby the queried center point. For example, the application could display differing colors or shading upon the map interface, with certain colors or concentration of shading representing different numbers of such other users. In other embodiments, the number of such other users who are nearby the queried center point could be presented by the application to the querying user by any other visual, audible, or physical means. 
         [0102]    In a preferred embodiment, the visual interface of the application also features a button that, when selected by the querying user, informs such user of the identity of those other users, to whom the querying user is denoted as connected within the system, who have current locations stored in the database that are within the location area specified by the querying user. However, such embodiment of the application never informs the querying user of the exact location of any other user of the system. In this way, the system provides utility to the querying user without disclosing the exact location of anyone else. This restriction of such embodiment balances the privacy of all users with the utility that users can derive from knowing when other users are nearby specified locations. 
         [0103]    In a preferred embodiment, each user of the client application can specify which other users, who are denoted in the system&#39;s database as being connected to such user, can use the embodiment to determine when he or she is likely located within a queried geographic area. To do so, the user specifies parameters within the client application running on his or her device defining one or more of the following: (1) whether such user should be included in any vicinity queries performed by other users of the application (meaning that no other user will be able to know when such user is within the other user&#39;s specified search vicinity); (2) whether such user should, on a user-by-user basis, be included in vicinity queries performed by particular other users; (3) whether such user should be included in vicinity queries when such user is located at one or more particular locations (meaning that, whenever such user is near such a specified location, some or all other users will be unable to know when such user is within such other users&#39; specified search vicinity); and (4) whether such user should be included in vicinity queries conducted at particular times (meaning that, during such time periods, some or all other users will be unable to know when such user is within such other users&#39; specified search vicinity). Each such parameter specified by a user is transmitted from such user&#39;s client application to the system&#39;s server(s), which parameter is then stored in the system&#39;s database. Each such stored parameter is applied as a constraint on vicinity queries involving the user account for which such parameter is stored to determine whether such user will be included in any results list generated by such vicinity query. In this way, such parameters, defined by a user for his or her user account, are applied to vicinity queries to manipulate the locational data stored within the system&#39;s database. 
         [0104]    In a preferred embodiment, each user of the client application can specify one or more geographic locations to be stored in the system&#39;s database in relation to such user&#39;s account, as well as one or more time periods during which such specified geographic locations should be used. In such embodiment, the client application transmits such specified locations and time periods to the system&#39;s server(s), which store such data in the system&#39;s database. For any vicinity query conducted during such a specified time period, the applicable specified location is used in place of any locational information otherwise transmitted by the user&#39;s client device. In this way, the client application permits each user to alter when and where such user is included in any results list generated by such vicinity query. This feature enables users to reap the benefit of receiving location-specific messages and invitations from other users who may search within the alternate vicinity specified by the user. A user might make use of this alternate location feature if, for example, he or she expects to be at a particular location at a certain time, and wishes to begin receiving location-specific messages and invitations relating to that location at some time prior to his or her arrival there. 
         [0105]    In a preferred embodiment, the client application and server(s) comprising the system permit users to communicate with each other by transmitting messages. As summarized in  FIG. 8 , in such embodiment, a user may select one or more recipients within the client application, input message data into the client application, and command the client device to transmit such data to the system&#39;s server(s). Upon receipt of such data, the system&#39;s server(s) process it by: reading the identities of the intended recipients, accessing the system&#39;s database of user accounts to determine which accounts are associated with the intended recipients, retrieving from the database the identities of the client devices, if any, on which the user accounts of such intended recipients are logged in, and transmitting such message data to such recipient client devices. Upon receipt of such message data, each receiving client device on which a recipient&#39;s user account is logged in displays or otherwise makes available such message data to such recipient. Additional embodiments permit users to transmit data to recipients other than, or in addition to, text. Such data may include video, audio, still images, or other digital data. 
         [0106]    In an embodiment, the client application allows the user to select whether a message to multiple recipients should be sent: (1) as a single group message to all recipients (such that each recipient can see the identity of the other recipients) or (2) as a series of individual messages, separately to each recipient (such that each recipient is not aware that any other recipient received the same message). After receiving the selection input from the user, the data transmitted from the client application to the system&#39;s server(s) modifies the behavior of the server(s) in accordance with such selection. Specifically: if the user selects to send a group message to all recipients, as summarized in  FIG. 9 , the client device transmits the message data to the system&#39;s server(s), which create a group chat room for all of the recipients and which retransmit such message to the specified group of recipients; if the user selects to send a message to multiple recipients separately, as an individual message to each recipient as summarized in  FIG. 10 , the client device transmits the message data to the system&#39;s server(s), which retransmit such message to each specified recipient without creating a chat room for all recipients. 
         [0107]    In a further embodiment, the application provides users with the ability to send and receive invitations to private and/or public events. Such invitations are sent from the device of the sender upon which the application is running to one or more remote servers; which servers in turn transmit such invitations to (1) in the case of private invitations, the device(s), if any, running the application on which the user accounts of the message recipients are logged in and (2) in the case of public invitations, all device(s) running the application which query such servers for public invitations associated with queried locations. 
         [0108]    In embodiments that feature invitations to private events, the client application and server(s) comprising the system permit users to transmit invitations to events to specified invitees. As summarized in  FIG. 11 , in such embodiment, a user may select one or more recipients within the client application, input information about the applicable event into the client application, and command the client device to transmit such data to the system&#39;s server(s). Upon receipt of such data, the system&#39;s server(s) process it by: reading the identities of the intended recipients, accessing the system&#39;s database of user accounts to determine which accounts are associated with the intended recipients, retrieving from the database the identities of the client devices, if any, on which the user accounts of such intended recipients are logged in, and transmitting such invitation data to such recipient client devices. Upon receipt of such invitation data, each receiving client device on which a recipient&#39;s user account is logged in displays or otherwise makes available such invitation data to such recipient. Additional embodiments permit users to transmit to recipients event invitation data other than, or in addition to, text. Such data may include video, audio, still images, or other digital data. 
         [0109]    In embodiments that feature invitations to public events, the client application and server(s) comprising the system permit users to publish or distribute, to all users of the client application, invitations to events that are not restricted to specific invitees. As summarized in  FIG. 12 , in such embodiments, a user may input information about the applicable event into the client application, specify within the client application that the invitation is to be made available to the public, and command the client device to transmit such data to the system&#39;s server(s). Upon receipt of such data, the system&#39;s server(s) process it by storing such data in the system&#39;s database. Other users of the client application can command the application to query the system&#39;s database for public events, including events relating to geographic locations specified by such users. As summarized in  FIG. 12 , upon receipt of such a query, the system&#39;s server(s) access the system&#39;s database, search the database for public events satisfying the querying user&#39;s search criteria, and transmit to the querying user&#39;s client device data about any public events satisfying such user&#39;s search criteria. Upon receipt of such public event data, the receiving client device displays or otherwise makes available such public event data to such querying user. For example, in an embodiment, invitations to public events are viewable by all users of the system by visual review or search of either: (1) a mapping interface within the application (upon which public events are marked by visual elements overlaid on the map location of the applicable event) or (2) a listing of invitations to public events that the application makes available to users. Additional embodiments permit users publishing public invitations to include data other than, or in addition to, text. Such data may include video, audio, still images, or other digital data. 
         [0110]    In a further embodiment, the system also routes communications through other protocols (including, for example, SMS and email) so that users of the application can send information (such as messages or invitations) to non-users from within the application. Further embodiments can provide users of the application with the ability to communicate through non-text-based means, such as audio and/or video transmission or the transmission of still images or other digital files. 
         [0111]    In certain embodiments, if a user grants appropriate permissions to the client application running on the user&#39;s device, the client application populates the list of other users to whom the user should be denoted as connected within the system by a variety of methods. For example, in an embodiment, the system determines which users of the client application should be denoted in the system&#39;s database as being connected to a given user without requiring such user to send connection requests to, or take individual actions with respect to, other users. In such embodiment, if a user grants appropriate permissions to the application running on the user&#39;s device, the client application accesses the list of contacts stored on, or made available through, such client device and transmits the telephone numbers and email addresses of such contacts to the system&#39;s server(s). Upon receipt of such data, the system&#39;s server(s) access the system&#39;s database to search for user accounts associated with any of such telephone numbers and email addresses. If the database includes a user account associated with any such phone number or email address, the server(s) query the database to determine whether the user whose account is associated with such phone number or email address has or had the transmitting user&#39;s telephone number or email address stored on, or made available through, his or her client device. The server(s) modify the database to denote as connected any two users who have each others&#39; telephone numbers and/or email addresses stored in, or made available through, their respective client devices. In a preferred embodiment, the client application transmits to the server(s), and/or the server(s) store in the database, a hash of any such contact information. Accordingly, in such an embodiment, the matching procedure described above takes place with respect to a hash of any such contact information rather than the contact information itself. 
         [0112]    In another embodiment, the client application accesses the user&#39;s list of Facebook friends and transmits such information to one or more of the system&#39;s servers. Upon receipt of such data, the system&#39;s server(s) access the system&#39;s database to search for user accounts associated with any of such Facebook friend. If the database includes a user account associated with any such Facebook friend, the server(s) modify the database to denote as connected any two users who are each others&#39; Facebook friends. In a preferred embodiment, the client application transmits to the server(s), and/or the server(s) store in the database, a hash of any such Facebook information. Accordingly, in such an embodiment, the matching procedure described above takes place with respect to a hash of any such Facebook information rather than the Facebook information itself. 
         [0113]    Additional embodiments may make use of additional mechanisms for determining which users of the application should be denoted in the system&#39;s database as being connected to each other and, if so, denoting such connections in the system&#39;s database. Such additional mechanisms may include, without limitation, (1) examination of the connection lists of other social media platforms or (2) an invitation-request model wherein a user sends requests from his or her client application, through the system&#39;s server(s), to other users of the client application, seeking permission to be connected to those other users, and a connection is denoted in the system&#39;s database with respect to a request-sender and a request-recipient if such request-recipient accepts such request. 
         [0114]    In an embodiment, those other users of the system who are denoted in the system&#39;s database as being connected to a given user are listed on a “friend list” for such user, which list is displayed to the user within the interface of the application. In additional embodiments, a user may create one or more subcategories or sublists of such other users. 
         [0115]    In some embodiments, the application also displays a user&#39;s contacts (such as those drawn from his or her device&#39;s list of contacts) who are not themselves users of the system (or are not denoted within the system&#39;s database as being connected to such user), allowing such user to make use of the application&#39;s features that allow users to communicate through protocols (such as SMS or email) other than the application&#39;s internal messaging client or invitation system. 
         [0116]    In one such embodiment, the client application running on the sender&#39;s client device may access the contact information stored on, or made available through, such device and may permit the sender to select recipients for whom he or she has contact information but who are not themselves users of the client application. In such a case, the system comprised of the client application and the server(s) transmits the sender&#39;s message, invitation, or other data over one or more of such other protocols according to an order of priority, which may be predefined by the system or may be defined by the sending user. For example, if a user composes a message or invitation and selects a group of recipients that include: (1) other users of the client application, (2) individuals who do not use the client application but for whom the sender has a telephone number, and (3) individuals who do not use the client application but for whom the sender has an email address, the system in such embodiment will: (1) transmit the message or invitation to the client application running on the client device(s), if any, on which the user accounts of recipients who use the client application are logged in, (2) route the message or invitation to the SMS application of the sender&#39;s device, or send the message or invitation via SMS, for those recipients who do not use the client application but for whom the sender has a telephone number, and (3) route the message or invitation to the email application of the sender&#39;s device, or send the message or invitation via email, for those recipients who do not use the client application but for whom the sender has an email address. 
         [0117]    In an embodiment, if a sender specifies a recipient who does not have a client application account but for whom the sender has both a telephone number and an email address, the system will send the message or invitation via SMS instead of email. In additional embodiments, the system may feature additional external protocols for transmitting information and/or may feature a different order of priorities for the use of such external protocols. In further additional embodiments, the client application may permit a sender to specify his or her preferred order of priorities for the use of such external protocols. In further additional embodiments, the client application includes input fields into which a sender may input contact information for a recipient, such as a telephone number or an email address, such that the sender may use the client application to send messages or invitations to recipients who may not be users of the client application and for whom contact information may not be stored on, or otherwise made available through, the sender&#39;s client device. 
         [0118]    In further embodiments, additional communication protocols can be added to, or removed from, the collection of external communication protocols utilized by the system to provide users with further ways to communicate with others (regardless of whether those others use the system). In such cases, the order in which such protocols are applied may be altered by the system or defined by the user. 
         [0119]      FIGS. 13 through 71  show screenshots from an embodiment of the client application described herein, such screenshots showing the features of, and the method of using, the invention disclosed herein as noted in the respective captions of such figures. 
         [0120]    Certain embodiments may include advertisements displayed or otherwise distributed through the client application. Such advertisements may include visual and/or audible components and may or may not be displayed or otherwise distributed with regard to the location of users of the system. For example, in an embodiment, an advertisement for a event that is to occur at location A (e.g., a concert venue) may be displayed or otherwise distributed to a user of the system who is located near location A at a time prior to the occurrence of such advertised event, but not displayed or otherwise distributed to a user who is not located near location A. In additional embodiments, the selection of which advertisements are to be displayed or otherwise distributed to particular users of the system may give weight to the preferences or interests expressed by such users. 
         [0121]    In an embodiment, advertisements may be displayed in the client application within a dedicated portion of the screen on which the client application is being displayed. In another embodiment, advertisements may be presented as graphical markers on the mapping interface provided within the client application. In such an embodiment, the user may be able to obtain additional information about such advertisement by selecting it from within the client application interface. 
         [0122]    The pricing charged for such advertisements may take into account several location-based factors. In one embodiment, the cost charged to an advertiser may increase in relation to the number, or concentration, of advertisements to be displayed with respect to a specified locational area. For example, if there are 10 advertisements that are to be displayed near location A and 5 advertisements that are to be displayed near location B, a higher price may be charged to those advertisers who wish to display advertisements near location A. In another embodiment, the cost charged to an advertiser may increase in relation to the number, or concentration, of users of the system near the location at which such advertisement is to be displayed. For example, if there are 100 users near location X and 10 users near location Y, a higher price may be charged to those advertisers who wish to display advertisements near location X. 
         [0123]    In another embodiment, advertisers may be permitted to bid different amounts to affect the probability that their advertisements will be displayed. For example, in such an embodiment, the system may limit the number of advertisements that will be displayed by the client application at a particular moment within a certain vicinity. If two advertisers wish to display advertisements to users who are near location Q, each such advertiser may be permitted to bid for the right to have its advertisement displayed at a greater frequency than the other&#39;s. In such an embodiment, the frequency with which an advertisement is displayed within the application may be related to the relative size of the bid submitted by the sponsoring advertiser. 
         [0124]    In further embodiments, advertisers may be charged with respect to the number of users who interact with (or “click through”) their advertisements that may be displayed or otherwise distributed within the client application, including as graphical markers on the mapping interface provided within the client application.