Storing transient media to session thread
By introducing the timing conditions and saving functions of short messages on social media platforms, users' lack of permissions and duration of media content viewing, realizing the independent management and privacy protection of user data.
Patent Information
- Application Number
- CN202380079987.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-11-21
- Filing Date
- 2023-11-20
- Publication Date
- 2025-07-04
AI Technical Summary
The existing social networking system has shortcomings in user control of the user's permissions and duration of media content viewing, which makes it impossible for users to effectively manage their data.
By implementing the timing conditions and saving functions of short messages on social media platforms, users allow them to save short messages to the session thread after viewing them, ensuring that the amount of time the message is displayed on the user interface is controlled by the user or the system.
It realizes users' independent management of media content, ensures user data control and privacy protection, and provides flexible message storage and viewing options.
Smart Images

Figure CN120266458A_ABST
Abstract
Description
[0001] Priority Claim
[0002] This application claims the benefit of priority of U.S. Patent Application No. 17 / 991,539, filed on November 21, 2022, which is hereby incorporated by reference in its entirety. Background Art
[0003] Social networking systems enable users to share media content with each other while providing them with control over who can view their media content and for how long the media content is shared. Providing users with control over their personal media content enables them to manage their data autonomously.
[0004] Brief Description of the Several Views of the Drawings
[0005] In the drawings, which are not necessarily to scale, like reference numerals may describe similar components in different views. To easily identify the discussion of any particular element or act, one or more of the most significant digits in the reference numeral refers to the figure number in which the element is first introduced. Some non-limiting examples are shown in the figures of the drawings, in which:
[0006] Figure 1 is a graphical representation of a networked environment in which the present disclosure may be deployed, according to some examples.
[0007] Figure 2 is a graphical representation of a messaging system having both client-side functionality and server-side functionality, according to some examples.
[0008] Figure 3 is a graphical representation of a data structure maintained in a database, according to some examples.
[0009] Figure 4 is a graphical representation of a message, according to some examples.
[0010] Figure 5 is a flowchart of an access restriction process, according to some examples.
[0011] Figure 6 illustrates a system in which a head-mounted device is present, according to some examples.
[0012] Figure 7 illustrates a process of saving media content to a communication thread between two users on a social media platform, according to one example.
[0013] Figures 8 to 14 is an example user interface of a social media platform according to an example implementation.
[0014] Figure 15is a pictorial representation of a machine in the form of a computer system within which a set of instructions can be executed to cause the machine to perform any one or more of the methods discussed herein.
[0015] Figure 16 is a block diagram showing a software architecture within which an example can be implemented. Detailed Description
[0016] The following paragraphs describe a system for saving media content in a conversation thread between two users on a social media platform. Users who are "friends" in both directions on the social media platform or users connected on the social media platform can exchange messages such as images, text, videos, etc. In some cases, users can exchange ephemeral messages that are available for viewing within a predefined time period. The ephemeral messages are also associated with a timing condition that specifies the amount of time the message will be displayed on the user interface (once the message is selected for viewing). For example, an ephemeral message generated by User B may be available on the social media platform for 24 hours. User A, who views the ephemeral message during the 24-hour availability period, may be able to view the ephemeral message for any duration ranging from 1 second up to an "infinite" amount of time (e.g., the message will be displayed indefinitely on the viewing user's screen until an interrupt action occurs). The interrupt action can include subsequent user input, expiration of the 24-hour availability of the message, etc. After viewing the ephemeral message, User A has the option to save the ephemeral message to the conversation thread between User A and User B. The saved ephemeral message will be displayed in the conversation thread between the two users. Additional details for saving media content to the conversation thread are provided below.
[0017] Networked Computing Environment
[0018] Figure 1 is a block diagram showing an example interaction system 100 for facilitating interactions over a network (e.g., exchanging text messages, making text, audio, and video calls, or playing games). The interaction system 100 includes a plurality of client systems 102, each of the plurality of client systems 102 hosting a plurality of applications including an interaction client 104 and other applications 106. Each interaction client 104 is communicatively coupled via one or more communication networks including a network 108 (e.g., the Internet) to other instances of the interaction client 104 (e.g., hosted on corresponding other user systems 102), an interaction server 110, and a third-party server 112. The interaction client 104 can also communicate with the locally hosted applications 106 using an application programming interface (API).
[0019] Each client system 102 can include a plurality of user devices, such as mobile devices 114, head-wearable devices 116, and computer client devices 118, which are communicatively connected to exchange data and messages.
[0020] The interactive client 104 interacts with other interactive clients 104 and with the interactive server 110 via the network 108. Data exchanged between the interactive clients 104 (e.g., interaction 120) and between the interactive client 104 and the interactive server 110 includes functions (e.g., commands for activating functions) and payload data (e.g., text, audio, video, or other multimedia data).
[0021] The interactive server 110 provides server - side functions to the interactive client 104 via the network 108. Although some functions of the interactive system 100 are described herein as being performed by the interactive client 104 or by the interactive server 110, whether certain functions are located within the interactive client 104 or within the interactive server 110 can be a design choice. For example, it may be technically preferable to initially deploy a particular technology and function within the interactive server 110, but later migrate the technology and function to the interactive client 104 where the client system 102 has sufficient processing power.
[0022] The interactive server 110 supports various services and operations provided to the interactive client 104. Such operations include sending data to the interactive client 104, receiving data from the interactive client 104, and processing data generated by the interactive client 104. The data can 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 interactive system 100 is activated and controlled by functions available via the user interface (UI) of the interactive client 104.
[0023] Turning now specifically to the interactive server 110, the application programming interface (API) 122 is coupled to and provides a programming interface for the interactive server 124, making the functions of the interactive server 124 accessible to the interactive client 104, other applications 106, and third - party servers 112. The interactive server 124 is communicatively coupled to the database server 126, thereby facilitating access to the database 128, which stores data associated with interactions processed by the interactive server 124. Similarly, the web server 130 is coupled to the interactive server 124 and provides a web - based interface to the interactive server 124. To this end, the web server 130 processes incoming network requests via the Hyper - Text Transfer Protocol (HTTP) and several other related protocols.
[0024] The Application Programming Interface (API) 122 receives and sends interaction data (e.g., commands and message payloads) between the interaction server 124 and the client system 102 (and, for example, the interaction client 104 and other applications 106) and the third-party server 112. Specifically, the Application Programming Interface (API) 122 provides a set of interfaces (e.g., routines and protocols) that the interaction client 104 and other applications 106 can call or query to activate the functions of the interaction server 124. The Application Programming Interface (API) 122 exposes various functions supported by the interaction server 124, including account registration; login functionality; sending interaction data from a specific interaction client 104 to another interaction client 104 via the interaction server 124; transmitting media files (e.g., images or videos) from the interaction client 104 to the interaction server 124; setting a collection of media data (e.g., a story); retrieving a friend list of the users of the client system 102; retrieving messages and content; adding and deleting entities (e.g., friends) for an entity graph (e.g., a social graph); locating friends within the social graph; and opening application events (e.g., related to the interaction client 104).
[0025] The interaction server 124 hosts multiple systems and subsystems, which are described below with reference to Figure 2 for description.
[0026] System Architecture
[0027] Figure 2 is a block diagram showing additional details regarding the interaction system 100 according to some examples. Specifically, the interaction system 100 is shown to include the interaction client 104 and the interaction server 124. The interaction system 100 includes multiple subsystems that are supported by the interaction client 104 on the client side and by the interaction server 124 on the server side. The exemplary subsystems are discussed below.
[0028] The image processing system 202 provides various functions that enable a user to capture and enhance (e.g., annotate or otherwise modify or edit) media content associated with a message.
[0029] The camera device system 204 includes control software (e.g., in a camera device application) that interacts with and controls the hardware camera device of the client system 102 (e.g., directly or via the operating system) to modify and enhance the real-time images captured and displayed via the interaction client 104.
[0030] The enhancement system 206 provides functions related to the generation and publication of enhancements (e.g., media overlays) for images captured in real time by the imaging device of the client system 102 or retrieved from the memory of the client system 102. For example, the enhancement system 206 is operable to select, present, and display media overlays (e.g., image filters or image lenses) for the interactive client 104 for enhancing real-time images received via the imaging device system 204 or stored images retrieved from the memory 602 of the client system 102. These enhancements are selected by the enhancement system 206 based on some inputs and data, such as:
[0031] · The geolocation of the client system 102; and
[0032] · The social network information of the user of the client system 102.
[0033] Enhancements can include audio and visual content as well as visual effects. Examples of audio and visual content include pictures, text, logos, animations, and sound effects. Examples of visual effects include color overlays. The audio and visual content or visual effects can be applied to media content items (e.g., photos or videos) at the client system 102 for transmission in a message, or applied to video content such as a video content stream or feed sent from the interactive client 104. Thus, the image processing system 202 can interact with various subsystems of the communication system 208 and support various subsystems of the communication system 208, such as the messaging system 210 and the video communication system 212.
[0034] Media overlays can include text or image data that can be superimposed on a photo taken by the client system 102 or a video stream produced by the client system 102. In some examples, the media overlay can be a location overlay (e.g., Venice Beach), a name of a live event, or a merchant name overlay (e.g., Beach Café). In additional examples, the image processing system 202 uses the geolocation of the client system 102 to identify a media overlay that includes the name of a merchant at the geolocation of the client system 102. Media overlays can include other markers associated with the merchant. Media overlays can be stored in the database 128 and accessed via the database server 126.
[0035] The image processing system 202 provides a user-based publishing platform that enables users to select a geolocation on a map and upload content associated with the selected geolocation. The user can also specify the circumstances under which a particular media overlay should be provided to other users. The image processing system 202 generates a media overlay that includes the uploaded content and associates the uploaded content with the selected geolocation.
[0036] The Augmented Creation System 214 supports an augmented reality developer platform and includes applications for content creators (e.g., artists and developers) to create and publish enhanced (e.g., augmented reality experiences) interactive clients 104. The Augmented Creation System 214 provides content creators with a library of built-in features and tools, which includes, for example, custom shaders, tracking technologies, and templates.
[0037] In some examples, the Augmented Creation System 214 provides a merchant-based publishing platform that enables merchants to select specific augmentations associated with a geolocation via a bidding process. For example, the Augmented Creation System 214 associates the media overlay of the highest-bidding merchant with the corresponding geolocation for a predefined amount of time.
[0038] The Communication System 208 is responsible for enabling and handling various forms of communication and interaction within the Interactive System 100 and includes a Messaging System 210, an Audio Communication System 216, and a Video Communication System 212. The Messaging System 210 is responsible for enforcing temporary or time-limited access to content by the interactive client 104. The Messaging System 210 includes multiple timers (e.g., in the short-lived timer system 218) that selectively enable access (e.g., for rendering and display) to messages and associated content via the interactive client 104 based on the duration and display parameters associated with a message or a collection of messages (e.g., a story). Additional details regarding the operation of the short-lived timer system 218 are provided below. In some examples, the Communication System 208 and the Messaging System 210 enable a user to save a collection of media generated by another user who is two-way linked to the user on a social media platform (e.g., the Social Network System 222) to a communication thread between the two users. Additional details regarding saving a collection of media are described Figures 7 to 14 elsewhere.
[0039] The Audio Communication System 216 enables and supports audio communication (e.g., real-time audio chat) between multiple interactive clients 104. Similarly, the Video Communication System 212 enables and supports video communication (e.g., real-time video chat) between multiple interactive clients 104.
[0040] The User Management System 220 is operationally responsible for managing user data and profiles and includes a Social Network System 222 that maintains information about the relationships between the users of the Interactive System 100.
[0041] The collection management system 224 is operationally responsible for managing collections or sets of media (e.g., collections of text, image, video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into an "event library" or "event story". Such collections can be made available for a specified period of time (e.g., the duration of the event to which the content pertains). For example, content related to a concert can be made available as a "story" for the duration of that concert. The collection management system 224 can also be responsible for publishing an icon that provides a notification of a particular collection to the user interface of the interactive client 104. The collection management system 224 includes a curation function that enables a collection manager to manage and curate a particular collection of content. For example, the curation interface enables an event organizer to curate a collection of content related to a particular event (e.g., delete inappropriate content or redundant messages). Additionally, the collection management system 224 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, compensation can be paid to a user for including user-generated content in a collection. In such cases, the collection management system 224 operates to automatically pay such users for the use of their content.
[0042] The map system 226 provides various geolocation functions and supports the presentation of map-based media content and messages by the interactive client 104. For example, the map system 226 enables the display of user icons or avatars (e.g., stored in the profile data 302) on a map to indicate the current or past locations of a user's "friends" within the context of the map, as well as media content (e.g., collections of messages including photos and videos) generated by those friends. For example, messages posted by a user from a specific geolocation to the interactive system 100 can be displayed to the "friends" of that particular user within the context of that specific location on the map in the map interface of the interactive client 104. A user can also share his or her location and status information with other users of the interactive system 100 via the interactive client 104 (e.g., using an appropriate status avatar), where that location and status information is similarly displayed within the context of the map interface of the interactive client 104 to the selected users.
[0043] The game system 228 provides various game functions within the context of the interactive client 104. The interactive client 104 provides a game interface that presents a list of available games that can be launched by a user within the context of the interactive client 104 and played with other users of the interactive system 100. The interactive system 100 also enables a particular user to invite such other users to participate in playing a particular game by sending an invitation from the interactive client 104 to the other users. The interactive client 104 also supports voice, video, and text messaging (e.g., chat) within the context of playing a game, provides a leaderboard for the game, and also supports providing in-game rewards (e.g., game currency and items).
[0044] The external resource system 230 provides an interface for the interactive client 104 to communicate with a remote server (e.g., the third-party server 112) to launch or access external resources (i.e., applications or applets). Each third-party server 112 hosts an application or a scaled-down version of an application (e.g., a game application, a utility application, a payment application, or a ride-sharing application) based on a markup language (e.g., HTML5). The interactive client 104 can launch a web-based resource (e.g., an application) by accessing an HTML5 file from a third-party server 112 associated with the web-based resource. The software development kit (SDK) provided by the interactive server 124 is used to program the applications hosted by the third-party server 112 in JavaScript. The SDK includes application programming interfaces (APIs) having functions that can be called or activated by the web-based applications. The interactive server 124 hosts a JavaScript library that provides access to the given external resources of the specific user data of the interactive client 104. HTML5 is an example of a technology for programming games, but applications and resources programmed based on other technologies can be used.
[0045] To integrate the functions of the SDK into the web-based resources, the SDK is downloaded from the interactive server 124 by the third-party server 112 or otherwise received by the third-party server 112. Once downloaded or received, the SDK is included as part of the application code of the web-based external resource. The code of the web-based resource can then call or activate certain functions of the SDK to integrate the features of the interactive client 104 into the web-based resource.
[0046] The SDK stored on the interaction server 110 effectively provides a bridge between external resources (e.g., application 106 or applet) and the interaction client 104. This gives users a seamless experience of communicating with other users on the interaction client 104 while still retaining the look and feel of the interaction client 104. To bridge the communication between the external resources and the interaction client 104, the SDK facilitates the communication between the third-party server 112 and the interaction client 104. The WebView JavaScript Bridge running on the client system 102 establishes two one-way communication channels between the external resources and the interaction client 104. Messages are sent asynchronously between the external resources and the interaction client 104 via these communication channels. Each SDK function activation is sent as a message and a callback. Each SDK function is implemented by constructing a unique callback identifier and sending a message with that callback identifier.
[0047] By using the SDK, not all information from the interaction client 104 is shared with the third-party server 112. The SDK restricts which information is shared based on the needs of the external resources. Each third-party server 112 provides an HTML5 file corresponding to the web-based external resource to the interaction server 124. The interaction server 124 can add a visual representation (e.g., box design or other graphics) of the web-based external resource in the interaction client 104. Once the user selects the visual representation or indicates via the GUI of the interaction client 104 to access the features of the web-based external resource, the interaction client 104 obtains the HTML5 file and instantiates the resources for accessing the features of the web-based external resource.
[0048] The interactive client 104 presents a graphical user interface for an external resource (e.g., a landing page or a splash screen). During, before, or after presenting the landing page or splash screen, the interactive client 104 determines whether the launched external resource has previously been authorized to access the user data of the interactive client 104. In response to determining that the launched external resource has previously been authorized to access the user data of the interactive client 104, the interactive client 104 presents another graphical user interface of the external resource that includes the functions and features of the external resource. In response to determining that the launched external resource has not previously been authorized to access the user data of the interactive client 104, after a display threshold period (e.g., 3 seconds) of the landing page or splash screen of the external resource, the interactive client 104 slides up a menu (e.g., animates the menu to emerge from the bottom of the screen to the middle or other part of the screen) for authorizing the external resource to access the user data. The menu identifies the types of user data that the external resource will be authorized to use. In response to receiving a user selection of the accept option, the interactive client 104 adds the external resource to the list of authorized external resources and enables the external resource to access the user data from the interactive client 104. The external resource is authorized by the interactive client 104 to access the user data under the OAuth 2 framework.
[0049] The interactive client 104 controls the types of user data shared with the external resource based on the type of the authorized external resource. For example, access to a first type of user data (e.g., a two-dimensional avatar of a user with or without different avatar characteristics) is provided to an external resource that includes a full-scale application (e.g., application 106). As another example, access to a second type of user data (e.g., payment information, a two-dimensional avatar of the user, a three-dimensional avatar of the user, and avatars with various avatar characteristics) is provided to an external resource that includes a small-scale version of the application (e.g., a web-based version of the application). Avatar characteristics include different ways of customizing the appearance and feel of the avatar (e.g., different poses, facial features, clothing, etc.).
[0050] The advertising system 232 operates to enable third parties to purchase advertisements to be presented to end users via the interactive client 104 and also handles the delivery and presentation of these advertisements.
[0051] Data Architecture
[0052] Figure 3 is a schematic diagram showing a data structure 300 that can be stored in the database 304 of the interactive server 110 according to some examples. Although the contents of the database 304 are shown as including multiple tables, it should be understood that the data can be stored in other types of data structures (e.g., object-oriented databases).
[0053] The database 304 includes message data stored within a message table 306. For any particular message, the message data includes at least message sender data, message recipient (or receiver) data, and a payload. Details regarding additional information that may be included within a message and within the message data stored in the message table 306 are described below with reference to Figure 3 and other details regarding information that may be included within a message and within the message data stored in the message table 306.
[0054] The entity table 308 stores entity data and is (e.g., referentially) linked to an entity graph 310 and profile data 302. Entities for which records are maintained within the entity table 308 may include individuals, corporate entities, organizations, objects, locations, events, etc. Any entity for which the interaction server 110 stores data regarding it may be an identified entity, regardless of the entity type. Each entity is set with a unique identifier and an entity type identifier (not shown).
[0055] The entity graph 310 stores information regarding relationships and associations between entities. By way of example only, such relationships may be social, professional (e.g., working in a common company or organization), interest-based, or activity-based. Some relationships between entities may be one-way, such as a personal user's subscription to digital content of a business or publishing user (e.g., a newspaper or other digital media channel or brand). Other relationships may be two-way, such as the "friend" relationship between various users of the interaction system 100.
[0056] Certain permissions and relationships may be attached to each relationship and may also be attached to each direction of the relationship. For example, a two-way relationship (e.g., the friend relationship between personal users) may include authorization for the publication of digital content items between the personal users, but certain restrictions or filters may be imposed on the publication of such digital content items (e.g., based on content characteristics, location data, or time-of-day data). Similarly, a subscription relationship between a personal user and a business user may impose different degrees of restrictions on the publication of digital content from the business user to the personal user and may significantly restrict or prevent the publication of digital content from the personal user to the business user. As an example of an entity, a particular user may record certain restrictions (e.g., through privacy settings) in the record for that entity within the entity table 308. Such privacy settings may apply to all types of relationships within the context of the interaction system 100 or may be selectively applied to certain types of relationships.
[0057] Profile data 302 stores multiple types of profile data about a particular entity. Based on privacy settings specified by the particular entity, the profile data 302 can be selectively used and presented to other users of the interaction system 100. In the case where the entity is an individual, the profile data 302 includes, for example, a username, a telephone number, an address, settings (e.g., notification and privacy settings), and an avatar representation (or a set of such avatar representations) selected by the user. Then, a particular user can selectively include one or more of these avatar representations within the content of a message transmitted via the interaction system 100 and on a map interface displayed by the interaction client 104 to other users. The set of avatar representations can include "status avatars" that present a graphical representation of a status or activity that the user can choose to transmit at a particular time.
[0058] In the case where the entity is a group, in addition to the group name, members, and various settings (e.g., notifications) for the relevant group, the profile data 302 for the group can similarly include one or more avatar representations associated with the group.
[0059] The database 304 also stores enhancement data, such as overlays or filters, in an enhancement table 312. The enhancement data is associated with videos (the data of which is stored in a video table 314) and images (the data of which is stored in an image table 316) and is applied to the videos and images.
[0060] In some examples, a filter is an overlay that is displayed as being superimposed on an image or video during presentation to a recipient user. Filters can be of various types, including a filter selected by a user from a set of filters presented to the sending user by the interaction client 104 when the sending user is composing a message. Other types of filters include geolocation filters (also known as geo-filters), which can be presented to the sending user based on geolocation. For example, based on geolocation information determined by a global positioning system (GPS) unit of the client system 102, the interaction client 104 can present geolocation filters specific to nearby or special locations within the user interface.
[0061] Another type of filter is a data filter, which can be selectively presented to the sending user by the interaction client 104 based on other input or information collected by the client system 102 during the message creation process. Examples of data filters include the current temperature at a particular location, the current speed at which the sending user is traveling, the battery life of the client system 102, or the current time.
[0062] Other enhancement data that can be stored within the image table 316 includes augmented reality content items (e.g., corresponding to app "lenses" or augmented reality experiences). Augmented reality content items can be real-time special effects and sounds that can be added to an image or video.
[0063] The story table 318 stores data about a collection of messages and associated image, video, or audio data, where the messages and associated image, video, or audio data are compiled into a collection (e.g., a story or gallery). The creation of a particular collection can be initiated by a particular user (e.g., each user for whom a record is maintained in the entity table 308). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcast by that user. To this end, the user interface of the interaction client 104 can include user-selectable icons to enable the sending user to add specific content to his or her personal story.
[0064] The collection can also constitute a "Live Story", which is a collection of content from multiple users created manually, automatically, or using a combination of manual and automatic techniques. For example, a "Live Story" can constitute a curated stream of content submitted by users from different locations and events. Options to contribute content to a particular Live Story can be presented to users whose client devices have location services enabled and are at a common location event at a particular time, for example, via the user interface of the interaction client 104. The interaction client 104 can identify a Live Story to a user based on the user's location. The end result is a "Live Story" told from a group perspective.
[0065] Another type of content collection is called a "Location Story", which enables users whose client systems 102 are located within a particular geographical location (e.g., on a college or university campus) to contribute to a particular collection. In some examples, contributing to a Location Story may employ secondary authentication to verify that the end user belongs to a particular organization or other entity (e.g., is a student on a university campus).
[0066] As mentioned above, the video table 314 stores video data, which in some examples is associated with messages whose records are maintained in the message table 306. Similarly, the image table 316 stores image data associated with messages whose message data is stored in the entity table 308. The entity table 308 can associate various enhancements from the enhancement table 312 with the various images and videos stored in the image table 316 and the video table 314.
[0067] The database 304 also includes a saved media content table 320, which includes saved media content among users on a social media platform (e.g., the social networking system 222). The saved media content can be saved using the process described in conjunction with Figure 7 described process.
[0068] Data Communication Architecture
[0069] Figure 4FIG. is a schematic diagram showing the structure of a message 400 according to some examples, the message 400 being generated by an interactive client 104 for transmission via an interactive server 124 to another interactive client 104. The content of a particular message 400 is used to populate a message table 306 stored in a database 304 accessible by the interactive server 124. Similarly, the content of the message 400 is stored in memory as "in-transit" or "in-flight" data of the client system 102 or the interactive server 124. The message 400 is shown as including the following exemplary components:
[0070] · Message identifier 402: A unique identifier that identifies the message 400.
[0071] · Message text payload 404: Text to be generated by a user via a user interface of the client system 102 and included in the message 400.
[0072] · Message image payload 406: Image data captured by a camera device component of the client system 102 or retrieved from a memory component of the client system 102 and included in the message 400. The image data for the message 400 being sent or received may be stored in an image table 316.
[0073] · Message video payload 408: Video data captured by a camera device component or retrieved from a memory component of the client system 102 and included in the message 400. The video data for the message 400 being sent or received may be stored in an image table 316.
[0074] · Message audio payload 410: Audio data captured by a microphone or retrieved from a memory component of the client system 102 and included in the message 400.
[0075] · Message enhancement data 412: Enhancement data (e.g., filters, stickers, or other annotations or enhancements) representing enhancements to be applied to the message image payload 406, the message video payload 408, or the message audio payload 410 of the message 400. The enhancement data for the message 400 being sent or received may be stored in an enhancement table 312.
[0076] · Message duration parameter 414: A parameter value indicating, in seconds, the amount of time for which the content of the message (e.g., the message image payload 406, the message video payload 408, the message audio payload 410) is to be presented to or made accessible to a user via the interactive client 104.
[0077] · Message Geolocation Parameter 416: Geolocation data (e.g., latitude coordinates and longitude coordinates) associated with the content payload of a message. Multiple Message Geolocation Parameter 416 values can be included in the payload, with each of these parameter values associated with a content item included in the content (e.g., a specific image within Message Image Payload 406 or a specific video within Message Video Payload 408).
[0078] · Message Story Identifier 418: An identifier value that identifies one or more content collections (e.g., "stories" identified in Story Table 318) associated with a specific content item within Message Image Payload 406 of Message 400. For example, identifier values can be used to associate each of multiple images within Message Image Payload 406 with multiple content collections.
[0079] · Message Tag 420: Each Message 400 can be tagged with multiple tags, with each of the multiple tags indicating a topic of the content included in the message payload. For example, in the case where a specific image included in Message Image Payload 406 depicts an animal (e.g., a lion), a tag value can be included within Message Tag 420 indicating the relevant animal. Tag values can be generated manually based on user input or can be generated automatically using, for example, image recognition.
[0080] · Message Sender Identifier 422: An identifier (e.g., a messaging system identifier, an email address, or a device identifier) that indicates the user of Client System 102 on which Message 400 was generated and from which Message 400 was sent.
[0081] · Message Recipient Identifier 424: An identifier (e.g., a messaging system identifier, an email address, or a device identifier) that indicates the user of Client System 102 to which Message 400 is addressed.
[0082] The content (e.g., values) of the various components of Message 400 can be pointers to locations in a table where content data values are stored. For example, the image value in Message Image Payload 406 can be a pointer to a location within Image Table 316 (or the address of a location within Image Table 316). Similarly, the value within Message Video Payload 408 can point to data stored within Image Table 316, the value stored within Message Enhancement Data 412 can point to data stored within Enhancement Table 312, the value stored within Message Story Identifier 418 can point to data stored within Story Table 318, and the values stored within Message Sender Identifier 422 and Message Recipient Identifier 424 can point to user records stored within Entity Table 308.
[0083] Time-Based Access Architecture
[0084] Figure 5 FIG. Figure 5 is a schematic illustration according to which access to content (e.g., a transient message 502 and a multimedia payload of associated data) or a collection of content (e.g., a transient message group 504) may be time-limited (e.g., transient).
[0085] The transient message 502 is shown as being associated with a message duration parameter 506, the value of which determines the amount of time that the transient message 502 will be displayed to the receiving user of the transient message 502 by the interaction client 104. In some examples, depending on the amount of time specified by the sending user using the message duration parameter 506, the receiving user may view the transient message 502 for up to 10 seconds.
[0086] The message duration parameter 506 and the message recipient identifier 508 are shown as being inputs to a message timer 510 that is responsible for determining the amount of time that the transient message 502 is shown to a particular receiving user identified by the message recipient identifier 508. In particular, the transient message 502 is shown to the associated receiving user for a period of time determined by the value of the message duration parameter 506. The message timer 510 is shown as providing an output to a more generalized messaging system 512 that is responsible for the overall timing of displaying content (e.g., the transient message 502) to the receiving user.
[0087] In Figure 5 the transient message 502 is shown as being included within a transient message group 504 (e.g., a collection of messages in a personal story or an event story). The transient message group 504 has an associated group duration parameter 514, the value of which determines the duration for which the transient message group 504 is presented and accessible to the users of the interaction system 100. For example, the group duration parameter 514 may be the duration of a concert, where the transient message group 504 is a collection of content related to the concert. Alternatively, a user (owning user or curator user) may specify the value of the group duration parameter 514 when performing the setup and creation of the transient message group 504.
[0088] Additionally, each ephemeral message 502 within the ephemeral message group 504 has an associated group participation parameter 516, the value of which determines the duration for which the ephemeral message 502 will be accessible within the context of the ephemeral message group 504. Thus, a particular ephemeral message group 504 can "expire" and become inaccessible within the context of the ephemeral message group 504 before the ephemeral message group 504 itself expires according to the group duration parameter 514. The group duration parameter 514, the group participation parameter 516, and the message recipient identifier 508 each provide an input to a group timer 518 that, operationally, first determines whether a particular ephemeral message 502 of the ephemeral message group 504 will be displayed to a particular receiving user and, if so, for how long. Note that, due to the message recipient identifier 508, the ephemeral message group 504 also knows the identity of the particular receiving user.
[0089] Accordingly, the group timer 518 operationally controls the total lifespan of the associated ephemeral message group 504 and the individual ephemeral messages 502 included within the ephemeral message group 504. In some examples, each ephemeral message 502 within the ephemeral message group 504 remains viewable and accessible for a period of time specified by the group duration parameter 514. In additional examples, within the context of the ephemeral message group 504, a particular ephemeral message 502 can expire based on the group participation parameter 516. Note that even within the context of the ephemeral message group 504, the message duration parameter 506 can still determine the duration for which a particular ephemeral message 502 is displayed to the receiving user. Thus, the message duration parameter 506 determines the duration for which a particular ephemeral message 502 is displayed to the receiving user regardless of whether the receiving user views the ephemeral message 502 within or outside the context of the ephemeral message group 504.
[0090] Furthermore, the messaging system 512 can operationally remove a particular ephemeral message 502 from the ephemeral message group 504 based on determining that the particular ephemeral message 502 has exceeded the associated group participation parameter 516. For example, when the sending user has established a group participation parameter 516 of 24 hours from posting, the messaging system 512 will remove the associated ephemeral message 502 from the ephemeral message group 504 after the specified 24 hours. The messaging system 512 also operates to remove the ephemeral message group 504 when the group participation parameter 516 has expired for each ephemeral message 502 within the ephemeral message group 504 or when the ephemeral message group 504 itself has expired according to the group duration parameter 514.
[0091] In certain usage scenarios, the creator of a particular ephemeral message group 504 can specify an indefinite group duration parameter 514. In such a case, the expiration of the group participation parameter 516 of the last remaining ephemeral message 502 within the ephemeral message group 504 will determine when the ephemeral message group 504 itself expires. In such a case, adding a new ephemeral message 502 with a new group participation parameter 516 to the ephemeral message group 504 effectively extends the lifespan of the ephemeral message group 504 to be equal to the value of the group participation parameter 516.
[0092] In response to the messaging system 512 determining that the ephemeral message group 504 has expired (e.g., is no longer accessible), the messaging system 512 communicates with the interaction system 100 (and, for example, in particular, the interaction client 104) such that a marker (e.g., an icon) associated with the relevant ephemeral message group 504 is no longer displayed within the user interface of the interaction client 104. Similarly, when the messaging system 512 determines that the message duration parameter 506 of a particular ephemeral message 502 has expired, the messaging system 512 causes the interaction client 104 to no longer display a marker (e.g., an icon or text identifier) associated with the ephemeral message 502.
[0093] System with a head-mounted device
[0094] Figure 6 A system 600 including a head-mounted device 116 with a selector input device is shown according to some examples. Figure 6 is a high-level functional block diagram of an example head-mounted device 116 that is communicatively coupled via various networks 108 to a mobile device 114 and various server systems 604 (e.g., an interaction server 110).
[0095] The head-mounted device 116 includes one or more imaging devices, and each of the one or more imaging devices can be, for example, a visible light imaging device 606, an infrared emitter 608, and an infrared imaging device 610.
[0096] The mobile device 114 is connected to the head-mounted device 116 using both a low-power wireless connection 612 and a high-speed wireless connection 614. The mobile device 114 is also connected to the server system 604 and the network 616.
[0097] The head-wearable device 116 also includes two image displays of the optical component 618. The two optical components 618 include an optical component associated with the left lateral side of the head-wearable device 116 and an optical component associated with the right lateral side of the head-wearable device 116. The head-wearable device 116 also includes an image display driver 620, an image processor 622, a low-power circuitry 624, and a high-speed circuitry 626. The optical component 618 is used to present images and videos to the user of the head-wearable device 116, including images that may include a graphical user interface.
[0098] The image display driver 620 commands and controls the optical component 618. The image display driver 620 may deliver image data directly to the optical component 618 for presentation or may convert the image data into a signal or data format suitable for delivery to an image display device. For example, the image data may be video data formatted according to a compression format such as H.264 (MPEG-4 Part 10), HEVC, Theora, Dirac, RealVideo RV40, VP8, VP9, etc., while the still image data may be formatted according to a compression format such as Portable Network Graphics (PNG), Joint Photographic Experts Group (JPEG), Tagged Image File Format (TIFF), or Exchangeable Image File Format (EXIF), etc.
[0099] The head-wearable device 116 includes a frame and a stem (or temple) extending from the lateral side of the frame. The head-wearable device 116 also includes a user input device 628 (e.g., a touch sensor or a push button), including an input surface on the head-wearable device 116. The user input device 628 (e.g., a touch sensor or a push button) is used to receive input selections from the user for manipulating the graphical user interface of the presented image.
[0100] Figure 6 The components of the head-wearable device 116 shown in are located on one or more circuit boards (e.g., PCB or flexible PCB) in the border or temple. Alternatively or additionally, the depicted components may be located in the block material, frame, hinge, or nose bridge of the head-wearable device 116. The left visible light imaging device and the right visible light imaging device 606 may include digital imaging device elements, e.g., complementary metal oxide semiconductor (CMOS) image sensors, charge-coupled devices, imaging device lenses, or any other corresponding visible light or light-capturing elements that may be used to capture data, including images of scenes with unknown objects.
[0101] The head-wearable device 116 includes a memory 602 that stores instructions for performing a subset or all of the functions described herein. The memory 602 may also include a storage device.
[0102] As shown Figure 6 In the example shown, the high-speed circuit system 626 includes a high-speed processor 630, a memory 602, and a high-speed wireless circuit system 632. In some examples, the image display driver 620 is coupled to the high-speed circuit system 626 and is operated by the high-speed processor 630 to drive the left and right image displays of the optical assembly 618. The high-speed processor 630 can be any processor capable of managing the high-speed communication and operation of any general computing system required for the head-worn device 116. The high-speed processor 630 includes the processing resources required to manage high-speed data transmission over the high-speed wireless connection 614 to a wireless local area network (WLAN) using the high-speed wireless circuit system 632. In certain examples, the high-speed processor 630 executes the operating system of the head-worn device 116 (e.g., the LINUX operating system) or other such operating systems, and the operating system is stored in the memory 602 for execution. In addition to any other duties, the high-speed processor 630 that executes the software architecture of the head-worn device 116 manages data transmission with the high-speed wireless circuit system 632. In certain examples, the high-speed wireless circuit system 632 is configured to implement the Institute of Electrical and Electronics Engineers (IEEE) 802.11 communication standard, which is also referred to herein as WiFi. In some examples, the high-speed wireless circuit system 632 can implement other high-speed communication standards.
[0103] The low-power wireless circuit system 634 and the high-speed wireless circuit system 632 of the head-worn device 116 can include short-range transceivers (Bluetooth TM ) and wireless wide area network transceivers, wireless local area network transceivers, or wide area network transceivers (e.g., cellular or WiFi). The mobile device 114, including transceivers that communicate via the low-power wireless connection 612 and the high-speed wireless connection 614, can be implemented using the details of the architecture of the head-worn device 116, as can the other elements of the network 616.
[0104] The memory 602 includes any storage device capable of storing various data and applications, including camera device data generated by the left visible light camera device and the right visible light camera device 606, the infrared camera device 610, and the image processor 622, as well as images generated to be displayed on the image display in the optical component 618 by the image display driver 620, etc. Although the memory 602 is shown as integrated with the high-speed circuitry 626, in some examples, the memory 602 can be a separate stand-alone component of the head-wearable device 116. In certain such examples, electrical wiring can provide a connection from the image processor 622 or the low-power processor 636 to the memory 602 through a chip including the high-speed processor 630. In some examples, the high-speed processor 630 can manage the addressing of the memory 602 such that the low-power processor 636 will initiate the high-speed processor 630 whenever a read or write operation involving the memory 602 is required.
[0105] As Figure 6 shown, the low-power processor 636 or the high-speed processor 630 of the head-wearable device 116 can be coupled to the camera devices (the visible light camera device 606, the infrared emitter 608, or the infrared camera device 610), the image display driver 620, the user input device 628 (e.g., a touch sensor or a push button), and the memory 602.
[0106] The head-wearable device 116 is connected to a host computer. For example, the head-wearable device 116 is paired with the mobile device 114 via the high-speed wireless connection 614 or connected to the server system 604 via the network 616. The server system 604 can be one or more computing devices that are part of a service or network computing system, e.g., including a processor, a memory, and a network communication interface to communicate with the mobile device 114 and the head-wearable device 116 via the network 616.
[0107] The mobile device 114 includes a processor and a network communication interface coupled to the processor. The network communication interface allows communication via the network 616, the low-power wireless connection 612, or the high-speed wireless connection 614. The mobile device 114 can also store at least part of the instructions for generating binaural audio content in the memory of the mobile device 114 to implement the functions described herein.
[0108] The output components of the head-wearable device 116 include visual components such as a display (e.g., a liquid crystal display (LCD), a plasma display panel (PDP), a light-emitting diode (LED) display, a projector, or a waveguide). The image display of the optical component is driven by an image display driver 620. The output components of the head-wearable device 116 also include acoustic components (e.g., speakers), haptic components (e.g., vibration motors), other signal generators, etc. The input components (e.g., the user input device 628) of the head-wearable device 116, the mobile device 114, and the server system 604 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), haptic input components (e.g., physical buttons, a touch screen that provides the position and force of a touch or touch gesture, or other haptic input components), audio input components (e.g., a microphone), etc.
[0109] The head-wearable device 116 may also include additional peripheral device elements. Such peripheral device elements may include biometric sensors, additional sensors, or display elements integrated with the head-wearable device 116. For example, the peripheral device elements may include any I / O components, and the I / O components include output components, motion components, positioning components, or any other such elements described herein.
[0110] For example, biometric components include components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biological signals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retina recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), etc. Motion components include acceleration sensor components (e.g., accelerometers), gravity sensor components, rotational sensor components (e.g., gyroscopes), etc. Positioning components include position sensor components for generating position coordinates (e.g., a global positioning system (GPS) receiver component), Wi-Fi or Bluetooth TM transceivers for generating positioning system coordinates, altitude sensor components (e.g., an altimeter or barometer that detects air pressure, and altitude can be obtained based on the air pressure), orientation sensor components (e.g., magnetometers), etc. Such positioning system coordinates may also be received from the mobile device 114 via the low-power radio circuitry 634 or the high-speed radio circuitry 632 through the low-power wireless connection 612 and the high-speed wireless connection 614.
[0111] Although the described flowcharts may show operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations can be rearranged. The processing is terminated when its operations are complete. The processing may correspond to a method, procedure, algorithm, etc. The operations of a method can be performed in whole or in part, can be combined with some or all of the operations in other methods, and can be performed by any number of different systems (such as the systems described herein) or any part thereof (such as a processor included in any one of the systems).
[0112] Save transient media content
[0113] Figure 7 Process 700 shows a communication thread between two users for saving media content to a social media platform according to one example. In one example, the operations in process 700 can be performed by a processor in communication system 208, a processor in messaging system 210, a processor in client system 102, a processor in interaction server system 110, or any combination thereof. The media content items described in the following paragraphs can be a collection of media as described Figure 2 in.
[0114] In operation 702, the processor receives a media content item on a first user device associated with a first user from a second user device associated with a second user. The first user and the second user are two-way linked on a social media platform. The media content item can be text, video, an image, or any combination thereof generated and posted on the social media platform by the second user. The media content item (e.g., a story) can be posted on the social media platform and can be viewed by all the connections of the second user.
[0115] In operation 704, the processor causes the received media content item to be displayed on the graphical user interface of the first user device. Before operation 704, the processor may first cause an icon representing the media content item to be displayed within the user interface of the social media platform. The processor receives a selection of the icon from the first user on the first user device, and in response to receiving the selection of the icon, causes the media content item to be displayed on the first user device. The received media content item is received outside of the session thread between the two users. For example, the received media content item is posted on the social media platform.
[0116] In operation 706, while causing the received media content item to be displayed, the processor receives a selection from the graphical user interface of the first user device. For example, the first user may provide a tactile input in the graphical user interface of the first user device and select a selectable user interface element while viewing the media content item by selecting the selectable user interface element superimposed on the media content item. In combination with Figures 8 to 9Describe additional details of operation 706.
[0117] At operation 708, in response to receiving the selection, the processor saves the media content item to the conversation thread between the first user and the second user. The media content item is the ephemeral message described above. Based on the attributes of the media content item (e.g., the timing condition associated with the media content item), the media content item can be saved to the conversation thread. For example, if an ephemeral message is saved from a social media platform to a conversation thread within the social media platform, the ephemeral message can be viewed indefinitely within the conversation thread even after the ephemeral message has expired and is no longer viewable (or until the user removes the media content item from the conversation thread or “unsaves” the media content item). If the first user and the second user have a pre-existing conversation thread, the media content item is saved to the pre-existing conversation thread. If the first user and the second user do not have a pre-existing conversation thread, the process generates a conversation thread between the two users and saves the media content item to the newly generated conversation thread.
[0118] In operation 710, the processor causes an indication that the media content item has been saved within the conversation thread to be displayed. The indication can be text, a symbol, a depiction, or any combination thereof displayed on the user interface. Combine Figure 10 Describe additional details of the indication.
[0119] In some examples, after the media content item has been saved to the conversation thread, the first user (the user who saved the media content item) or the second user (the user who generated the media content item) can remove the media content item from the conversation thread or “unsave” the media content item. For example, the first user or the second user can select the saved media content item within the conversation thread and remove the selected saved media content item from the conversation thread. The removed or unsaved media content item will be removed from the conversation thread that is reflected (e.g., displayed) on both the first user device and the second user device. The conversation thread data can be stored on one or more interaction servers 124, and removing the media content item from the conversation thread will delete the stored media content item data from one or more interaction servers 124.
[0120] In some examples, the processor causes an indication that the media content item has been saved by the first user to be displayed on the second user device. For example, the second user can view a menu associated with the media content item. The menu displays a list of users who have viewed and / or saved the media content item. The indication that the media content item has been saved can be a symbol displayed adjacent to an image (e.g., an avatar) associated with the first user. The menu can also include a second indication (e.g., a second symbol) that the media content item has been shared by the user.
[0121] In some examples, the processor stores media content items in the friend profile of a messaging application associated with a social media platform. The messaging application can be part of the interactive client 104. The friend profile is associated with a first user and a second user. In conjunction with Figure 12 Describe other details of the friend profile.
[0122] In some examples, the media content item is associated with a timing condition. In order to be saved to the session thread, the media content item must be associated with an "infinite" timing condition. If the media content item is not associated with an "infinite" timing condition, the media content item cannot be saved to the session thread by the first user or the second user. In conjunction with Figure 14 Describe the details of the timing condition.
[0123] Figures 8 to 14 is an example user interface of a social media platform. The user interface can be generated by a processor in the collection management system 224, a processor in the client system 102, a processor in the interactive server system 110, or any combination thereof.
[0124] Figure 8 is an example transient message that the first user is viewing on the first user device 802. The transient message shown on the graphical user interface of the first user device 802 is sent to the first user by the second user 806. The first user selects the user interface element 804 by providing a haptic input on the graphical user interface of the first user device 802.
[0125] After pressing and holding the user interface element 804, the processor causes a menu window 902 to be displayed, as Figure 9 shown. The menu window 902 is superimposed on the transient message and is shown to include a "Save in Chat" button 904. The first user can select the "Save in Chat" button 904 to save the transient message to the session thread between the first user and the second user 806.
[0126] Figure 10 is an example user interface displayed on the graphical user interface of the second user device 1012. The user interface includes an overview menu 1010 of all users who are two-way social media connections with the second user of the second user device 1012 and have viewed the transient message 1014 of the second user. As Figure 10 shown, the user 1006 is represented using a user avatar or profile picture and includes an indication 1002 that the user 1006 has saved the transient message 1014 of the second user. In a similar example, Figure 10Shown to include user link 1008, user link 1008 is associated with indication 1004 that they have saved ephemeral message 1014 of a second user and indication 1016 that they have shared ephemeral message 1014 of the second user.
[0127] Figure 11 Is an example user interface of a conversation thread between a second user and a first user on a device 802 of the first user. After the first user saves ephemeral message 1014 of the second user, the saved ephemeral message 1014 is displayed within conversation thread 1102 between the first user and the second user. The saved ephemeral message 1014 is displayed within conversation thread 1102 together with text indication 1104.
[0128] Figure 12 Is an example interface of a friend profile 1202 between two two-way links of a social media platform. When the first user saves an ephemeral message from the second user (e.g., ephemeral message 1014), the saved ephemeral message is saved in section 1204 of friend profile 1202.
[0129] Figure 13 Is an example interface of section 1204 of friend profile 1202. The first user can select "Do not save" or delete an ephemeral message previously saved by the first user from the conversation thread between the first user and the second user by selecting a user interface element from within menu 1302.
[0130] Figure 14 Is an illustration of example user interfaces 1402 and 1404 of a social media platform. In some examples, when a user interacts with an ephemeral message generated by another user on the social media platform (e.g., when the user views and provides haptic input in a graphical user interface displaying the selected ephemeral message), user interface 1402 is shown to the user. User interface 1402 provides instructions to the user on how to save the ephemeral message to the conversation thread between the two users. When the user creates an ephemeral message, user interface 1404 is shown to the user. For example, although the ephemeral message is available for 24 hours, the ephemeral message can also be associated with a viewing time limit. The viewing time limit can be any time period ranging from 1 second to infinity seconds. User interface 1404 indicates to a user of the social media platform that only ephemeral messages associated with a viewing time of infinity seconds can be saved to the conversation thread between the two users.
[0131] Machine architecture
[0132] Figure 15is an illustrative representation of a machine 1500 within which instructions 1502 (e.g., software, programs, applications, applets, apps, or other executable code) can be executed to cause the machine 1500 to perform any one or more of the methods discussed herein. For example, the instructions 1502 can cause the machine 1500 to perform any one or more of the methods described herein. The instructions 1502 transform the general, unprogrammed machine 1500 into a particular machine 1500 programmed to perform the described and illustrated functions in the described manner. The machine 1500 can operate as a stand-alone device or can be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1500 can operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1500 can include, but is not limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular phone, a smartphone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web device, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 1502 sequentially or otherwise to perform the actions specified to be taken by the machine 1500. Further, while only a single machine 1500 is shown, the term "machine" shall also be taken to include a collection of machines that individually or jointly execute the instructions 1502 to perform any one or more of the methods discussed herein. For example, the machine 1500 can include any one of the client systems 102 or a plurality of server devices forming part of the interaction server 110. In some examples, the machine 1500 can also include both a client system and a server system, where certain operations of a particular method or algorithm are executed on the server side and certain operations of the particular method or algorithm are executed on the client side.
[0133] Machine 1500 may include a processor 1504, a memory 1506, and input / output (I / O) components 1508 that may be configured to communicate with each other via a bus 1510. In an example, the processor 1504 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor 1512 and a processor 1514 that execute instructions 1502. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") that may execute instructions simultaneously. Although Figure 15 multiple processors 1504 are shown, machine 1500 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
[0134] Memory 1506 includes main memory 1516, static memory 1518, and machine-readable medium 1520, all of which may be accessed by processor 1504 via bus 1510. Main memory 1506, static memory 1518, and machine-readable medium 1520 store instructions 1502 that implement any one or more of the methods or functions described herein. The instructions 1502 may also reside, completely or partially, within storage unit 1522 within main memory 1516, within static memory 1518, within machine-readable medium 1520, within at least one of the processors 1504 (e.g., within a cache memory of the processor), or any suitable combination thereof during execution by machine 1500.
[0135] Input / output I / O components 1508 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurement results, etc. The specific input / output I / O components 1508 included in a particular machine will depend on the type of the machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine will unlikely include such a touch input device. It should be appreciated that the input / output I / O components 1508 may include Figure 15Many other components not shown. In various examples, input / output I / O component 1508 may include user output component 1524 and user input component 1526. User output component 1524 may include visual components (e.g., a display such as a plasma display panel (PDP), light emitting diode (LED) display, liquid crystal display (LCD), projector, or cathode ray tube (CRT)), acoustic components (e.g., speakers), tactile components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. User input component 1526 may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, an optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instruments), tactile input components (e.g., physical buttons, a touch screen that provides the location and force of a touch or touch gesture, or other tactile input components), audio input components (e.g., a microphone), etc.
[0136] In additional examples, input / output I / O component 1508 may include biometric component 1528, motion component 1530, environmental component 1532, or positioning component 1534, as well as a wide array of other components. For example, biometric component 1528 includes components for detecting expressions (e.g., hand expressions, facial expressions, voice expressions, body postures, or eye tracking), measuring biometric signals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), identifying people (e.g., voice recognition, retina recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), etc. Motion component 1530 includes acceleration sensor components (e.g., accelerometers), gravity sensor components, rotational sensor components (e.g., gyroscopes).
[0137] Environmental component 1532 includes, for example, one or more camera devices (with still image / photo and video capabilities), lighting sensor components (e.g., photometers), temperature sensor components (e.g., one or more thermometers for detecting ambient temperature), humidity sensor components, pressure sensor components (e.g., barometers), acoustic sensor components (e.g., one or more microphones for detecting background noise), proximity sensor components (e.g., infrared sensors for detecting nearby objects), gas sensors (e.g., gas detection sensors for detecting the concentration of hazardous gases for safety or for measuring pollutants in the atmosphere), or other components that can provide an indication, measurement, or signal corresponding to the surrounding physical environment.
[0138] Regarding the imaging device, the client system 102 may have an imaging device system that includes, for example, a front imaging device on the front surface of the client system 102 and a rear imaging device on the rear surface of the client system 102. The front imaging device may be used, for example, to capture still images and videos of the user of the client system 102 (e.g., "selfies"), which may then be enhanced with the above-described enhancement data (e.g., filters). For example, the rear imaging device may be used to capture still images and videos in a more conventional imaging device mode, and these images are similarly enhanced with the enhancement data. In addition to the front imaging device and the rear imaging device, the client system 102 may also include a 360° imaging device for capturing 360° photos and videos.
[0139] Furthermore, the imaging device system of the client system 102 may include dual rear imaging devices (e.g., a main imaging device and a depth sensing imaging device), or even triple, quadruple, or quintuple rear imaging device configurations on the front and rear sides of the client system 102. For example, these multi-imaging device systems may include a wide-angle imaging device, an ultra-wide-angle imaging device, a telephoto imaging device, a macro imaging device, and a depth sensor.
[0140] The positioning component 1534 includes a position sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure, from which altitude can be obtained), an orientation sensor component (e.g., a magnetometer), etc.
[0141] Various techniques can be used to implement communication. The input / output I / O component 1508 also includes a communication component 1536 that is operable to couple the machine 1500 to the network 1538 or the device 1540 via a corresponding coupling or connection. For example, the communication component 1536 may include a network interface component that interfaces with the network 1538 or another suitable device. In another example, the communication component 1536 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, components (e.g., low power consumption), Wi- components, and other communication components that provide communication via other modalities. The device 1540 may be another machine or any of various peripheral devices (e.g., a peripheral device coupled via USB).
[0142] In addition, communication component 1536 can detect an identifier or include components operable to detect an identifier. For example, communication component 1536 can include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying an audio signal of a tag). In addition, various information can be obtained via communication component 1536, such as a location via Internet Protocol (IP) geolocation, a location via Wi- signal triangulation, a location via detecting an NFC beacon signal that can indicate a specific location, and so on.
[0143] Various memories (e.g., main memory 1516, static memory 1518, and the memory of processor 1504) and machine-readable medium 1520 can store one or more sets of instructions and data structures (e.g., software) implemented or used by any one or more of the methods or functions described herein. These instructions (e.g., instruction 1502), when executed by processor 1504, cause the various operations to implement the disclosed examples.
[0144] Instructions 1502 can be sent or received via a network interface device (e.g., the network interface component included in communication component 1536) using a transmission medium and using any one of several well-known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)) over network 1538. Similarly, instructions 1502 can be sent or received using a transmission medium via a coupling (e.g., a peer-to-peer coupling) with device 1540.
[0145] Software architecture
[0146] Figure 16FIG. 1600 is a block diagram showing a software architecture 1602 that can be installed on any one or more of the devices described herein. The software architecture 1602 is supported by hardware, such as a machine 1604 that includes a processor 1606, a memory 1608, and I / O components 1610. In this example, the software architecture 1602 can be conceptualized as a stack of layers, where each layer provides a specific function. The software architecture 1602 includes the following layers, such as an operating system 1612, libraries 1614, frameworks 1616, and applications 1618. In operation, the application 1618 activates an API call 1620 through the software stack and receives a message 1622 in response to the API call 1620.
[0147] The operating system 1612 manages hardware resources and provides common services. The operating system 1612 includes, for example: a kernel 1624, services 1626, and drivers 1628. The kernel 1624 serves as an abstraction layer between the hardware and other software layers. For example, the kernel 1624 provides functions such as memory management, processor management (e.g., scheduling), component management, networking, and security settings. The services 1626 can provide other common services for other software layers. The drivers 1628 are responsible for controlling or interfacing with the underlying hardware. For example, the drivers 1628 can include a display driver, a camera device driver, or a low-power driver, a flash driver, a serial communication driver (e.g., a USB driver), a WI- driver, an audio driver, a power management driver, etc.
[0148] The libraries 1614 provide common low-level infrastructure used by the applications 1618. The libraries 1614 can include system libraries 1630 (e.g., the C standard library), which provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. In addition, the libraries 1614 can include API libraries 1632, such as media libraries (e.g., libraries for supporting the presentation and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), or Portable Network Graphics (PNG)), graphics libraries (e.g., the OpenGL framework for 2D and 3D rendering in graphical content on a display), database libraries (e.g., SQLite, which provides various relational database functions), web libraries (e.g., WebKit, which provides web browsing functions), etc. The libraries 1614 can also include a variety of other libraries 1634 to provide many other APIs to the applications 1618.
[0149] The framework 1616 provides a common high-level infrastructure for use by the applications 1618. For example, the framework 1616 provides various graphical user interface (GUI) functions, high-level resource management, and high-level location services. The framework 1616 can provide a wide range of other APIs that can be used by the applications 1618, some of which may be specific to a particular operating system or platform.
[0150] In an example, the applications 1618 can include a home application 1636, a contacts application 1638, a browser application 1640, a book reader application 1642, a location application 1644, a media application 1646, a messaging application 1648, a gaming application 1650, and various other applications such as third-party applications 1652. An application 1618 is a program that executes functions defined in a program. One or more of the applications 1618 can be created using various programming languages, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C language or assembly language). In a particular example, a third-party application 1652 (e.g., an application developed using an ANDROID TM or IOS TM software development kit (SDK)) can be mobile software that runs on a mobile operating system such as IOS TM , Phone or other mobile operating systems. In this example, the third-party application 1652 can activate API calls 1620 provided by the operating system 1612 to facilitate the functions described herein.
[0151] Glossary
[0152] A "carrier signal" refers to any non-tangible medium that can store, encode, or carry instructions executable by a machine and includes digital or analog communication signals or other non-tangible media that facilitate the communication of such instructions. Instructions can be sent or received over a network using a transmission medium via a network interface device.
[0153] A "client device" refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. A client device can 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, a superbook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a gaming console, a set-top box, or any other communication device that a user can use to access a network.
[0154] "Communication network" refers to one or more portions of a network, such as, for example, 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 portion of the Internet, a portion of the public switched telephone network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi- Fi network, other types of networks, or a combination of two or more such networks. For example, the network or a portion of the network can include a wireless network or a cellular network, and the coupling can be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other types of cellular or wireless couplings. In this example, the coupling can implement any of a variety of data transfer technologies, such as single carrier radio transmission technology (1xRTT), evolved data optimized (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rate 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), worldwide interoperability for microwave access (WiMAX), long term evolution (LTE) standards, other data transfer technologies defined by various standards setting organizations, other long range protocols, or other data transfer technologies.
[0155] "Component" refers to, for example, a logical or physical entity having boundaries defined by function or subroutine calls, branch points, APIs, or other techniques that provide partitioning or modularization of a particular processing or control function. Components can be combined with other components via their interfaces to perform machine processing. A component can be an encapsulated functional hardware unit designed to be used with other components and a part of a program with specific functions that typically perform related functions. Components can constitute software components (e.g., code implemented on a machine-readable medium) or hardware components. A "hardware component" is a tangible unit capable of performing certain operations and can be configured or arranged in some physical manner. In various examples, one or more computer systems (e.g., stand-alone computer systems, client computer systems, or server computer systems) or one or more hardware components of a computer system (e.g., a processor or group of processors) can be configured by software (e.g., an application or part of an application) to operate to perform certain operations as described herein as a hardware component. A hardware component can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component can include dedicated circuitry or logic that is permanently configured to perform certain operations. A hardware component can be a dedicated processor, such as a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). A hardware component can also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a 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 particular machine (or a particular component of a machine) that is uniquely customized to perform the configured function and is no longer a general-purpose processor. It will be appreciated that the decision to implement a hardware component mechanically in dedicated and permanently configured circuitry or in temporarily configured (e.g., software-configured) circuitry can be made for cost and time considerations. Thus, the phrase "hardware component" (or "hardware-implemented component") should be understood to include a tangible entity, i.e., an entity that is physically constructed, permanently configured (e.g., hard-wired), or temporarily configured (e.g., programmed) to operate in some manner or perform certain operations described herein. Considering an example where a hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each hardware component at any given time. For example, in the case where a hardware component includes a general-purpose processor that is configured by software to become a dedicated processor, the general-purpose processor can be configured at different times to be respective different dedicated processors (e.g., including different hardware components). The software accordingly configures a particular one or more processors to, for example, constitute a particular hardware component at one moment and a different hardware component at a different moment. Hardware components can provide information to and receive information from other hardware components.Accordingly, the described hardware components can be considered communicatively coupled. In cases where multiple hardware components are present simultaneously, communication can be achieved through signal transmission between or among two or more hardware components (e.g., via appropriate circuitry and buses). In examples where multiple hardware components are configured or instantiated at different times, communication between such hardware components can be achieved, for example, by storing information in a memory structure accessible to the multiple hardware components and retrieving the information from the memory structure. For example, one hardware component can perform an operation and store the output of the operation in a memory device communicatively coupled thereto. Then, another hardware component can access the memory device at a subsequent time to retrieve the stored output and process it. Hardware components can also initiate communication with input or output devices and can operate on resources (e.g., collections of information). The various operations of the example methods described herein can be performed at least in part by one or more processors temporarily configured (e.g., via software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more of the operations or functions described herein. As used herein, a "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be at least in part processor-implemented, where a particular one or more processors are examples of hardware. For example, at least some of the various operations of the method can be performed by one or more processors or processor-implemented components. Additionally, one or more processors can also operate to support the execution of relevant operations in a "cloud computing" environment or as a "software as a service" (SaaS) operation. For example, at least some of the operations can be performed by a group of computers (as an example of machines including processors), where the operations are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of certain operations can be distributed among processors, not residing only within a single machine but deployed across multiple machines. In some examples, the processors or processor-implemented components can be located in a single geographical location (e.g., within a home environment, an office environment, or a server farm). In other examples, the processors or processor-implemented components can be distributed across multiple geographical locations.
[0156] "Computer-readable storage medium" refers to both, for example, machine storage media and transmission media. Thus, these terms include both storage devices / media and carrier / wave-modulated data signals. The terms "machine-readable medium", "computer-readable medium", and "device-readable medium" mean the same thing and can be used interchangeably in this disclosure.
[0157] "Ephemeral message" refers to a message that is accessible, for example, within a time-limited duration. The ephemeral message can be text, image, video, etc. The access time of the ephemeral message can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the receiver. Regardless of the setting technique, the message is temporary.
[0158] "Machine storage medium" 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 regarded as including, but not limited to, solid-state memory as well as 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), FPGA, 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 medium", "device storage medium", "computer storage medium" mean the same thing and can be used interchangeably in this disclosure. The terms "machine storage medium", "computer storage medium", and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are subsumed under the term "signal medium".
[0159] "Non-transitory computer-readable storage medium" refers to, for example, a tangible medium that is capable of storing, encoding, or carrying instructions executable by a machine.
[0160] "Signal medium" refers to, for example, any intangible medium that is capable of storing, encoding, or carrying instructions executable 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 regarded as including any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal whose one or more characteristics are set or changed in such a way as to encode information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and can be used interchangeably in this disclosure.
[0161] "User equipment" refers to, for example, equipment accessed, controlled, or owned by a user, and with which the user interacts to perform actions interactively on the user equipment or to interact with other users or computer systems.
Claims
1. A method, comprising: Receiving, on a first user device associated with a first user, a media content item from a second user device associated with a second user; Causing the received media content item to be displayed on a graphical user interface of the first user device; Receiving a selection from the graphical user interface of the first user device while causing the received media content item to be displayed; In response to receiving the selection, saving the media content item to a conversation thread between the first user and the second user; And Causing an indication that the media content item is saved within the conversation thread to be displayed.
2. The method according to claim 1, wherein, The media content item is a transient message.
3. The method according to claim 1, further comprising: Causing an indication that the media content item has been saved by the first user to be displayed on the second user device.
4. The method according to claim 1, further comprising: Receiving a selection from the first user of the saved media content item within the conversation thread; And In response to the selection, removing the media content item from the conversation thread.
5. The method according to claim 1, further comprising: Receiving a selection from the second user of the saved media content item within the conversation thread; And In response to the selection, removing the media content item from the conversation thread.
6. The method according to claim 1, wherein, The media content item is associated with a timing condition.
7. The method according to claim 1, wherein The conversation thread is a pre - existing conversation thread between the first user and the second user.
8. The method according to claim 1, further comprising: Storing the media content item in a buddy profile of a messaging application, the buddy profile being associated with the first user and the second user.
9. A computing device, comprising: A processor; And A memory that stores instructions which, when executed by the processor, configure the device to: Receive, on a first user device associated with a first user, a media content item from a second user device associated with a second user; Cause the received media content item to be displayed on a graphical user interface of the first user device; Receive a selection from the graphical user interface of the first user device while causing the received media content item to be displayed; In response to receiving the selection, save the media content item to a conversation thread between the first user and the second user; And Cause an indication that the media content item is saved within the conversation thread to be displayed.
10. The computing device according to claim 9, wherein, The media content item is a transient message.
11. The computing device according to claim 9, wherein, The instructions further configure the device to: Cause an indication that the media content item has been saved by the first user to be displayed on the second user device.
12. The computing device according to claim 9, wherein, The instructions further configure the device to: Receive a selection from the first user of the saved media content item within the conversation thread; and In response to the selection, remove the media content item from the conversation thread.
13. The computing device according to claim 9, wherein, The instructions further configure the device to: Receive a selection from the second user of the saved media content item within the conversation thread; and In response to the selection, remove the media content item from the conversation thread.
14. The computing device according to claim 9, wherein, The media content item is associated with a timing condition.
15. The computing device according to claim 9, wherein, The session thread is a pre-existing session thread between the first user and the second user.
16. The computing device according to claim 9, wherein, The instructions further configure the device to: Store the media content item in a buddy profile of a messaging application, the buddy profile being associated with the first user and the second user.
17. A non-transitory computer-readable storage medium, the computer-readable storage medium comprising instructions that, when executed by a computer, cause the computer to: Receive, on a first user device associated with a first user, a media content item from a second user device associated with a second user; Cause the received media content item to be displayed on a graphical user interface of the first user device; While causing the received media content item to be displayed, receive a selection from the graphical user interface of the first user device; In response to receiving the selection, save the media content item to a session thread between the first user and the second user; And Cause an indication that the media content item has been saved within the session thread to be displayed.
18. The computer-readable storage medium according to claim 17, wherein, The media content item is a transient message.
19. The computer-readable storage medium according to claim 17, wherein, The instructions further configure the computer to: Cause an indication that the media content item has been saved by the first user to be displayed on the second user device.
20. The computer-readable storage medium according to claim 17, wherein, The instructions further configure the computer to: Receive a selection from the first user of the saved media content item within the session thread; and In response to the selection, remove the media content item from the session thread.