User contact control in web applications
By presenting contact access options on the user device and defining access rules, the user interface processing is solved, and the problem of users being unable to control contact information sharing is achieved, and fine-grained information security and privacy protection is achieved to prevent unauthorized information access and leakage.
Patent Information
- Application Number
- CN202480007324.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-01-18
- Filing Date
- 2024-01-18
- Publication Date
- 2025-08-19
AI Technical Summary
In the prior art, users cannot effectively control the use and access of information when sharing contact information, and there is a risk of identity theft, malware and information leakage, and existing solutions cannot ensure the security and privacy of users' information.
By implementing user interface processing on the user device, contact access options are presented to the user, allowing users to define granular level access rules and usage controls, restricting remote services' access to contact information, including choosing which information fields, which contacts and information storage policies are shared.
It realizes fine-grained control of contact information by users, ensures information security, prevents unauthorized access, protects user privacy, and clears information after communication is terminated, improving the security and controllability of information sharing.
Smart Images

Figure CN120513614A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This patent application claims the benefit of priority to U.S. patent application serial number 18 / 156,248, filed on January 18, 2023, which is incorporated herein by reference in its entirety. Technical Field
[0003] The present disclosure relates generally to facilitating interaction between client devices over a network, and particularly to controlled access to contact information and use of that information. Background Art
[0004] Communication tools provide users with a digital medium for interacting with one another, sharing experiences, photos, videos, and more. Distributing content over a network allows users to send messages and connect with multiple users. Many applications, as well as remote and network services, require access to information stored on client devices to facilitate communication tools, applications, and services. This information can include personal information or contact details stored in contact cards. In an increasingly connected world, convenience, security, and control over information are all important factors in users' decisions to use these tools, applications, and services. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] In the drawings, which are not necessarily drawn to scale, similar reference numerals may describe similar components in different views. To easily identify the discussion of any element or action, the highest digit or digits in a reference numeral refer to the figure in which the element is first introduced. Some examples are shown by way of example and not limitation in the figures of the accompanying drawings, in which:
[0006] Figure 1 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, according to some examples.
[0007] Figure 2 is a diagrammatic representation of a view of a messaging system according to some examples.
[0008] Figure 3 is a diagrammatic representation of a view of a messaging system according to some examples.
[0009] Figure 4 is a flow chart illustrating a method as implemented by a messaging system according to some examples.
[0010] Figure 5 is a diagrammatic representation of contact selection and / or retrieval according to some examples.
[0011] Figure 6 is a signal flow diagram illustrating the operation of a messaging system according to some examples. DETAILED DESCRIPTION
[0012] Sharing user contact information with an application or service puts the user's personal information at risk of being misused. Many applications used on mobile devices and other computing devices are network-connected applications, where the mobile device sends data to and receives data from a remote endpoint connected to the network. Network-connected applications are susceptible to vulnerabilities when data is exchanged over the network during communications between the mobile application and the network endpoint. Network-connected applications and services require information to connect to users, servers, and endpoints, which may require users to allow access to the user's contacts and other personal or sensitive information. Once information is accessed by a service, the user cannot determine how the information is used, such as for advertising, to contact other services, or to be shared with third parties. These issues are in addition to general security concerns such as identity theft, malware, spam communications, and phishing attempts to obtain information.
[0013] Launching an application provided by a remote server and / or service, such as a messaging application or other application, results in the service requesting access to contact information. For mobile applications, the remote service manages the operation of the application and facilitates interaction with other participants. In these cases, the user launches an application, such as an application obtained through an app store, and this includes opening the application on a client device that connects the application to the remote server. The contact information requested by the remote service is typically stored on the client device in the form of a contact card, contact file, or maintained in another storage format. The user has control over the contact information on their device to add, delete, or modify information. However, once the information is provided to the service or other users, existing solutions do not allow the user to control the use of the information. Therefore, the disclosed technical challenge is to design a system and / or process that allows users to share their contact information with a remote service (e.g., an application, a web service, etc.) while retaining control over the information and ensuring its security.
[0014] The example embodiments described herein address these technical issues through a process (e.g., method) and / or system that enables a user to control and / or limit access to personal contact information based on granular access levels and / or usage control rules. The process and / or system can be implemented in conjunction with or as part of a communication system (e.g., a messaging system, etc.).
[0015] When a remote service or application requests contact information, the process and / or system presents a user with options for contact access. Users can define contact access rules at a granular level, choosing to share all contacts, none of the contacts, or select individual contacts. They can also specify which information fields are shared for each contact, such as name, email, phone number, or other details stored using, for example, a contact card. The process and / or system allows the user to set and / or customize usage control rules or usage control settings associated with the accessed contact information. These rules are sent to the requesting service or application and / or dictate how the application or remote service uses the contact information. Example rules correspond to requirements for non-persistent retrieval and / or storage of contact information beyond the application session. In some examples, the process and / or system utilizes a module for searching, selecting, and / or retrieving contact information based on user selections. The process may include user interface (UI) processing implemented by a UI module that presents options to the user, captures their selections, and / or acts as an intermediary between the application's request for contact information and the user's privacy preferences. The UI processing may present the user with options to select contact access for the requested service. The UI process may present a choice of usage control rules for each contact and / or enable implementation of selected usage control rules.The UI process may be triggered by a request to access a contact and / or operate on a client device or user device.
[0016] In some examples, the UI module displays one or more selection screens that enable selection of contacts on a contact list, specifying access controls and information controls in specific fields of a contact card, and / or specifying usage controls for user contacts and / or contact information fields. Given a requesting service, the user can select options to allow access to all contacts, a subset of contacts, or no contacts. For each contact, the user can enable access to specific information fields that are part of the contact information. In some examples, the UI module may also display usage control rule selection options. Examples of usage control rules include: services that must maintain contact information in non-persistent storage while an application session is active, services that must remove contact information from storage after the application session terminates, or other usage control rules.
[0017] In some examples, a communication system presents a contact selection option on an electronic device, enabling a user to select one or more individuals with whom to initiate communication. In response to selecting one or more individuals, the communication system accesses contact information corresponding to the selection and / or facilitates retrieval of the contact information. The contact information is stored during the communication between the user and the one or more selected individuals and / or is subsequently removed from storage upon termination of the communication. In some examples, a user can construct a contact group for an application session from a contact list on a client device. The communication system retrieves contact information for the selected contacts and stores the contact information in memory during the conversation between the users in the group. The communication system terminates storage of the contact information in memory upon termination of the communication.
[0018] In some examples, a remote service typically requests access to a contact list, corresponding to access to all contacts and all information associated with the contacts. Thus, the service presents an option to access all contacts or none of the contacts, but does not provide an option to grant access to a select group of contacts. The processes and / or systems described in the disclosure herein, operable on a client device, provide user control over contact access regardless of the options provided by the remote service. Thus, the processes and / or systems enable a user to define contact access rules and implement policies for accessing and using contact information. Consequently, only permitted information is shared with the remote service or application, and unauthorized access is prevented.
[0019] Figure 1 is a diagrammatic representation of a networked environment in which the present disclosure may be deployed, according to some examples. Figure 1 A messaging system 100 is shown according to some examples for exchanging data (e.g., messages and associated content) over a network, within which a voice chat system may be implemented. The messaging system 100 includes multiple instances of client devices 102, each of which hosts an application including a messaging client 104. Each messaging client 104 is communicatively coupled to messaging clients 104 on other client devices 102 and other instances of a messaging server system 108 via a network 106 (e.g., the Internet).
[0020] The messaging client 104 can communicate and exchange data with another messaging client 104 and with the messaging server system 108 via the network 106. The data exchanged between the messaging clients 104 and between the messaging clients 104 and the messaging server system 108 includes functions (e.g., commands for activating functions) and payload data (e.g., text, audio, video, or other multimedia data). The messaging client 104 is shown as including a voice chat component 103. The voice chat component 103 is configured to facilitate voice chat between the messaging clients by, for example, causing the presentation of a chat conversation UI, receiving audio input, transcribing the audio input into a text format, and causing the audio input to be transmitted to a recipient device with or without associated transcription text. The transcription of the audio input can be performed at the client device 102 and at the messaging server system 108.
[0021] The messaging server system 108 provides server-side functionality to the messaging clients 104 via the network 106. Although certain functionality of the messaging system 100 is described herein as being performed by the messaging clients 104 or by the messaging server system 108, the location of certain functionality within the messaging clients 104 or within the messaging server system 108 may be a matter of design choice. For example, it may be technically preferable to initially deploy certain technologies and functionality within the messaging server system 108 but to later migrate the technologies and functionality to the messaging clients 104 where the client devices 102 have sufficient processing power.
[0022] The messaging server system 108 supports various services and operations provided to the messaging clients 104. Such operations include transmitting data to and receiving data from the messaging clients 104, and processing data generated by the messaging clients 104. By way of example, this data may include message content, client device information, geolocation information, media enhancements and overlays, message content persistence conditions, social network information, and live event information. Data exchange within the messaging system 100 is activated and controlled by functionality available through the UI of the messaging clients 104.
[0023] Turning now specifically to the messaging server system 108, an application program interface (API) server 110 is coupled to an application server 112 and provides a programming interface to the application server 112. The application server 112 is communicatively coupled to a database server 118, which facilitates access to a database 120 that stores data associated with messages processed by the application server 112. For example, the database 120 stores audio content from voice chat messages associated with corresponding sender identifiers, with or without associated text. For the purposes of this description, a voice chat message includes an audio message (or a reference to an audio message) and an associated textual representation of the audio. The audio content from the voice chat message may persist until an instruction is received at the messaging system 108 to delete the voice chat message.
[0024] Similarly, web server 124 is coupled to application server 112 and provides a web-based interface to application server 112. To this end, web server 124 processes incoming network requests via Hypertext Transfer Protocol (HTTP) and / or several other related protocols.
[0025] The application program interface (API) server 110 receives and transmits message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the application program interface (API) server 110 provides a set of interfaces (e.g., routines and protocols) that can be called or queried by the messaging client 104 to activate the functionality of the application server 112. The application program interface (API) server 110 exposes various functions supported by the application server 112, including: account registration; login functionality; sending messages from a particular messaging client 104 to another messaging client 104 via the application server 112; sending media files (e.g., images or videos) from a messaging client 104 to the messaging server 114 and for possible access by another messaging client 104; setting up collections of media data (e.g., stories); retrieving a friend list of a user of the client device 102; retrieving such collections; retrieving messages and content; adding and removing entities (e.g., friends) to an entity graph (e.g., a social graph); locating friends within a social graph; and opening application events (e.g., related to the messaging client 104).
[0026] The application server 112 hosts a plurality of server applications and subsystems, including, for example, a messaging server 114, an image processing server 116, and a social networking server 118. The messaging server 114 implements a plurality of message processing technologies and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content) included in messages received from multiple instances of the messaging client 104. As will be described in further detail, text and media content from multiple sources can be aggregated into collections of content (e.g., referred to as stories or galleries). These collections are then made available to the messaging client 104. Given the hardware requirements for other processor- and memory-intensive processing of data, such processing can also be performed on the server side by the messaging server 114.
[0027] The application server 112 also includes an image processing server 116 that is dedicated to performing various image processing operations, typically on images or videos within the payload of messages sent from or received at the messaging server 114 .
[0028] The social network server 118 supports various social networking functions and services and makes these functions and services available to the messaging server 114. To do so, the social network server 118 maintains and accesses an entity graph within the database 120. Examples of functions and services supported by the social network server 118 include identifying other users in the messaging system 100 with whom a particular user has relationships or who the particular user is "following," and also identifying interests and other entities of a particular user.
[0029] Figure 1 Also shown is a voice chat component 103 provided at the messaging client 104 (in some examples, the voice chat component 103 is also provided at the messaging server 114, or has functionality supported by the messaging server 114). The voice chat component 103 is configured to cooperate with the messaging client 104 to facilitate voice chat between the messaging clients by, for example, causing a chat conversation UI to be presented, receiving audio input, transcribing the audio input into a text format, and causing the audio input with or without associated transcription text to be transmitted to a recipient device. The voice chat component 103 and one or more messaging clients 104 may be collectively referred to as a voice chat system. The client device 102 also includes a UI module 130 for controlling contact information and other sensitive data.
[0030] Figure 2 is a diagrammatic representation of a view of a messaging system 100 according to some examples. Figure 2A client device 200 (eg, corresponding to Figure 1 1. Example modules and components of a messaging client 104 at a client device 102 of FIG. 1. The diagram illustrates various components or modules that interact when communicating with a network service to manage user contact information and / or control access.
[0031] Client device 200 includes a device processor 202 and an application configuration manager 224 for facilitating applications and services. Network-based applications launched on client device 200 utilize network services to send and receive data to provide the application's functionality. Client device 200 includes a display controller 222 for controlling presentation on display device 240. When client device 200 communicates with a network service, device processor 202 and application configuration manager 224 provide a user's identification to launch an application on the network service. In response, the network service requests information from client device 200, including contact information (e.g., from contact card 210). For each contact, contact card 210 includes a set of fields, including the contact's full name, email address, home address, phone number, social network ID, user ID, personal details (e.g., date of birth), interests, or other information related to each contact. In some examples, contact card 210 forms a user's contact list on client device 200.
[0032] When launching an application, the client device 200 sends a message to the network service to launch the application and receives a request for information, such as access to a contact list. The network service request triggers the operation of the UI module 208, which presents a UI window on the display screen of the device 200, shown as the display device 240. The application configuration manager 224 prepares the client device 200 for running the application and provides the application related information to the UI module 208, wherein the application configuration manager 224 prepares the information and data to operate with the remote server. Thus, the UI module 208 (e.g., corresponding to Figure 1 The UI module 130 in FIG. 208 interfaces between the network service and the contact card 210 to allow or restrict access and / or transfer of which (if any) of the shared contact fields are shared during use of the application. In this manner, the UI module 208 protects confidential information of the user's contacts and / or prevents exposure of the contact fields of the contact card 210 stored in the contact storage 212. The UI module 208 effectively intercepts the request for contact access and instructs the display controller 222 to present a UI window 230 for contact selection, which is presented for one or more applications and services and enables the user to allow access to select a contact.
[0033] UI window 230 presents contact access options to the user. The contact access options may correspond to a contact selection option, a contact addition option (e.g., adding one or more new contacts), a contact list synchronization option, and the like. In some examples, the contact access options are presented separately by type (e.g., a contact selection option is presented separately from a contact addition option), while in other examples, they are displayed hierarchically (e.g., a contact selection option may include a contact addition option, which may include a contact synchronization option, and so on). Other configurations are possible, as determined by those skilled in the art. UI window 230 may present at least one option control element, enabling the user to select one of the contact access options (or contact selection options) and / or switch between the presented options. The contact access options (e.g., contact selection options) include, for example, a first contact access option 232 (e.g., "Select Contacts") that allows the user to select individual contacts from the contact list. UI window 230 is provided as an example to illustrate the options provided to the user for contact selection and control. In some examples, other formats may be presented as UI windows consistent with device capabilities, display size, or other capabilities. In response to the user selecting option 232, the user's contact list with the ability to select individual contacts is presented on display device 240. In some examples, the ability to select and / or filter individual contacts is implemented by one or more presented contact selection control elements. Thus, presenting a filtered list of contacts can include presenting one or more contact selection control elements.
[0034] Given the contact's selected group, UI module 208 transmits the group information to selection module 218, where information associated with the group from contact card 210 is retrieved and provided to UI module 208 to prepare a response to the original request from the application or service for access to the user's contacts. In some embodiments, selection of option 232 triggers the presentation of a search field on display device 240, allowing the user to enter characters or numbers to search within contact card 210, with the search being performed, for example, by search module 220. UI module 208 interfaces with search module 220 and / or selection module 218 to retrieve contact results.
[0035] Continuing with UI window 230, a second contact access option 234 enables all contacts to be selected and / or the user to access all contacts. In response to selecting second option 234, UI module 208 enables access to all contact cards 210 by the application or service. In some examples, selecting the first option or the second option results in the presentation of an additional window for the user to specify contact information fields in contact card 210, which allows the user to further specify the access level of contact information (e.g., contact information fields), for example, by further restricting access to contact information. Contact selection and / or contact information field selection can be implemented, for example, by selection module 218.
[0036] When the UI window 230 is presented for selecting a contact, a third contact access option 236 is presented in the UI window 230. The third option 236 can correspond to an option to do nothing and / or its selection disables all of the allowed contacts in the contact card 210. When contact access is disabled, the UI module 208 does not provide information to the application or service, e.g., corresponding to providing an empty set response.
[0037] Thus, UI module 208 receives a selection from the user and responds by applying the selection to retrieve all, some, or none of the contacts from contact card 210. UI module 208 may store the selection and resulting contact information in memory (not shown).
[0038] In some examples, the UI also displays usage control rule selection options. Examples of usage control rules include: services that must maintain contact information in non-persistent storage while an application session is active, services that must remove contact information from storage after an application session is terminated; or other usage control rules. In some examples, usage control rules can be defined, stored, modified, and / or transmitted by usage control module 214, for example, based on user input supplied via UI module 208. As described above, the diagram of a portion of client device 200 includes modules suitable for contact selection and / or access control for network-based applications. Contact retrieval module 206 includes modules that enable a user to control access to contact information, such as search module 220, selection module 218, contact field module 216, or usage control module 214, as well as other modules. In some examples, contact field module 216 receives user selections of contact fields that are allowed or prohibited from being shared with network services and / or other remote services.
[0039] Figure 3 is a diagrammatic representation of a view of a messaging system 100 according to some examples. Figure 3Depicts a detailed UI for managing contact information access, enabling the user to select individual contacts and manage the determined or indicated scope of information to be shared with an application or service. For example, Figure 3 UI window 230 is shown after the user selects option 232, which enables selection of individual clients in a contact or client list. In response to this selection, display device 240 presents next UI window 250, which displays client list 252 and / or selection box 254. In response to receiving a selection of a contact's box (or in response to detecting that the box has not been selected), UI module 208 (and / or messaging system 100) may assign an access level to the contact, specifying whether the contact's contact information is accessible or inaccessible to the remote server. Selection box 254 corresponds to an access level selection option for contact information of a contact in the contact list. Thus, selection box 254 (or an equivalent) corresponds to one or more contact selection control elements. In some examples, selection box 254 corresponds to a default state of "unselected," and the user can explicitly select a contact to include. In some examples, selection box 254 corresponds to a default state of "selected," and the user can explicitly deselect or click to exclude the contact from inclusion. Different colors associated with selection box 254 can distinguish between "selected" contacts and "unselected" contacts (e.g., in one illustrative color scheme, black can correspond to selected and white can correspond to unselected, or vice versa). In some examples, other colors and / or patterns can indicate whether a contact is selected.
[0040] In one example, the UI module 208 provides an additional UI window 260 to present the field list 262 in the contact card 210 and / or with a selection box 264. In some examples, other types of selection elements can be used, such as selection circles, triangles, and / or other shapes or patterns. The selection box 264 enables the UI module 208 to receive fine-grained user selections to indicate which fields in the field list 262 should or should not be accessible to the remote server. The selection box 264 corresponds to an access level option, here for a specific field in the field list 262. In some examples, the selection box 264 can correspond to one or more contact selection control elements, here associated with a specific field in the field list 262. In response to the user's selection of a field to be shared with the network service, the UI module 208 filters other fields from being accessed by the network service (e.g., from the remote server).
[0041] The client device 200 includes a communication unit 204 for communicating with remote users and services (e.g., network services for the applications and services discussed herein) to display a UI window for selecting a contact, wherein the UI window is presented in response to a request from an application or server. The communication unit 204 can manage various communication protocols, including wireless, wired, Bluetooth, etc. Messages sent between the client device 200 and the network service are transmitted through a network such as the network 106 via the communication unit 204.
[0042] Figure 4 is a flow diagram illustrating a method 400 as implemented by the messaging system 100 (e.g., implemented by the UI module 208) according to some examples. The method 400 corresponds to a (UI) process implemented, for example, by the UI module 208 and / or the messaging system 100. At operation 402, the client device 200 launches an application. The client device 200 sends a request (at 404) to a network service to start running the application. The client device 200 receives a request from the network service to access a user's contact list (at 406), and in response, the client device 200 initiates a UI process (at 408) to present contact access options to the user (at 410), such as Figure 2 As shown in the UI window 230 of . The client device 200 receives one or more user selections for allowing contact access (at 412). Given the user selection, the client device 200 determines whether it means allowing the contact to access all contacts, no contacts, or specific contacts (at 414). For the selection of all contacts, the process enables access to all contacts as a group (at 424) and sends the group contact information to the network service (at 420). When the user chooses not to provide access to contacts, the client device 200 prohibits access to the contact list. When the user chooses to select individual contacts, the method 400 receives the selected contacts (at 416) and / or enables access to the selected contacts of the group (at 418). The group contact information is then sent to the network service (at 420). The client device 200 communicates with the group through the application (at 422). Communication can include person-to-person communication, multicast communication, broadcast communication, etc.
[0043] Figure 5 is a diagrammatic representation 500 of contact selection and / or retrieval according to some examples. Figure 5A contact selection is shown in, for example, a smartphone 502 as a client device displaying a UI window 504. The smartphone 502 enables a user to access contacts according to various options shown in the UI window 504. The options in 504 correspond to selection elements that trigger actions in response to user selection. When a user launches an application or when a user receives an invitation from an application, the application UI process is executed. Figure 5 , multiple option paths are shown. For example, selecting the option for all contacts results in the presentation of window 506 listing all found friends and / or providing an add button 514. Add button 514 allows contacts not currently in the contact list to be imported into the application by sending a friend request to them. When the user chooses to select contacts for sharing (corresponding to selecting some contacts), window 508 presents a list of contacts and / or a selection circle (or, in some examples, a selection box and / or any other shape or configuration of selection elements). Any configuration of two or more colors and / or patterns can be used to map to selected or unselected contacts. Once contact selection is complete, window 510 presents a list of groups to be sent to the network service. In some examples, other configurations can be implemented to provide user control over contact access. Additional controls and features can be added depending on the application, client device, network service, etc. UI windows can be implemented for different devices and functions, for example, identifying users by criteria and / or assigning user groups to specific applications. In some examples, users can be identified and / or grouped by shared interests, device type, or other criteria.
[0044] Figure 6 6 is a signal flow diagram 600 (e.g., a data flow diagram) illustrating the operation of the messaging system 100 according to some examples. An application configuration module within a client device (e.g., client device 200) launches an application by sending a message 602 to a communication unit, which is transmitted to a network service as a message 604. The network service responds to the request with a message 606 to the application configuration module, which requests access to the user's contacts. The message 606 requesting contacts triggers an interaction with the UI module via a message 608. The UI module performs contact selection processing to allow the user to make contact selections, which are provided to the application configuration module via a message 610. The contact selection information is used to determine the content of a contact response message 612 that is forwarded to the network service.
[0045] The present method and system provide users with the option to protect contact information, storing data only when needed and not maintaining the information in the system. Complete contact card information is not stored in the system but is retained by the user. The present invention addresses the technical issues of security and privacy in network-based applications by providing users with a process for controlling and restricting access to user contact information stored on a client device or user device for use by applications, network services, and others, and as used herein, these are collectively referred to as remote services. The process is triggered by a request to access contact information and / or personal details and presents the user with options for controlling and protecting contact information. This includes allowing the user to define contact access rules and implement policies for accessing and using contact information.
[0046] Example
[0047] Example 1 is a method for a computing device, the method comprising: selecting an application from a plurality of applications stored on the computing device, the application being configured to communicate with contacts on a contact list stored on the computing device through a remote server; sending a request to the remote server to launch the application on the computing device; receiving a request from the remote server to access the contact list stored on the computing device; and in response to receiving the request from the remote server, launching user interface (UI) processing on the computing device, wherein the UI processing comprises: presenting a UI window on a display of the computing device; presenting contact access options in the UI window; receiving a user selection of a contact access option in the contact access options, the contact access option allowing the remote server to access a set of contacts on the contact list; and sending a response to the remote server allowing access to the set of contacts.
[0048] In Example 2, the subject matter of Example 1 includes, wherein the UI processing further comprises assigning an access level to each contact in the contact collection, the access level specifying contact information that can be accessed by the remote server.
[0049] In Example 3, the subject matter of Example 2 includes, wherein the contact information comprises a set of fields including at least one of a contact full name, a contact email address, a contact home address, a contact phone number, and contact personal details.
[0050] In Example 4, the subject matter of Example 3 includes prohibiting access by the remote server to contacts not included in the contact set.
[0051] In Example 5, the subject matter of Examples 2 to 4 includes, wherein the set of contacts does not include contacts on the contact list.
[0052] In Example 6, the subject matter of Examples 1 to 5 includes, wherein the UI processing further comprises: presenting a contact list in the UI window; and presenting at least one access level selection option for each contact on the contact list.
[0053] In Example 7, the subject matter of Examples 2 to 6 includes, wherein the UI processing further comprises assigning a usage control rule to each contact in the contact collection, the usage control rule specifying a remote server action to restrict usage of the contact information.
[0054] In Example 8, the subject matter of Example 7 includes, wherein the usage control rule requires the remote server to delete the contact information upon application termination, or specifies allowable remote service operations associated with the contact information.
[0055] In Example 9, the subject matter of Examples 1 to 8 includes, wherein the UI processing further comprises: presenting a list of contacts in the UI window; and presenting at least one usage control rule selection option for each contact in the contact set.
[0056] In Example 10, the subject matter of Examples 1 to 9 includes, wherein the communication associated with the application is a chat function on a network.
[0057] In Example 11, the subject matter of Examples 1 to 10 includes, wherein the contact options further include an option to add a new contact to the contact collection.
[0058] Example 12 is at least one machine-readable medium comprising instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations to implement any of Examples 1-11.
[0059] Example 13 is an apparatus comprising means for implementing any one of Examples 1 to 11.
[0060] Example 14 is a system for implementing any one of Examples 1 to 11.
[0061] Example 15 is a method for implementing any one of Examples 1 to 11.
[0062] Example 16 is a machine-readable non-transitory storage medium having instruction data, wherein the instruction data is executable by at least one processor to cause the at least one processor to perform operations in a messaging system for exchanging data over a network in the following manner: in response to a request to interact with a communication application: presenting multiple contact selection options on an electronic device; accessing a first user selection of one of the multiple contact selection options; filtering a contact list based on the first user selection to generate a filtered contact list; presenting the filtered contact list; accessing a second user selection of a contact set for communication from the filtered contact list; retrieving contact information for the contact set; enabling temporary storage of the contact information in a memory; and enabling access to the contact information during communication.
[0063] In Example 17, the subject matter of Example 16 includes, wherein the contact information is a subset of information stored in association with the contact list.
[0064] In Example 18, the subject matter of Examples 16-17 includes, wherein the filtered contact list is stored for use during the communication.
[0065] In Example 19, the subject matter of Example 18 includes, wherein presenting a plurality of contact selection options further comprises presenting an option control element.
[0066] In Example 20, the subject matter of Example 19 includes, wherein presenting the filtered list of contacts further comprises presenting a contact selection control element.
[0067] In Example 21, the subject matter of Examples 16 to 20 includes, wherein the set of contacts includes all contacts in the contact list.
[0068] In Example 22, the subject matter of Examples 16 to 21 includes, wherein the contacts set is an empty set.
[0069] In Example 23, the subject matter of Examples 16 to 22 includes, wherein the plurality of contact selection options includes an add option for inviting a new contact.
[0070] Example 24 is at least one machine-readable medium comprising instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations to implement any of Examples 16 to 23.
[0071] Example 25 is an apparatus comprising means for implementing any one of Examples 16 to 23.
[0072] Example 26 is a system for implementing any one of Examples 16 to 23.
[0073] Example 27 is a method for implementing any one of Examples 16 to 23.
[0074] Glossary
[0075] "Carrier signal" refers to any intangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine, and includes digital or analog communication signals or other intangible media to facilitate communication of such instructions. Instructions may be transmitted or received over a network using a transmission medium via a network interface device.
[0076] "Client device" refers to any machine that interfaces with a communications network to obtain resources from one or more server systems or other client devices, for example. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smartphone, a tablet computer, an ultrabook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communications device that a user may use to access a network.
[0077] "Communications network" refers to, for example, one or more parts of a network, which may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a part of the Internet, a part of the Public Switched Telephone Network (PSTN), a Plain Old Telephone Service (POTS) network, a cellular telephone network, a wireless network, The coupling may be a network, another type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless network or a cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any of various types of data transmission technologies, such as single carrier radio transmission technology (1xRTT), evolution data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rates for GSM evolution (EDGE) technology, the third generation partnership project (3GPP) including 3G, fourth generation wireless (4G) networks, universal mobile telecommunications system (UMTS), high speed packet access (HSPA), world wide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other data transmission technologies defined by various standards setting organizations, other long distance protocols, or other data transmission technologies.
[0078] "Component" refers to a device, physical entity or logic having boundaries defined by function or subroutine calls, branch points, APIs or other technologies provided for dividing or modularizing specific processing or control functions. A component can be combined with other components via its interface to perform machine processing. A component can be a packaged functional hardware unit designed for use with other components, and can be part of a program that generally performs a specific function of a related function. A component can constitute a software component (e.g., a code implemented on a machine-readable medium) or a hardware component. A "hardware component" is a tangible unit that can perform certain operations and can be configured or arranged in certain physical ways. In various examples, one or more computer systems (e.g., an independent computer system, a client computer system or a server computer system) or one or more hardware components (e.g., a processor or a processor group) of a computer system can be configured by software (e.g., an application or an application part) to operate to perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically or in any suitable combination thereof. For example, a hardware component can include a dedicated circuit system or logic that is permanently configured to perform certain operations. The hardware component can be a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). The hardware component can also include a programmable logic or circuit system that is temporarily configured to perform certain operations by software. For example, the hardware component can include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a specific machine (or specific component of a machine) that is uniquely customized to perform the configured function, rather than a general-purpose processor. It should be understood that the decision to mechanically implement the hardware component in a dedicated and permanently configured circuit system or in a temporarily configured (e.g., configured by software) circuit system can be driven for cost and time considerations. Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to include tangible entities, that is, entities that are physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in some way or perform certain operations described herein. Considering an example in which a hardware component is temporarily configured (e.g., programmed), each of the hardware components does not need to be configured or instantiated at any one moment. For example, in the case where a hardware component includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware components) at different times. For example, the software configures one or more specific processors accordingly to constitute a specific hardware component at one time and to constitute different hardware components at different times. Hardware components can provide information to other hardware components and receive information from other hardware components. Therefore, the described hardware components can be considered to be communicatively coupled.When there are multiple hardware components at the same time, communication can be achieved by signal transmission (for example, by appropriate circuits and buses) between two or more hardware components or among two or more hardware components. In the example that multiple hardware components are configured or instantiated at different times, the communication between such hardware components can be achieved, for example, by storing information in a memory structure that multiple hardware components can access and retrieving information in the memory structure. For example, a hardware component can perform an operation, and the output of the operation is stored in a memory device coupled to its communication ground. Then, other hardware components can access the memory device at a subsequent time to retrieve the stored output and process it. The hardware component can also initiate communication with an input device or an output device, and can operate on resources (for example, the collection of information). The various operations of the example methods described herein can be performed at least in part by being temporarily configured (for example, by software) or permanently configured to perform one or more processors of the related operations. Whether it is a temporary configuration or a permanent configuration, such a processor can constitute a processor-implemented component that operates to perform one or more operations or functions described herein. As used herein, "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the method described herein can be implemented at least in part by a processor, wherein specific one or more processors are examples of hardware. For example, at least some of the operation of the method can be performed by one or more processors or the parts implemented by the processor. In addition, one or more processors can also operate to support the execution of the related operations in the "cloud computing" environment or operate as "software as a service" (SaaS). For example, at least some of the operation can be performed by a group of computers (as an example of a machine including a processor), wherein these operations can be accessed via a network (for example, the Internet) and via one or more appropriate interfaces (for example, API). The execution of certain operations in the operation can be distributed between the processors, not only resides in a single machine, but also deployed across multiple machines. In some examples, the parts implemented by the processor or the processor can be located in a single geographical location (for example, in a home environment, an office environment or a server cluster). In other examples, the parts implemented by the processor or the processor can be distributed across multiple geographical locations.
[0079] "Computer-readable storage media" refers to, for example, both machine storage media and transmission media. Thus, these terms encompass both storage devices / media and carrier / modulated data signals. The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and may be used interchangeably in this disclosure.
[0080] A "transient message" is a message that is accessible for a limited duration, for example. A transient message can be text, an image, a video, or the like. The access time for a transient message can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting technique, the message is transient.
[0081] “Machine storage media” refers to, for example, a single or multiple storage devices and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Thus, the term should be taken to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms “machine storage media,” “device storage media,” and “computer storage media” mean the same thing and may be used interchangeably in this disclosure. The terms “machine storage media,” “computer storage media,” and “device storage media” expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are encompassed by the term “signal media.”
[0082] “Non-transitory computer-readable storage medium” refers to a tangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine, for example.
[0083] "Signal medium" refers to any intangible medium that is capable of storing, encoding, or carrying instructions for execution by a machine, and includes digital or analog communication signals or other intangible media that facilitate the communication of software or data. The term "signal medium" should be taken to include any form of modulated data signals, carrier waves, etc. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure.
[0084] A "user device" refers to a device that is, for example, accessed, controlled, or owned by a user and with which the user interacts to perform actions or interact with other users or computer systems.
Claims
1. A method for a computing device, comprising: selecting an application from a plurality of applications stored on the computing device, the application configured to communicate with a contact on a contact list stored on the computing device via a remote server; Sending a request to the remote server to launch the application on the computing device; receiving a request from the remote server to access a contact list stored on the computing device; as well as In response to receiving the request from the remote server, initiating a user interface (UI) process on the computing device, wherein the UI process includes: presenting a UI window on a display of the computing device; Presenting a contact access option in the UI window; receiving a user selection of a contact access option among the contact access options, the contact access option allowing a remote server to access a set of contacts on the contact list; and A response is sent to the remote server allowing access to the contact set.
2. The method according to claim 1, wherein The UI processing also includes: An access level is assigned to each contact in the contact set, the access level specifying contact information that can be accessed by the remote server.
3. The method according to claim 2, wherein: The contact information includes a set of fields including at least one of a contact full name, a contact email address, a contact home address, a contact phone number, and contact personal details.
4. The method according to claim 3, further comprising: The remote server is prohibited from accessing contacts that are not included in the contact set.
5. The method according to claim 2, wherein: The contact set does not include contacts on the contact list.
6. The method according to claim 1, wherein The UI processing also includes: Presenting the contact list in the UI window; and At least one access level selection option is presented for each contact on the contact list.
7. The method according to claim 2, wherein: The UI processing also includes: A usage control rule is assigned to each contact in the contact set, the usage control rule specifying remote server actions that restrict usage of the contact information.
8. The method according to claim 7, wherein: The usage control rule requires the remote server to delete the contact information when the application is terminated, or specifies allowable remote service operations associated with the contact information.
9. The method according to claim 1, wherein The UI processing also includes: Presenting the contact list in the UI window; and At least one usage control rule selection option is presented for each contact in the set of contacts.
10. The method according to claim 1, wherein The communication associated with the application is a chat function on the network.
11. The method according to claim 1, wherein The contact options also include an option to add a new contact to the contact collection.
12. A computing device comprising: at least one processor; as well as a memory storing instructions that, when executed by the at least one processor, configure the apparatus to: selecting an application from a plurality of applications stored on a computing device, the application configured to communicate with a contact on a contact list stored on the computing device via a remote server; Sending a request to the remote server to launch the application on the computing device; receiving a request from the remote server to access a contact list stored on the computing device; as well as In response to receiving the request from the remote server, initiating a user interface (UI) process on the computing device, wherein the UI process includes: presenting a UI window on a display of the computing device; Presenting a contact access option in the UI window; receiving a user selection of a contact access option among the contact access options, the contact access option allowing a remote server to access a set of contacts on the contact list; and A response is sent to the remote server allowing access to the contact set.
13. A machine-readable non-transitory storage medium having instruction data, the instruction data being executable by at least one processor to cause the at least one processor to perform operations in a messaging system for exchanging data over a network by: In response to a request to interact with a communication application: presenting a plurality of contact selection options on the electronic device; accessing a first user selection of one of the plurality of contact selection options; filtering the contact list based on the first user selection to generate a filtered contact list; presenting the filtered contact list; accessing a second user selection of a set of contacts for communication from the filtered contact list; Retrieving contact information of the contact set; enabling temporary storage of the contact information in a memory; and Access to the contact information is enabled during communications.
14. The medium according to claim 13, wherein The contact information is a subset of the information stored in association with the contact list.
15. The medium according to claim 13, wherein The filtered contact list is stored for use during communications.
16. The medium according to claim 15, wherein Presenting the plurality of contact selection options further includes presenting an option control element.
17. The medium according to claim 16, wherein Presenting the filtered contact list further includes presenting a contact selection control element.
18. The medium according to claim 13, wherein The contact set includes all contacts in the contact list.
19. The medium according to claim 13, wherein The contact set is an empty set.
20. The medium according to claim 13, wherein The plurality of contact selection options includes an add option for inviting a new contact.