content integration
By integrating and sorting content item links from client applications within the messaging application, the problem of users switching between different applications is solved, enabling more efficient access to content items.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- APPLE INC
- Filing Date
- 2022-05-17
- Publication Date
- 2026-07-14
AI Technical Summary
Existing messaging applications cannot effectively integrate and display various types of content items such as audio and video within a session thread, causing users to frequently switch applications, consuming time and computing resources.
By maintaining a link index within the messaging application, links to content items pointing to other client applications can be automatically or manually consolidated, and a sorting module can be used to rank the links based on user behavior and preferences, providing a seamless display of content items.
It reduces the frequency with which users switch between different applications, improves the efficiency of content access, and saves time and computing resources.
Smart Images

Figure CN115357816B_ABST
Abstract
Description
Technical Field
[0001] This specification covers content items shared between users in general, and more specifically, the management of shared links to content items across applications. Background Technology
[0002] Messaging applications facilitate communication between users via networks such as the Internet. In addition to text messages, users can use messaging applications to share links to content items such as different types of media files. Users can then utilize specific client applications to access associated media files located via links. Attached Figure Description
[0003] Some features of this subject matter are shown in the appended claims. However, for illustrative purposes, several embodiments of this subject matter are illustrated in the following figures.
[0004] Figure 1 An exemplary network environment in which the techniques of this subject matter can be operated according to one or more specific implementations is shown.
[0005] Figure 2 A block diagram illustrating components of an electronic device according to one or more specific embodiments of the subject matter is provided.
[0006] Figure 3 A diagram illustrating an exemplary sorting architecture in one or more specific implementations of the subject matter.
[0007] Figure 4 An exemplary process for integrating content is shown, based on various aspects of the technology of this subject.
[0008] Figure 5 Exemplary electronic systems, according to one or more specific implementations, are shown that can be used to implement various aspects of the technology of this subject matter. Detailed Implementation
[0009] The specific embodiments shown below are intended to describe various configurations of the subject matter and are not intended to represent the only configuration in which the subject matter can be practiced. The accompanying drawings are incorporated herein and form part of the specific embodiments. The specific embodiments include particular details intended to provide a thorough understanding of the subject matter. However, the subject matter is not limited to the specific details described herein and can be practiced using one or more other specific embodiments. In one or more specific embodiments, structures and components are shown in block diagram form to avoid obscuring the concepts of the subject matter.
[0010] Messaging applications, such as chat applications, facilitate near real-time communication between users over a network. In addition to text content, messaging applications have evolved to allow the display of other types of shared content, such as images and animations, within a session thread. However, messaging applications may not be able to display and / or transmit other types of content, such as audio clips, video clips, and websites, within a session thread. For these types of content, users can share links to desired content items within the session thread. These links identify the location of the content item and allow other users participating in the session thread to access the content item by selecting the link displayed in the conversation thread.
[0011] Different types of content items may require specific client applications that support the corresponding content type to access and consume them. For example, when a user selects an audio file, the audio file may require an audio client application to load and play it. Similarly, when a user selects a video file, the video file may require a video client application to load and play it. When a link to a content item is selected within a messaging application's session thread, the messaging application can be pushed to the background by the operating system of the computing device executing the messaging application, and a client application associated with the content item type identified by the selected link can be launched and / or opened in the foreground of the computing device. In the client application, the context of the session thread in which the link is shared may be lost, forcing the user to switch back and forth between the messaging application and the client application to refresh the user's context memory while consuming the linked content item.
[0012] A session thread may include multiple links shared by one or more users participating in that session thread. Furthermore, a user may participate in multiple session threads simultaneously, each of which may include one or more shared links pointing to content items. Accessing linked content items while links are shared across various session threads can excessively disrupt a user's session thread flow. Additionally, switching back and forth between the messaging application and one or more client applications associated with different types of content items shared within a given session thread consumes time and computational resources. If a user selects a link to a content item to access it after the session thread has stopped or paused, the user again expends time and computational resources browsing the session thread's history to find the link.
[0013] This technology maintains a link index that includes links to content items delivered within a session thread of a messaging application on a computing device. Links to content items can be automatically, or in response to a user manually selecting them within the session thread, designated for integration into other applications on the computing device. Upon request from a client application, links to content items associated with the client application are obtained from the link index and provided to the client application for display. If more than one link is obtained from the link index associated with the requesting client application, the links can be sorted based on metadata associated with the links and / or the session thread containing the links before providing the links to the requesting client application for display. The client application can use this sorting to arrange the links relative to each other or relative to existing links managed by the client application before receiving the requested links for display within the client application.
[0014] The techniques outlined above describe how content items shared within a first client application, such as a messaging application, can be seamlessly integrated into other client applications. By proactively providing shared links to content items to associated client applications, these techniques help users avoid the potentially time-consuming and resource-intensive process of searching through the session thread to find links to content items of interest after the session ends. Users will no longer need to switch back and forth between client applications to find shared links to content items and then access those discovered links in the associated applications when they are found.
[0015] Figure 1 An exemplary network environment 100 in which the subject matter technology can operate according to one or more embodiments is shown. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.
[0016] like Figure 1As shown, network environment 100 includes electronic devices 105, 110, and 115 (hereinafter referred to as "electronic devices 105-115"), servers 120, 125, and 130 (hereinafter referred to as "servers 120-130"), a local area network (LAN) 140, and a network 150. In one or more embodiments, LAN 140 may communicatively couple electronic devices 105 and 110 in the local network environment (directly or indirectly). Additionally, LAN 140 may communicatively couple electronic devices 105 and 110 to any one of electronic devices 115 and servers 120-130 via network 150.
[0017] In one or more specific implementations, LAN 140 may include one or more different network devices / network media and / or may utilize one or more different wireless and / or wired network technologies, such as Ethernet, optical, Wi-Fi, Bluetooth, Zigbee, Ethernet powerline, coaxial, Ethernet, Z-wave, cellular, or generally any wireless network technology and / or wired network technology that can communicatively couple two or more devices.
[0018] In one or more specific embodiments, network 150 may be an interconnected network of devices that may include the Internet and / or be communicatively coupled to the Internet. For illustrative purposes, network environment 100 is described in... Figure 1 The network environment 100 is exemplified as including electronic devices 105-115 and servers 120-130; however, the network environment 100 may include any number of electronic devices and any number of servers.
[0019] Figure 1 Electronic device 105 as a laptop computer, electronic device 110 as a tablet device, and electronic device 115 as a smartphone are illustrated. The subject matter is not limited to the types or numbers of electronic devices described above. For example, any of electronic devices 105-115 can be a portable computing device, such as a laptop computer, smartphone, set-top box including a digital media player, tablet device, wearable device such as a smartwatch or wristband, or any other suitable device capable of executing client applications, providing access to client applications via a graphical user interface, and including and / or communicatively coupled to, for example, one or more wired or wireless interfaces such as WLAN radio, cellular radio, Bluetooth radio, Zigbee radio, near field communication (NFC) radio, and / or other radios.
[0020] Servers 120-130 each represent one or more computing devices configured to provide services to users via client applications running on electronic devices 105-115. For example, server 120 may provide a messaging service through which users can send communications to each other via a messaging application running on the respective electronic device. Server 125 may be configured to provide a video service by storing and indexing video files, accessible via links to video files in a video client application running on the electronic device. Server 130 may be configured to provide a news service by storing and indexing news items, accessible via links to news items in a news client application running on the electronic device. This subject matter is not limited to the number or types of services described above. For example, one or more of servers 120-130 may provide access to other types of content, including but not limited to audio files, websites, computer games, documents, and multimedia files.
[0021] Figure 2 A block diagram illustrating components of an electronic device according to one or more specific embodiments of the subject matter is provided. Although Figure 2 The components used in the electronic device 110 are depicted, but Figure 2 Corresponding to, for example Figure 1 Any of the electronic devices 105-115 shown. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.
[0022] exist Figure 2 In the depicted example, electronic device 110 includes processor 210 and memory 220. Processor 210 may include appropriate logic components, circuitry, and / or code that enable data processing and / or control of the operation of electronic device 110. In this regard, processor 210 may be enabled to provide control signals to various other components of electronic device 110. Processor 210 may also control data transfer between different parts of electronic device 110. Additionally, processor 210 may enable the implementation of an operating system or other code execution to manage the operation of electronic device 110.
[0023] Processor 210 or one or more portions thereof may be implemented in software (e.g., instructions, subroutines, and code), hardware (e.g., application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), programmable logic devices (PLDs), controllers, state machines, gated logic components, discrete hardware components, or any other suitable device), and / or a combination of both.
[0024] Memory 220 may include appropriate logic components, circuitry, and / or code capable of storing various types of information such as received data, generated data, code, and / or configuration information. Memory 220 may include, for example, random access memory (RAM), read-only memory (ROM), flash memory, and / or magnetic storage devices. Figure 2 The depicted memory 220 includes a message transmission module 230, a link index 240, a client module 250, a sorting module 260, and an interactive feedback data storage unit 270. This subject matter is not limited to the number and type of components described above, and may use more... Figure 2 It can be achieved by depicting more or fewer parts.
[0025] According to various aspects of the subject matter, messaging module 230 includes a computer program having a sequence of one or more instructions or codes, along with associated data and settings. Upon execution of the instructions or codes, one or more processes are initiated to provide a messaging client on electronic device 110 for communication between users of electronic device 110 and users of other electronic devices. The messaging client can communicate with servers such as server 120 to send and receive messages from other users. The messaging client manages one or more session threads, whose participants exchange messages within the messaging client. Messages can include different types of content, including text content, image content, animated content, etc. Text content can be conversational or a link to other types of content accessible via other types of applications or platforms, such as a Uniform Resource Locator (URL) and / or other network identifiers. Other types of content may include, but are not limited to, audio content, video content, news items, e-books, and social media posts.
[0026] Messaging clients can be configured to detect links in session thread messages and specify these links for integration into other applications or platforms that can be used to access content addressed by those links. Detected links can be automatically or manually specified for integration, depending on pre-configured user settings. User settings can include global settings that allow users to enable or disable specifying links across all sessions and for all client applications and platforms. User settings can include application-specific settings that allow users to enable or disable specifying links associated with a specific client application or platform. For example, a user might not intend to specify a link to music content associated with a music application, and therefore could disable specifying any links pointing to music content detected in a session thread. User settings can also include session thread-specific settings that allow users to enable or disable specifying links detected within a specific session thread.
[0027] Regardless of pre-configured user settings, the messaging client can be configured to allow users to select links within a session thread and manually specify a link for integration if it is not automatically assigned. Alternatively, users can select a link that has already been automatically assigned for integration and override that assignment to cancel the link assignment and prevent integration.
[0028] The messaging client can be further configured to provide links designated for integration, so that they are stored in link index 240 along with associated metadata. The associated metadata may include, but is not limited to, the identifier of the session thread that detected the link, the identifier of the sender of the message containing the link, the time when the link was detected and designated for integration (whether the link is automatically designated by the messaging client or manually designated by the user of the messaging client), and other participants in the session thread.
[0029] Before providing a specified link to be stored in link index 240, the messaging client can be configured to check the contact status of the sender of the message containing the link. The contact status indicates whether the sender exists in the recipient's contact database on the electronic device. If the sender does not exist in the recipient's contact database, the messaging client may not provide a link to store in link index 240. Alternatively, the messaging client can check whether a message sent by the sender in the session thread has any other recipients and determine the contact status of any other recipients. If at least one other recipient exists in the contact database, the messaging client can be configured to provide a specified link to store in link index 240. These configurations prevent unwanted content from being integrated and passed to other applications running on the electronic device.
[0030] The resolution probability of links stored in link index 240 can be evaluated for multiple different client applications. For example, a link pointing to a content item associated with a news application can link to the news item to be displayed in the news application. The news item may reference a news report on a news publisher's website. In this case, the link can also be resolved to the URL of the news publisher's website containing the news report. Both of these links—one resolved to the address of a news item in the news application, and the other resolved to a website URL for a web browser to open and display—can be stored in link index 240 along with associated metadata.
[0031] According to various aspects of the subject matter, client module 250 includes a computer program having a sequence of one or more instructions or codes, along with associated data and settings. Upon execution of the instructions or codes, one or more processes are initiated to provide a client application on electronic device 110 for accessing and consuming content of a specific type or format. Client applications include, but are not limited to, music client applications, video client applications, news client applications, and social media client applications. For example, access to content may be controlled by a server such as server 125 or server 130, wherein the client application communicates with the server to identify available content and access content selected by the user.
[0032] A client application may maintain a list or stream of links pointing to content items associated with the client application. If a client application provides a platform for users to access and consume content items, then those content items are considered associated with the client application. The list or stream may be formed based on user activities such as searches, suggestions or feeds from services provided, for example, by servers 125 or 130, and / or from links designated for integration. The client application may refresh the list or stream of links upon startup and may refresh it periodically and / or in response to user requests. As part of the refresh process, the client application may request sorting module 260 to provide links in link index 240 to content items associated with the client application.
[0033] According to various aspects of the subject matter, the sorting module 260 includes a sequence of one or more instructions or codes, along with associated data and settings. Upon execution of the instructions or codes, one or more processes are initiated and configured to retrieve one or more links to content items from the link index 240 in response to a request for links received from the client module 250. The sorting module 260 may also obtain metadata associated with the links to content items stored in the link index 240. Furthermore, the sorting module 260 may obtain information from the interaction feedback data repository 270 concerning user interactions with different content items, session threads, and / or corresponding participants within those session threads, as well as the timing and extent of the interactions. The associated metadata and interaction information can be used by the sorting module 260 to sort and rank the links obtained from the link index 240.
[0034] Figure 3 An exemplary sorting architecture that may be part of sorting module 260 in one or more specific embodiments of the subject matter is shown. Figure 3 The depicted sorting architecture 300 includes a sorting manager 310, a feature source 320, heuristic sorters 330, 340, 350, 360, 370, and 380 (hereinafter referred to as "heuristic sorters 330-380"), and a scorer 390. However, not all depicted components are usable in all embodiments, and one or more embodiments may include additional or different components compared to those shown in the figures. Variations in the arrangement and type of these components may be made without departing from the spirit or scope of the claims set forth herein. Additional components, different components, or fewer components may be provided.
[0035] For a given link pointing to a content item, sort manager 310 obtains metadata and other information about the link, as well as information about a messaging application user who receives the link from another user via feature source 320. Feature source 320 refers to different data sources from which metadata and other information can be obtained. These data sources may include link index 240 and interactive feedback data repository 270. This subject matter is not limited to the aforementioned data sources and data may be obtained from other sources in different specific implementations. Sorting manager 310 provides the obtained metadata and other information to one or more of heuristic sorters 330-380.
[0036] The heuristic sorter 330 processes context-relevant information and features based on the device's real-world location and / or locally known user activities that may indicate behavioral patterns or user content type preferences. For example, if a user has never watched video content while their device is at work, video items may be less prominent in the sorting during the user's work hours. Conversely, music links may be more prominent when the device is connected to a car system and the user frequently listens to music while driving.
[0037] The heuristic sorter 340 processes information and characteristics related to the absolute or relative time when a link is shared, received, or accessed by a user in some way. In this respect, links may be sorted more prominently if they were recently received or if the user recently communicated with the sender of the link.
[0038] The heuristic sorter 350 processes information and characteristics related to a user's behavior toward the contacts they communicate with. For example, links may be ranked more prominently if the user communicates regularly with the sender of a link or always responds to that sender. Links may also be ranked more prominently if the user communicates regularly in group sessions where the links are received.
[0039] The heuristic ranking algorithm 360 processes information and characteristics related to user behavior or preferences based on the actual content of the received links. For example, links pointing to articles about known hobbies or interests may be ranked more prominently. In this example, links pointing to a sports team's score or a musician's song collection might be ranked higher than other links.
[0040] The heuristic sorter 370 processes information and characteristics about a user's contact with specific types of links. For example, for users who frequently interact with video links rather than text or audio links, links pointing to video content may be ranked more prominently.
[0041] The heuristic sorter 380 processes information and characteristics regarding user-indicated preferences for specific links. In this regard, users can highlight "favorites" or "starred" links to make them more prominent in the sorting.
[0042] In heuristic sorters 330-380, each sorter receives metadata and other information from sort manager 310 and is configured to generate scores by linking l. i (l). The scorer 390 is configured to combine scores from each heuristic sorter. According to various aspects of the subject matter technique, the scorer 390 will be determined by α according to the following formula. i The weighted scores are summed to generate the total score for the link:
[0043]
[0044] The weights can be adjusted over time based on user settings, calibration algorithms, or machine learning. H represents the set of heuristic sorters used for links to specific content items being rated.
[0045] Feedback calibration can be applied to the total score generated by scorer 390. According to various aspects of the subject matter, feedback calibration represents the user's interaction with the linked content item and / or the session thread participants sharing the link. For example, feedback calibration can indicate whether the user consumed the linked content item, whether the user partially consumed the linked content item, whether the user removed the linked content item from the client application's display or from the session thread, the number of times the link to the content item was shared with the user without the user taking any action on the linked content item, etc. Feedback calibration is configured to use the above information to increase the total score, decrease the total score, or remove the link from further consideration. In one or more embodiments, a link can be removed from link index 240 after the linked content item has been fully consumed by the user, or after the link has remained in link index 240 for a predetermined period without user interaction. The calibrated score is associated with a link pointing to a content item and is used by the sorting module 260 or the client module 250 to arrange that link relative to other links returned by the sorting module 260 in response to a request from the client module 250, or relative to other links managed and displayed by the client module 250.
[0046] User interactions with links pointing to content items via messaging module 230 or client module 250 are recorded on the electronic devices executing these modules. To provide a consistent experience across other electronic devices associated with a particular user, user interactions can be synchronized across a set of electronic devices associated with that user. Synchronization can be peer-to-peer, such as... Figure 1 The synchronization can be performed directly between electronic devices 105 and 110. Alternatively, synchronization information can be shared with another electronic device via a server. However, to protect user privacy, the synchronization information can be encrypted so that the server can only benefit from message transmission between the two electronic devices and cannot know the content of the messages.
[0047] The technology in this topic is not limited to Figure 3 The heuristic sorter types and / or number are described herein. Other implementations may include more or fewer heuristic sorters and / or utilize different signal groups provided to the respective heuristic sorters. Additionally, the scorer 390 may use different linear functions to sort the links or may use nonlinear functions such as neural networks to sort the links.
[0048] Once the sorting module 260 has received and sorted the links associated with the requesting client application, it can be configured to organize the sorted links into multiple lists. In one or more embodiments, a first list may contain the highest-ranked links associated with the requesting client application. Alternatively, the first list may contain a set of highest-ranked links associated with the requesting application. The link sorting for the requesting client application may be repeated after a period of time, and one or more links in the first list may be updated if the sorting changes.
[0049] In one or more implementations, the second list may contain links associated with the requesting client application, which are manually specified by the user for integration but not included in the first list. The links in the second list may be organized chronologically based on the timestamps at which the user manually specified the link for integration. These links may remain in the second list for a predetermined period (e.g., ten days) or until the user has consumed the linked content.
[0050] In one or more implementations, the third list may contain additional links associated with the requesting client application, returned by query link index 240, and not included in the first or second list. The links in the third list may be organized chronologically based on the time the linked content was consumed, the time the user specified the linked content for integration, or the time the link was received in the messaging application.
[0051] The sorting module 260 can be configured to provide a predetermined number of links to the requesting client application. The sorting module 260 can provide links as needed, first from a first list, then from a second list, and then from a third list, until the predetermined number of links has been provided. This predetermined number can vary depending on the client application requesting the links, with some client applications requesting more links per request than others. The sorting module 260 can be configured to update the link organization across the three lists when the requesting client application requests more links to be displayed or after a period of time. Links can be retained in the link index 240 for a predetermined period (e.g., one year) and then discarded from the link index 240 and therefore no longer available to the requesting application.
[0052] Figure 4 Exemplary processes for integrating content according to various aspects of the subject matter are illustrated. For illustrative purposes, the frames of process 400 are described herein as occurring sequentially or linearly. However, multiple frames of process 400 may occur in parallel. Furthermore, the frames of process 400 need not be executed in the order shown, and / or one or more frames of process 400 need not be executed and / or may be replaced by other operations.
[0053] An exemplary process 400 may be initiated (box 410) when a process (e.g., a first process) executing on the electronic device receives a request for a link to a content item associated with a client application from a process (e.g., a second process) also executing on the electronic device in the sorting module 260. The process in the sorting module 260 may execute as a background process or daemon that listens for requests from the client module 250 and any other client applications executing on the electronic device.
[0054] In response to a request for a link to a content item, a process in sorting module 260 may query link index 240 to obtain any links pointing to the content item associated with the requesting client module 250 (box 420). Link index 240 may contain links to content items transmitted via a process (e.g., a third process) in messaging module 230. Metadata stored along with the links in link index 240 may include fields associated with the content type of the linked content item that identify the client application or platform. Therefore, sorting module 260 may query link index 240 for any links with metadata associated with the content to be linked and the client module 250.
[0055] The links to content items obtained from link index 240 can be sorted using a sorting schema and organized into the list described above (box 430). The sorted links to content items associated with client module 250 can be provided to client module 250 for display to the user (box 440).
[0056] Client module 250 can be configured to display links to content items in a variety of different ways. For example, links received from sorting module 260 can remain separate from links already managed internally by client module 250, or the received links can be intertwined with existing links in client module 250. A sorting score can provide an indication of how the received links are sorted or placed relative to existing links.
[0057] Links received from the sorting module 260 can also be annotated to indicate to the user the source of the link being displayed by the client module 250. This annotation can identify the sender of the message that sent the link, including the timing of the message, all or part of any accompanying messages. Furthermore, the client module 250 can display the received link to the user along with the graphical interface elements associated with that link. When one of these interface elements is selected, a frame can be initiated for the process executed from the messaging module. The frame can contain the initial shared link's session thread and allow the user to continue the session with the participants in the session thread without leaving the user interface generated by the client module 250.
[0058] Figure 5 An electronic system 500 is shown that can be used to implement one or more specific embodiments of the subject matter technology. The electronic system 500 may be... Figure 1 One or more of the illustrated electronic devices 105-115 or servers 120-130, and / or may be part of them. Electronic system 500 may include various types of computer-readable media and interfaces for various other types of computer-readable media. Electronic system 500 includes a bus 508, one or more processing units 512, system memory 504 (and / or cache), ROM 510, persistent storage device 502, input device interface 514, output device interface 506, and one or more network interfaces 516, or subsets and variations thereof.
[0059] Bus 508 generally represents the entire system bus, peripheral bus, and chipset bus that communicatively connect the numerous internal devices of electronic system 500. In one or more embodiments, bus 508 communicatively connects one or more processing units 512 to ROM 510, system memory 504, and permanent storage device 502. One or more processing units 512 retrieve instructions to be executed and data to be processed from these various memory units in order to perform the processes disclosed in this subject matter. In different embodiments, one or more processing units 512 may be a single processor or a multi-core processor.
[0060] ROM 510 stores static data and instructions required by one or more processing units 512 and other modules of electronic system 500. On the other hand, persistent storage device 502 can be a read-write memory device. Persistent storage device 502 can be a non-volatile memory cell that stores instructions and data even when electronic system 500 is powered off. In one or more embodiments, mass storage devices (such as magnetic disks or optical disks and their corresponding disk drives) can be used as persistent storage device 502.
[0061] In one or more embodiments, a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) may be used as persistent storage device 502. Like persistent storage device 502, system memory 504 may be a read-write memory device. However, unlike persistent storage device 502, system memory 504 may be volatile read-write memory, such as random access memory. System memory 504 may store any instructions and data that one or more processing units 512 may need during operation. In one or more embodiments, the processes disclosed in this subject matter are stored in system memory 504, persistent storage device 502, and / or ROM 510. One or more processing units 512 retrieve instructions to be executed and data to be processed from these various memory units to execute the processes of one or more embodiments.
[0062] Bus 508 is also connected to input device interface 514 and output device interface 506. Input device interface 514 enables a user to transmit information and select commands to electronic system 500. Input devices that can be used with input device interface 514 may include, for example, an alphanumeric keypad and pointing devices (also known as "cursor control devices"). Output device interface 506 may, for example, enable the display of images generated by electronic system 500. Output devices that can be used with output device interface 506 may include, for example, printers and display devices such as liquid crystal displays (LCDs), light-emitting diode (LED) displays, organic light-emitting diode (OLED) displays, flexible displays, flat panel displays, solid-state displays, projectors, or any other device for outputting information. One or more embodiments may include devices that act as both input and output devices, such as touchscreens. In these embodiments, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, voice, or tactile input.
[0063] Finally, as Figure 5 As shown, bus 508 also couples electronic system 500 to one or more networks and / or one or more network nodes via the one or more network interfaces 516, such as Figure 1 Content provider 112 is shown. In this way, electronic system 500 may be part of a computer network (such as a LAN, wide area network (“WAN”), or intranet), or may be part of a network of networks (such as the Internet). Any or all components of electronic system 500 may be used in conjunction with the subject matter disclosed herein.
[0064] The embodiments within the scope of this disclosure may be implemented, in whole or in part, using a tangible computer-readable storage medium (or multiple tangible computer-readable storage media of one or more types) on which one or more instructions are written. The tangible computer-readable storage medium may also be substantially non-transitory.
[0065] Computer-readable storage media can be any storage medium that can be read, written, or otherwise accessed by general-purpose or special-purpose computing devices, including any processing electronics and / or processing circuits capable of executing instructions. For example, without limitation, computer-readable media can include any volatile semiconductor memory, such as RAM, DRAM, SRAM, T-RAM, Z-RAM, and TTRAM. Computer-readable media can also include any non-volatile semiconductor memory, such as ROM, PROM, EPROM, EEPROM, NVRAM, flash memory, nvSRAM, FeRAM, FeTRAM, MRAM, PRAM, CBRAM, SONOS, RRAM, NRAM, track memory, FJG, and Millipede memory.
[0066] Furthermore, computer-readable storage media may include any non-semiconductor memory, such as optical disc storage devices, magnetic disk storage devices, magnetic tape, other magnetic storage devices, or any other medium capable of storing one or more instructions. In one or more embodiments, the tangible computer-readable storage medium may be directly coupled to a computing device, while in other embodiments, the tangible computer-readable storage medium may be indirectly coupled to a computing device, for example, via one or more wired connections, one or more wireless connections, or any combination thereof.
[0067] Instructions can be directly executable or can be used to develop executable instructions. For example, instructions can be implemented as executable or non-executable machine code, or as high-level language instructions that can be compiled to produce executable or non-executable machine code. Furthermore, instructions can also be implemented as data, or may include data. Computer executable instructions can also be organized in any format, including routines, subroutines, programs, data structures, objects, modules, applications, applets, functions, etc. As those skilled in the art will recognize, details including, but not limited to, the number, structure, sequence, and organization of instructions can vary significantly without altering the underlying logic, functionality, processing, and output.
[0068] While the above discussion primarily concerns microprocessors or multi-core processors that execute software, one or more specific implementations are executed by one or more integrated circuits such as ASICs or FPGAs. In one or more specific implementations, such integrated circuits execute instructions stored on the circuit itself.
[0069] Those skilled in the art will recognize that the various exemplary blocks, modules, elements, components, methods, and algorithms described herein can be implemented as electronic hardware, computer software, or a combination of both. To illustrate this interchangeability between hardware and software, the various exemplary blocks, modules, elements, components, methods, and algorithms have been generally described above in terms of functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints imposed on the overall system. Those skilled in the art can implement the described functionality in different ways for each specific application. Various components and blocks can be arranged differently (e.g., in different orders or divided in different ways) without departing from the scope of the subject matter.
[0070] According to this subject matter disclosure, a method is provided that includes receiving a request for a link to a content item associated with the second process by a first process executed on an electronic device and from a second process executed on the electronic device. The method also includes obtaining a link to the content item associated with the second process by the first process and from a link index, wherein the link index is locally stored on the electronic device and includes links to content items transmitted via a third process executed on the electronic device. The link to the content item obtained from the link index is provided by the first process for display by the second process, wherein selection of the link causes the second process to display the content item.
[0071] The first process can obtain multiple links and associated metadata from the link index pointing to content items related to the second process. These multiple links can be sorted by the first process, at least in part, based on this associated metadata. The sorted multiple links can be provided for display by the second process.
[0072] The system can receive messages from participants in the first session thread of the third process and detect a first content link within those messages. The detected first content link can be designated for consolidation and stored in a local link index. When the first content link is detected in the first session thread, it can be automatically designated in the local messaging application. The first content link can be automatically designated based on pre-configured user settings set to specify all content links received in the session thread of the third process. The first content link can also be automatically designated based on pre-configured user settings set to specify all content links received in a specified session thread of the third process, where the first session thread is the specified session thread. The first content link can be designated in the third process in response to a user selection of it. The first content link designated by the user selection is ranked higher than another content link automatically designated in the third process.
[0073] Storing the first content link in the local link index may include resolving the first content link as a first resolved link, wherein the second process is able to recognize and access the first resolved link; resolving the first content link as a second resolved link, wherein a fourth process executed on the computing device, different from the second process, is able to recognize and access the second resolved link; and storing the first resolved link and the second resolved link in the local link index.
[0074] The hierarchical content links can be detected in the active session thread of the third process. The method may also include receiving an indication of user selection of an interface element displayed by the second process in association with the hierarchical content links, and displaying the active session thread in the user interface of the second process in response to the indicated user selection.
[0075] The system can receive instructions for user interaction with one of the content links in the hierarchical content links displayed by the second process, and can store records of such user interactions in a local interaction data repository. The content of this local interaction data repository can be synchronized with a remote interaction data repository, wherein the local interaction data repository resides on one electronic device and the remote interaction data repository resides on another electronic device. The sorted links can be hierarchically divided into a first set based on this sorting, a second set of links manually specified for integration, and a third set of links automatically specified for integration.
[0076] A non-transitory computer-readable medium may be provided, which stores instructions that, when executed by one or more processors, cause one or more processors to perform operations. These operations may include receiving, by a first process executing on an electronic device and from a second process executing on the electronic device, a request for a link to a content item associated with the second process; and obtaining, by the first process and from a link index, a plurality of links to the content item associated with the second process and associated metadata, wherein the link index is locally stored on the electronic device and includes links to content items transmitted via a third process executing on the electronic device. These operations may also include the first process sorting the plurality of links at least in part based on the associated metadata, and the first process providing the sorted plurality of links to the content item obtained from the link index for display by the second process, wherein selection of one of the plurality of links causes the second process to display the content item associated with the selected link.
[0077] These operations may also include receiving a message from a participant in the first session thread of the third process, detecting a first content link in the message, specifying the first content link for integration, and storing the first content link in the local link index.
[0078] Storing the first content link in the local link index may include resolving the first content link as a first resolved link, wherein the second process is able to recognize and access the first resolved link; resolving the first content link as a second resolved link, wherein a fourth process executed on the computing device, different from the second process, is able to recognize and access the second resolved link; and storing the first resolved link and the second resolved link in the local link index.
[0079] These operations may also include receiving instructions to interact with a content link in the hierarchical content links presented by the second process, storing a record of the user interaction in a local interaction data repository, and synchronizing the content of the local interaction data repository and a remote interaction data repository. The local interaction data repository may be located on the electronic device, and the remote interaction data repository may be located on another electronic device.
[0080] This subject matter discloses an apparatus including a memory and one or more processors. The memory stores a plurality of computer programs and a link index including links to content items transmitted via a messaging application of the plurality of computer programs. The one or more processors are configured to execute instructions of the plurality of computer programs. A request for a link to a content item associated with the client application can be received by a sorting application of the plurality of computer programs executing on the device and from a client application of the plurality of computer programs executing on the device. A plurality of links to content items associated with the client process and associated metadata can be obtained by the sorting application and from the link index, and the plurality of links can be sorted at least in part based on the associated metadata. A sorted plurality of links to the content item obtained from the link index can be provided for display by the client process, wherein selection of one of the plurality of links causes the client process to display the content item associated with the selected link.
[0081] The one or more processors may be further configured to receive messages from participants in a first session thread of the messaging application, detect a first content link in the message, and specify the first content link for integration and storage in the local link index. Upon detection of the first content link in the first session thread, the first content link may be automatically specified in the local messaging application based on pre-configured user settings. The first content link may also be specified in the messaging application in response to a user selection of that first content link.
[0082] As described herein, aspects of this subject matter may include collecting data from applications and transmitting it to other computing devices. This disclosure contemplates that, in some instances, the collected data may include personal information data that uniquely identifies or can be used to identify a specific person. Such personal information data may include demographic data, location-based data, online identifiers, telephone numbers, email addresses, home addresses, images, data or records related to a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), date of birth, or any other personal information.
[0083] This disclosure recognizes that the use of such personal information data in the techniques of this invention can be beneficial to users. For example, personal information data can be used to aggregate content. Furthermore, this disclosure also contemplates other uses of personal information data that are beneficial to users. For example, health and fitness data can be used according to user preferences to provide insights into their overall health status, or it can be used as positive feedback to individuals using the technology to pursue health goals.
[0084] This disclosure assumes that entities responsible for collecting, analyzing, disclosing, transmitting, storing, or otherwise using such personal information data will comply with established privacy policies and / or privacy practices. Specifically, it is expected that such entities will implement and consistently apply privacy practices generally recognized as meeting or exceeding industry or governmental requirements for protecting user privacy. Such information regarding the use of personal data should be prominently displayed and easily accessible to the user, and should be updated as the collection and / or use of data changes. Users' personal information should be collected only for lawful use. Furthermore, such collection / sharing should only occur after receiving user consent or other lawful grounds provided for in applicable law. In addition, such entities should consider taking any necessary steps to protect and safeguard access to such personal information data and ensure that others with access to personal information data comply with their privacy policies and processes. Additionally, such entities may be subject to third-party evaluations to demonstrate their compliance with widely accepted privacy policies and practices. Furthermore, policies and practices should be tailored to the specific types of personal information data collected and / or accessed, and made applicable to applicable laws and standards, including specific jurisdictional considerations that may be used to impose higher standards. For example, in the United States, the collection or access to certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA); while health data in other countries may be subject to other regulations and policies and should be handled accordingly.
[0085] Regardless of the foregoing, this disclosure also envisions specific implementations allowing users to selectively block the use or access to their personal information data. That is, this disclosure anticipates providing hardware and / or software components to prevent or block access to such personal information data. For example, in the case of video conferencing, this technology can be configured to allow users to opt-in or opt-out at any time during or after service registration to participate in the collection of personal information data. In addition to providing opt-in and opt-out options, this disclosure envisions providing notifications related to access to or use of personal information. For example, users may be notified when downloading an application that their personal information data will be accessed, and then reminded again just before the application accesses the personal information data.
[0086] Furthermore, the purpose of this disclosure is to manage and process personal information data to minimize the risk of unintentional or unauthorized access or use. Once data is no longer needed, this risk can be minimized by limiting data collection and deleting data. Additionally, and where applicable, including in certain health-related applications, data deidentification can be used to protect user privacy. Deidentification can be facilitated, where appropriate, by removing identifiers, controlling the amount or specificity of stored data (e.g., collecting location data at the city level rather than the address level), controlling how data is stored (e.g., aggregating data among users), and / or other methods such as differentiated privacy.
[0087] Therefore, while this disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, it is also contemplated that various embodiments can be implemented without access to such personal information data. That is, various embodiments of the present invention will not be unable to function properly due to the absence of all or part of such personal information data.
[0088] It should be understood that the specific order or hierarchical structure of the blocks in the process disclosed in this invention is an example of an exemplary method. Based on design preferences, it should be understood that the specific order or hierarchical structure of the blocks in the process may be rearranged or all illustrated blocks may be executed. Any block within these blocks may be executed simultaneously. In one or more embodiments, multitasking and parallel processing may be advantageous. Furthermore, the division of various system components in the above embodiments should not be construed as requiring such division in all embodiments, and it should be understood that program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
[0089] As used in this specification and any claim of this patent application, the terms "base station," "receiver," "computer," "server," "processor," and "memory" refer to electronic devices or other technical devices. These terms exclude persons or groups of persons. For the purposes of this specification, the terms "display" or "being displayed" mean displaying on an electronic device.
[0090] As used herein, the phrase "at least one of" following a series of items separated by the terms "and" or "or" modifies the list as a whole, not each member of the list (i.e., each item). The phrase "at least one of" does not require selection of at least one of each of the listed items; rather, it allows for the inclusion of at least one of any one item and / or at least one of any combination of items and / or at least one of each item. For example, the phrases "at least one of A, B, and C" or "at least one of A, B, or C" respectively refer to only A, only B, or only C; any combination of A, B, and C; and / or at least one of each of A, B, and C.
[0091] The predicates “configured to,” “operable to,” and “programmed to” do not imply any specific tangible or intangible modification to a particular subject but are intended to be used interchangeably. In one or more embodiments, a processor configured to monitor and control operations or components may also mean that the processor is programmed to monitor and control operations or that the processor is operable to monitor and control operations. Similarly, a processor configured to execute code may be interpreted as a processor programmed to execute code or operable to execute code.
[0092] Phrases such as aspect, that aspect, on the other hand, some aspects, one or more aspects, implementation, that implementation, another implementation, some implementations, one or more implementations, implementation scheme, that implementation scheme, another implementation scheme, some implementation schemes, one or more implementation schemes, configuration, that configuration, other configuration, some configurations, one or more configurations, subject matter technology, disclosure, this disclosure, other variations thereof, etc., are for convenience only and do not imply that disclosures involving one or more such phrases are essential to the subject matter technology, nor do they imply that such disclosures apply to all configurations of the subject matter technology. Disclosures involving one or more such phrases may apply to all configurations or one or more configurations. Disclosures involving one or more such phrases may provide one or more examples. Phrases such as aspect or some aspects may refer to one or more aspects, and this applies similarly to the other foregoing phrases.
[0093] The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” or “example” is not necessarily to be construed as preferred or superior to other specific embodiments. Furthermore, the terms “comprising,” “having,” etc., as used in the specification or claims, are intended to be inclusive, similar to how “comprising” is interpreted when used as a transitional word in the claims.
[0094] All structural and functional equivalents of elements throughout the various aspects described herein that are known or later become apparent to those skilled in the art are expressly incorporated herein by reference and are intended to be covered by the claims. Furthermore, nothing disclosed herein is intended to be made public, regardless of whether such disclosure is expressly stated in the claims. No claim element should be interpreted in accordance with 35 U.S.SC §112(f) unless the element is expressly stated using the phrase “means for…” or, in the case of a method claim, using the phrase “step for…”.
[0095] The preceding descriptions are provided to enable those skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be apparent to those skilled in the art, and the general principles defined herein may be applied to other aspects. Therefore, this claim is not intended to be limited to the aspects shown herein, but rather to be consistent with the language of the claim, wherein references to elements in singular values are not intended to mean “only one,” but rather “one or more,” unless specifically indicated. Unless otherwise specifically stated, the term “some” means one or more. Male pronouns (e.g., his) include female and neutral (e.g., her and its), and vice versa. Titles and subtitles (if any) are used for convenience only and do not limit the disclosure of this subject matter.
Claims
1. A method comprising: A request for a link to a content item associated with the second process is received by a first process executed on the electronic device and from a second process executed on the electronic device; Based on the request, the first process obtains a link to a content item in the content item associated with the second process from the link index, wherein the link index is stored locally on the electronic device and the link index includes links to content items transmitted via a third process executed on the electronic device. as well as The link to the content item obtained from the link index is provided by the first process for display by the second process, wherein the user's selection of the link causes the second process to display the content item.
2. The method according to claim 1, further comprising: The first process and the link index provide multiple links to content items associated with the second process and associated metadata. The first process sorts the plurality of links at least in part based on the associated metadata; as well as The first process provides a sorted set of links for display by the second process.
3. The method according to claim 2, further comprising: Receive messages from participants in the first session thread of the third process; Detect the first content link in the message; Specify the first content link detected for integration; as well as Store the first content link in the local link index.
4. The method of claim 3, wherein when the first content link in the first session thread is detected, the first content link is automatically specified in the local messaging application.
5. The method of claim 4, wherein the first content link is automatically specified based on pre-configured user settings, the user settings being set to specify all content links received in the session thread of the third process.
6. The method of claim 4, wherein the first content link is automatically specified based on pre-configured user settings, the user settings being set to specify all content links received in a specified session thread of the third process. The first session thread is the specified session thread.
7. The method of claim 3, wherein the first content link is specified in the third process in response to a user selection of the first content link.
8. The method of claim 7, wherein the first content link selected by the user is ranked higher than another content link automatically specified in the third process.
9. The method of claim 3, wherein storing the first content link to the local link index comprises: The first content link is parsed as a first parsed link, wherein the second process is able to identify and access the first parsed link; The first content link is parsed as a second parsed link, wherein a fourth process, executed on a computing device and different from the second process, is able to recognize and access the second parsed link; as well as The first resolved link and the second resolved link are stored in the local link index.
10. The method of claim 2, wherein the classified content links are detected in the active session thread of the third process, and wherein the method further comprises: Receive instructions on user selections of interface elements displayed in association with the content links of the second process; as well as In response to the indicated user selection, the active session thread is displayed in the user interface of the second process.
11. The method according to claim 2, further comprising: Receive instructions for user interaction with one of the content links in the hierarchical content links presented by the second process; The user interaction records are stored in a local interaction data repository; and the contents of the local interaction data repository and the remote interaction data repository are synchronized. The local interactive data repository is located on the electronic device, and the remote interactive data repository is located on another electronic device.
12. The method of claim 2, wherein the sorted plurality of links are hierarchically classified into a first set based on the sorting, a second set of links manually specified for integration, and a third set of links automatically specified for integration.
13. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations, including: A request for a link to a content item associated with the second process is received by a first process executed on the electronic device and from a second process executed on the electronic device; Based on the request, the first process obtains multiple links and associated metadata pointing to content items in the content items associated with the second process from the link index, wherein the link index is stored locally on the electronic device and the link index includes links pointing to content items transmitted via a third process executed on the electronic device. The first process sorts the plurality of links at least in part based on the associated metadata; as well as The first process provides a sorted plurality of links to the content item obtained from the link index for display by the second process, wherein the user's selection of one of the plurality of links causes the second process to display the content item associated with the selected link.
14. The non-transitory computer-readable medium of claim 13, further comprising: Receive messages from participants in the first session thread of the third process; Detect the first content link in the message; Specify the first content link for integration; as well as Store the first content link in the local link index.
15. The non-transitory computer-readable medium of claim 14, wherein storing the first content linked to the local link index comprises: The first content link is parsed as a first parsed link, wherein the second process is able to identify and access the first parsed link; The first content link is parsed as a second parsed link, wherein a fourth process, executed on a computing device and different from the second process, is able to recognize and access the second parsed link; as well as The first resolved link and the second resolved link are stored in the local link index.
16. The non-transitory computer-readable medium of claim 13, further comprising: Receive instructions for user interaction with one of the content links in the hierarchical content links presented by the second process; The user interactions are recorded and stored in a local interaction data repository. as well as Synchronize the contents of the local interactive data repository and the remote interactive data repository. The local interactive data repository is located on the electronic device, and the remote interactive data repository is located on another electronic device.
17. An apparatus comprising: The memory stores: Multiple computer programs; and A link index, which includes links to content items transmitted via a messaging application of the plurality of computer programs; and One or more processors, the one or more processors being configured to execute instructions of the plurality of computer programs to: The sorting application of the plurality of computer programs executing on the device and the client application of the plurality of computer programs executing on the device receive requests for links to content items associated with the client application; Based on the request, the sorting application obtains multiple links and associated metadata of the content items in the content items associated with the client application from the link index; The sorting application sorts the plurality of links at least in part based on the associated metadata; as well as The sorting application provides a sorted plurality of links to the content item obtained from the link index for display by the client application, wherein the user's selection of one of the plurality of links causes the client application to display the content item associated with the selected link.
18. The device of claim 17, wherein the one or more processors are further configured to: Receive messages from participants in the first session thread of the messaging application; Detect the first content link in the message; Specify the first content link for integration; and Store the first content link in the local link index.
19. The device of claim 18, wherein when the first content link in the first session thread is detected, the first content link is automatically specified in a local messaging application based on pre-configured user settings.
20. The device of claim 18, wherein the first content link is specified in the messaging application in response to a user selection of the first content link.