Application-independent messaging system
By designing an application-independent messaging system, the messaging barriers caused by users' use of different messaging applications are solved, cross-application messaging is realized, and the flexibility and usability of electronic messaging is improved.
Patent Information
- Application Number
- CN202310596395.5
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2017-12-29
- Filing Date
- 2018-08-08
- Publication Date
- 2025-06-24
- Estimated Expiration
- 2038-08-08
AI Technical Summary
In the existing electronic messaging system, if a user uses a messaging application different from that used by the recipient, the messages may not be transmitted and received normally.
An application-independent messaging system is designed to allow the sender to send messages and content through the system and to receive and access these messages and content without the need to install the same messaging application. The system exchanges data through the network and uses communication between the messaging server system and client devices to realize cross-application messaging.
Message delivery across different messaging applications is realized, ensuring that messages and content can be accessed by the recipient regardless of using negative messaging applications, improving the flexibility and availability of electronic messaging.
Smart Images

Figure CN116567556B_ABST
Abstract
Description
[0001] This application is a divisional application of Chinese Patent Application No. 201880057966.5. The filing date of the original application is August 8, 2018, the priority date is August 8, 2017, the date of entry into the Chinese National Phase is March 6, 2020, and the invention title is "Application-Independent Messaging System".
[0002] Priority Claims
[0003] This patent application claims the priority of U.S. Patent Application Serial No. 15 / 859,237, filed on December 29, 2017, which claims the priority of U.S. Provisional Patent Application Serial No. 62 / 542,629, filed on August 8, 2017. The priority of each of them is hereby claimed, and each of them is incorporated herein by reference in its entirety. Background of the Invention
[0004] The popularity of electronic messaging, particularly instant messaging, continues to grow. Users are increasingly sharing media content items such as electronic images and videos with each other. Users are also increasingly using their mobile devices to communicate with other users using chat and messaging programs. In some cases, a user's contacts may not use the same messaging application as the user. Embodiments of the present disclosure address these and other issues. Brief Description of the Drawings
[0005] In the drawings (which are not necessarily drawn to scale), the same numbers may describe the same components in different figures. The same numbers with different letter suffixes may represent different instances of similar components. In the figures of the drawings, some embodiments are shown by way of example and not limitation, wherein:
[0006] Figure 1 is a block diagram showing an example messaging system for exchanging data (e.g., messages and associated content) over a network.
[0007] Figure 2 is a block diagram showing further details regarding a messaging system according to an exemplary embodiment.
[0008] Figure 3 is a schematic diagram showing data that can be stored in a database of a messaging server system according to various exemplary embodiments.
[0009] Figure 4 is a flowchart of an exemplary process according to aspects of the present disclosure.
[0010] Figures 5A - 5F is shown in Figure 4 is a screenshot showing some aspects of the method described therein.
[0011] Figure 5G and 5H are diagrams showing various aspects of the present disclosure.
[0012] Figure 6 is a block diagram showing a representative software architecture that can be used in conjunction with the various hardware architectures described herein.
[0013] Figure 7 is a block diagram showing components of a machine capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methods discussed herein. Detailed Description
[0014] The following description includes systems, methods, techniques, instruction sequences, and computer program products that embody illustrative embodiments of the present disclosure. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of the various embodiments of the inventive subject matter. However, it will be apparent to those skilled in the art that the embodiments of the inventive subject matter may be practiced without these specific details. Generally, well-known instruction instances, protocols, structures, and techniques need not be shown in detail.
[0015] Among other aspects, embodiments of the present disclosure improve the functionality of electronic messaging software and systems by allowing a sender to send messages and content using a messaging system and by allowing a recipient to access the message and content even if the recipient does not have permission to use the messaging system.
[0016] Figure 1 is a block diagram showing an example of a messaging system 100 for exchanging data (e.g., messages and associated content) over a network. The messaging system 100 includes a plurality of client devices 102, each of which hosts a plurality of applications, including a messaging client application 104. Each messaging client application 104 is communicatively coupled via a network 106 (e.g., the Internet) to other instances of the messaging client application 104 and to a messaging server system 108. As used herein, the term "client device" may refer to any machine that interfaces with a communication network (e.g., network 106) to obtain resources from one or more server systems or other client devices. A client device may be, but is not limited to, a mobile phone, a desktop computer, a laptop computer, a portable digital assistant (PDA), a smart phone, a tablet computer, a superbook, a netbook, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other communication device by which a user may access the network.
[0017] In Figure 1In the illustrated example, each messaging client application 104 is capable of communicating with and exchanging data with another messaging client application 104 and a messaging server system 108 via a network 106. The data exchanged between messaging client applications 104 and between a messaging client application 104 and the messaging server system 108 includes functionality (e.g., commands to invoke functionality) and payload data (e.g., text, audio, video, or other multimedia data).
[0018] The network 106 may include or operate in conjunction with the following: ad hoc networks, intranets, extranets, virtual private networks (VPNs), local area networks (LANs), wireless LANs (WLANs), wide area networks (WANs), wireless WANs (WWANs), metropolitan area networks (MANs), 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 network, another type of network, or a combination of two or more such networks. For example, the network or a portion of the network may include a wireless or cellular network, and the coupling may be a code division multiple access (CDMA) connection, a global system for mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling may implement any one of a variety of types of data transfer technologies, such as single-carrier radio transmission technology (1xRTT), evolved data optimized (EVDO) technology, general packet radio service (GPRS) technology, GSM enhanced data rates for GSM evolution (EDGE) technology, 3rd 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 standards defined by various standards-setting organizations, other remote protocols, or other data transfer technologies.
[0019] The messaging server system 108 provides server-side functionality to a particular messaging client application 104 via the network 106. Although certain functions of the messaging system 100 are described herein as being performed by the messaging client application 104 or by the messaging server system 108, it will be understood that the location of certain functions within the messaging client application 104 or the messaging server system 108 is a design choice. For example, it may be technically preferred to initially deploy certain technologies and functions within the messaging server system 108, but later migrate the technologies and functions to the messaging client application 104 where the client device 102 has sufficient processing power.
[0020] The messaging server system 108 supports various services and operations provided to the messaging client application 104. Such operations include sending data to the messaging client application 104, receiving data from the messaging client application 104, and processing data generated by the messaging client application 104. For example, the data may include message content, client device information, geographical location information, media annotations and overlays, message content persistence conditions, social network information, and live event information. Data exchange within the messaging system 100 is invoked and controlled via functions available in the user interface (UI) of the messaging client application 104.
[0021] Turning now to the messaging server system 108, the application programming interface (API) server 110 is coupled to the application server 112 and provides a programming interface to the application server 112. The application server 112 is communicatively coupled to the database server 118, which facilitates access to the database 120 in which data associated with messages processed by the application server 112 is stored.
[0022] Specifically processing the application programming interface (API) server 110, which receives and sends message data (e.g., commands and message payloads) between the client device 102 and the application server 112. Specifically, the application programming interface (API) server 110 provides a set of interfaces (e.g., routines and protocols) that can be invoked or queried by the messaging client application 104 in order to invoke the functions of the application server 112. The application programming interface (API) server 110 exposes various functions supported by the application server 112, including account registration, login functionality, sending messages from a specific messaging client application 104 to another messaging client application 104 via the application server 112, sending electronic media files (e.g., electronic images or videos) from the messaging client application 104 to the messaging server application 114, and possible access by another messaging client application 104, setting of media data collections (e.g., stories), obtaining of the friend list of the user of the client device 102, obtaining of such collections, obtaining of messages and content, adding and deleting friends to and from the social graph, locating friends within the social graph, and opening and application events (e.g., related to the messaging client application 104).
[0023] The application server 112 hosts multiple applications and subsystems, including a messaging server application 114, an image processing system 116, and a social networking system 122. The messaging server application 114 implements various message processing techniques and functions, particularly those related to the aggregation and other processing of content (e.g., text and multimedia content, which includes image or video segments) included in messages received from multiple instances of the messaging client application 104. As will be described in further detail, text and media content from multiple sources can be aggregated into content collections (e.g., referred to as stories or galleries). The messaging server application 114 then makes these collections available to the messaging client application 104. Given the hardware requirements for such processing, the messaging server application 114 may also perform other processor- and memory-intensive data processing on the server side.
[0024] The application server 112 also includes an image processing system 116, which is dedicated to performing various image processing operations, typically on electronic images or videos received within the payloads of messages at the messaging server application 114.
[0025] The social networking system 122 supports various social networking function services and makes these functions and services available to the messaging server application 114. To this end, the social networking system 122 maintains and accesses an entity graph 304 within the database 120. Examples of functions and services supported by the social networking system 122 include the identification of other users who have a relationship with a particular user or are "followed" by a particular user in the messaging system 100, as well as the identification of other entities and interests of a particular user.
[0026] The application server 112 is communicatively coupled to one or more database servers 118, which facilitate access to the database 120 in which data associated with messages processed by the messaging server application 114 is stored.
[0027] Some embodiments may include one or more wearable devices, such as a pendant having an integrated camera that is integrated with, communicates with, or is coupled to the client device 102. Any desired wearable device can be used in conjunction with embodiments of the present disclosure, such as a watch, glasses, goggles, headphones, wristbands, earbuds, clothing (e.g., a hat or jacket having integrated electronic devices), clip-on electronic devices, or any other wearable device.
[0028] Figure 2is a block diagram showing further details regarding a messaging system 100 according to an exemplary embodiment. Specifically, the messaging system 100 is shown to include a messaging client application 104 and an application server 112, which in turn includes a plurality of subsystems, namely a short-term timer system 202, a collection management system 204, and a annotation system 206.
[0029] The short-term timer system 202 is responsible for implementing temporary access to content permitted by the messaging client application 104 and the messaging server application 114. To this end, the short-term timer system 202 includes a plurality of timers that selectively display and enable access to messages and associated content via the messaging client application 104 based on a duration and display parameters associated with the message or a collection of messages (e.g., a story).
[0030] The collection management system 204 is responsible for managing collections of media (e.g., collections of text, images, video, and audio data). In some examples, collections of content (e.g., messages, including images, video, text, and audio) may be organized into an "event library" or "event story". Such collections may be available for a specified period of time (such as the duration of the event to which the content pertains). For example, content related to a concert may be provided as a "story" for the duration of that concert. The collection management system 204 may also be responsible for publishing an icon that notifies the user interface of the messaging client application 104 of the presence of a particular collection.
[0031] The collection management system 204 additionally includes a curation interface 208 that allows a collection manager to manage and curate a particular collection of content. For example, the curation interface 208 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 204 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In certain embodiments, users may be compensated for including user-generated content in a collection. In such cases, the curation interface 208 operates to automatically pay such users for the use of their content.
[0032] The annotation system 206 provides various functions that enable a user to annotate or otherwise modify or edit media content associated with a message. For example, the annotation system 206 provides functions related to the generation and publication of media overlays for messages processed by the messaging system 100. The annotation system 206 operably provides a media overlay to the messaging client application 104 based on the geographical location of the client device 102 (e.g., Filter). In another example, the annotation system 206 is operable to provide a media overlay to the messaging client application 104 based on other information such as the social network information of a user of the client device 102. The media overlay may include audio and visual content and 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 may be applied to a media content item (e.g., an image or video) at the client device 102. For example, the media overlay includes text that may be overlaid on a photo / digital image generated by the client device 102. In another example, the media overlay includes an identification of a location overlay (e.g., Venice Beach), the name of a live event, or the name of a merchant overlay (e.g., Beach Café). In another example, the annotation system 206 uses the geographical location of the client device 102 to identify a media overlay that includes the name of a merchant at the geographical location of the client device 102. The media overlay may include other markers associated with the merchant. The media overlay may be stored in the database 120 and accessed via the database server 118.
[0033] In some exemplary embodiments, as discussed in more detail below, embodiments of the present disclosure may generate, display, distribute, and apply media overlays for media content items. For example, an embodiment may utilize a media content item generated by the client device 102 (e.g., an image or video captured using a digital camera coupled to the client device 102) to generate a media overlay that may be applied to other media content items.
[0034] Figure 3 FIG. 300 is a schematic diagram showing data 300 stored in the database 120 of the messaging server system 108 according to certain exemplary embodiments. Although the content of the database 120 is shown as including a plurality of tables, it should be understood that the data may also be stored in other types of data structures (e.g., as an object-oriented database).
[0035] The database 120 includes message data stored within a message table 314. An entity table 302 stores entity data, including an entity graph 304. Entities that maintain records within the entity table 302 may include individuals, corporate entities, organizations, objects, locations, events, etc. Whatever the type, any entity for which the messaging server system 108 stores data related to may be an identified entity. A unique identifier, as well as an entity type identifier (not shown), is provided for each entity.
[0036] The entity graph 304 additionally stores information about the relationships and associations between entities. By way of example only, such relationships may be social relationships, relationships based on professional (e.g., working in the same company or organization) interests, or activity-based relationships.
[0037] The database 120 also stores annotation data (e.g., in the form of filters) in the annotation table 312. The filters (whose data is stored within the annotation table 312) are associated with videos (whose data is stored in the video table 310) and / or images (whose data is stored in the image table 308) and are applied to the videos or images. In one example, a filter is an overlay that is displayed as covering an image or video during presentation to a recipient user. Filters can be of various types, including filters selected by a sending user from a filter gallery presented to the sending user by the messaging client application 104 when the sending user is composing a message.
[0038] Other types of filters include location-based filters (also known as geo-filters), which can be presented to the sending user based on a geographical location. For example, based on geographical location information determined by the GPS unit of the client device 102, the messaging client application 104 can present location-based filters specific to a neighborhood or special location within the user interface. Another type of filter is a data filter, which can be selectively presented to the sending user by the messaging client application 104 based on other input or information collected by the client device 102 during the message creation process. Examples of data filters include the current temperature at a specific location, the current speed at which the sending user is traveling, the battery life of the client device 102, or the current time. Other annotation data that can be stored within the image table 308 is so-called "lens" data. A "lens" can be a real-time special effect and sound that can be added to an image or video.
[0039] As described above, the video table 310 stores video data, which, in one embodiment, is associated with messages for which records are maintained within the message table 314. Similarly, the image table 308 stores image data associated with messages for which message data is stored in the entity table 302. The entity table 302 can associate various annotations from the annotation table 312 with various images stored in the image table 308 and various videos stored in the video table 310.
[0040] The story table 306 stores data about a collection of messages and associated image, video, or audio data, which is compiled into a collection (e.g., a story or gallery). The creation of a specific collection can be initiated by a specific user (e.g., each user who maintains records within the entity table 302). A user can create a "personal story" in the form of a collection of content that has already been created and sent / broadcast by that user. To this end, the user interface of the messaging client application 104 can include user-selectable icons to enable the sending user to add specific content to his or her personal story.
[0041] The collection can also form a "Live Story", which is a collection of content from multiple users and is created manually, automatically, or using a combination of manual and automatic techniques. For example, a "Live Story" can form a curated stream of user-submitted content from different locations and events. For example, options can be presented to a user (whose client device has location services enabled and who is at a public location event at a specific time) via the user interface of the messaging client application 104 to contribute content to a specific Live Story. The messaging client application 104 can identify a Live Story to the user based on his or her location. The end result is a "Live Story" told from a community perspective.
[0042] Another type of content collection is called a "Location Story", which enables a user (whose client device 102 is located at a specific geographical location (e.g., on a college or university campus)) to contribute to a specific collection. In some embodiments, contributing to a Location Story may require a second degree of authentication that the end user belongs to a specific organization or other entity (e.g., is a student on a university campus).
[0043] Embodiments of the present disclosure can generate and present customized images for use within electronic messages / communications, such as Short Message Service (SMS) or Multimedia Message Service (MMS) texts and emails. The customized images can also be used in conjunction with the SNAPCHAT Stories, SNAPCHAT filters, and short messaging functions discussed herein. Embodiments of the present disclosure can use any form of electronic communication (such as SMS text, MMS text, email, and other communications) to send and receive electronic communications that include media content items, media overlays, and / or other content (or links to the content described below).
[0044] Figure 4Illustrates an exemplary process in accordance with various aspects of the present disclosure. In this example, method 400 includes receiving, from a sender (405), content suitable for display by a software application and addressed to a recipient, and determining that the software application is not installed on the recipient's computing device (410). The method further includes: in response to determining that the software application is not installed on the recipient's computing device: identifying an electronic communication supported by the recipient's computing device (415), generating an electronic communication in a supported format that includes a link to the content (420), and sending the electronic communication to the recipient's computing device (425). Method 400 further includes: receiving a selection of the link to the content from the recipient's computing device (430), displaying the content on the recipient's computing device (435), and displaying on the recipient's computing device one or more of: a message, a notification, and a proposal to install the software application (440). The steps of method 400 may be performed in whole or in part, may be combined with each other and with some or all of the steps in other methods, and may be performed by any number of different systems, such as the systems described in Figure 1 and 7 the systems described in
[0045] Embodiments of the present disclosure may receive content suitable for use by a variety of different software applications, such as messaging applications (405). For example, a first user may use a messaging application (such as Snapchat by Snap Inc.) installed on the first user's computing device to generate content (such as an image, video, audio, etc.). The messaging software application may provide various customization features that allow the content to be displayed on the user's computing device, such as by applying the various filters described above. Figure 5A Illustrates an example of content generated by a first user's computing device (a smart phone in this example), namely, an image captured using the smart phone's camera and applying multiple media overlays (two smiling face "stickers" and text in the lower left corner that makes an invitation to watch a movie).
[0046] The content may be addressed to or otherwise specified for distribution to any number of different users or computing devices. For example, a first user may use a messaging software application installed on the user's computing device (e.g., the first user's smart phone or other mobile device) to generate content (e.g., an image with a filter) and address the content to a group of other users in the contact list stored on the first user's device.
[0047] The system can determine (410) whether the software suitable for displaying the content (in this example, a messaging software application) is installed on the computing device associated with the recipient user. Continuing with the above example, the system can determine that among the three recipient users, the computing device of one user (hereinafter referred to as the "second user") does not have the software installed, while the software is installed on the devices of the other two users. In this case, the system can normally send the content to the devices of the two users with the software application.
[0048] The system can use various different methods and information to determine (410) whether the software is installed on the user's computing device. In some embodiments, the system sends a request to the recipient's computing device to identify whether the software is installed. Additionally or alternatively, the system can scan the computing device's registry to determine whether the software application is installed. The system can also send a communication to the device designated for the software application and use the response from the software application (or the lack of response if the application does not exist) to determine whether the software is installed. The system can also attempt to identify the recipient user in the user registry of the software application maintained by the system (e.g., by determining whether the user has an account associated with the software).
[0049] For the device on which the system determines that the software is not installed (e.g., the computing device of the second user in the above example), the system identifies (415) the communication format currently supported by the device. The system can identify the supported communication format in various different ways, including by detecting various messaging applications running on the device as described in the previous paragraph. For example, the system can identify the alternative messaging applications present on the user device, such as an email application or a text messaging application capable of supporting Short Message Service (SMS) and Multimedia Messaging Service (MMS) text messages. The system generates (420) a communication that is in the supported format and includes a link to the first user-generated content on the first computing device, and the system sends (425) the electronic communication to the device. In some embodiments, the content can be stored (e.g., in a database communicating with the system) and the link can point to the stored content.
[0050] In Figure 4 In the exemplary method 400 shown, the system receives a selection (430) of the link in the communication (e.g., the second user selects the link via the user interface of the second user's computing device), and displays the content (435) on the display screen of the second user's computing device. In one example, when the second user selects a link in Hypertext Markup Language (HTML) format, the system displays the content via a web-based interface that displays the content. The system can display content such as Figure 5A the image shown.
[0051] The system can display (440) various messages, notifications, offers, and other content to a sending user (e.g., the first user in the above example) and a receiving user (e.g., the second user in the above example). For example, in Figure 5B , the system displays (440) a message on the display screen of the first user, which indicates that one of the recipients of the user's content (from Figure 5A ) has not installed the messaging application (Snapchat) for viewing the message, and indicates that the content will instead be provided to the recipient via a link sent as an SMS text. Figure 5C depicts an SMS text message displayed on the screen of the second user's computing device. In this example, the text message contains information about the content and a link to the content.
[0052] In other aspects, embodiments of the present disclosure can help enforce viewing restrictions on content. For example, in some embodiments, the system can cause the content to be displayed on the display screen of the user's computing device for a predetermined period of time and / or a predetermined number of times. For example, in Figure 5D , the system displays a message (440) on the display screen of the second user's computing device, which notifies the second user that the content (in this example, "Snap") can only be replayed once and provides the second user with an option to replay / redisplay the content. Additionally, Figure 5D shows an example of a proposal to install the messaging software application (Snapchat) used to create the content. In this way, embodiments of the present disclosure not only provide access to content for users who do not have a specific software application, but also help expand the user base of the software application by presenting the content generated by the application to non-users.
[0053] Once the restriction requirements are met, the system can cause the user's system to display a message (440) indicating that the content is no longer accessible. Now referring to Figure 5E , for example, a message is displayed to the user after the content has been displayed a predetermined number of times. A similar message can be displayed after the expiration of a predetermined time limit for viewing the content. The system can also delete the content (e.g., delete it from storage in the database pointed to by the link) and display a generic message indicating that the content cannot be found after the deletion, as shown in Figure 5F .
[0054] In some embodiments, the system may allow a predetermined number of views of content without the user installing a software application, but pre-empts further such use. For example, a first user may create multiple content items and address them to be sent to a second user via the system. The system may generate and send to the second user a corresponding communication that includes a respective link for each content item in a first subset of the content items, and also display (e.g., on a display screen of the second user's computing device) a notification regarding the following: viewing the content in a second subset of the content items requires installing a software application on the second user's computing device. In a specific example, consider that a first user generates five content items (e.g., an image with stickers as in Figure 5A ), and addresses them to a second user. The system may provide an SMS text message with links to two of the messages, and may also provide a notification that the second user must download a messaging software application to view the remaining three.
[0055] Figure 5G Another exemplary process in accordance with various aspects of the present disclosure is shown. In step 1 of this example, a first user of the Snapchat messaging application creates content ("Snap") and sends the address of the content to a second user via the system at "app.snapchat.com". The system creates a record associated with the content in a database for later retrieval and monitoring (e.g., for compliance with short-lived access and other restrictions on the read / write lifecycle of the content). In step 2, the system determines that the second user's computing device does not have the Snapchat messaging application and loads the web-based "SnapPlayer Web App" to display the content. The content is loaded (step 3) and displayed (step 4). In response to the expiration of a predetermined time period and / or displaying the content a predetermined number of times, attempts to view the snapshot subsequently may be blocked (step 5). In Figure 5H An example of the lifecycle of a link to the content is similarly described in the diagram shown. In this example, events are listed on the X and Y axes of the diagram, boxes indicate intersections between events, and arrows between the boxes indicate state changes.
[0056] Software Architecture
[0057] Figure 6 is a block diagram showing an exemplary software architecture 606 that may be used in conjunction with the various hardware architectures described herein. Figure 6 is a non-limiting example of a software architecture, and it can be understood that many other architectures may be implemented to facilitate the functions described herein. The software architecture 606 may be in, such as Figure 7executed on the hardware of machine 700, which includes processor 704, memory 714, I / O components 718, etc. Representative hardware layer 652 is shown and may represent, for example Figure 7 machine 700. Representative hardware layer 652 includes a processing unit 654 with associated executable instructions 604. The executable instructions 604 represent the executable instructions of software architecture 606, including implementations of the methods, components, etc. described herein. Hardware layer 652 also includes a memory or storage module memory / storage device 656, which also has executable instructions 604. Hardware layer 652 may also include other hardware 658.
[0058] As used herein, the term "component" refers to a device, physical entity, or logic having boundaries defined by a function or subroutine call, a branch point, an application programming interface (API), or other technical definitions that provide a specific processing or control function. Components can be combined with other components via their interfaces to perform machine processes. A component can be a packaged functional hardware unit designed to work with other components and a part of a program that typically performs related functions.
[0059] Components can be software components (e.g., code embodied on a machine-readable medium) or hardware components. A "hardware component" is a tangible unit capable of performing certain operations and can be physically configured or arranged in some way. In various exemplary embodiments, one or more computer systems (e.g., a stand-alone computer system, a client computer system, or a server computer system) or one or more hardware components of a computer system (e.g., a processor or a group of processors) can be configured by software (e.g., an application or a part of an application) to operate as a hardware component that performs certain operations as described herein. A hardware component can also be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware component can include dedicated circuitry or logic permanently configured to perform certain operations.
[0060] 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 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. After being configured by the software, the hardware component becomes a specific machine (or a specific component of a machine) that is uniquely customized to perform the configured function and is no longer a general-purpose processor. It should be understood that the decision to implement a hardware component mechanically in dedicated and permanently configured circuitry or in temporarily configured circuitry (e.g., configured by software) can be driven by cost and time considerations.
[0061] A processor can be or include any circuit or virtual circuit (a physical circuit simulated by logic executed on an actual processor) that manipulates data values in accordance with control signals (e.g., "commands", "operation codes", "machine code", etc.) and generates corresponding output signals applied to operate a machine. For example, a processor can be 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), or any combination thereof. A processor can further be a multi-core processor having two or more independent processors (sometimes referred to as "cores") that can execute instructions simultaneously.
[0062] Accordingly, the phrase "hardware component" (or "hardware-implemented component") should be understood to encompass a tangible entity, i.e., a physical structure, a permanently configured (e.g., hard-wired) or temporarily configured (e.g., programmed) entity that operates or performs some operation described herein in some manner. Considering an embodiment in which a hardware component is temporarily configured (e.g., programmed), it is not necessary to configure or instantiate each of the hardware components at any given moment. For example, in a case where a hardware component includes a general-purpose processor that is configured by software to be a dedicated processor, the general-purpose processor can be configured to be a respective different dedicated processor (e.g., including different hardware components) at different times. The software accordingly configures a particular one or more processors, e.g., constituting a particular hardware component at one moment and different hardware components at different moments. Hardware components can provide information to and receive information from other hardware components. Accordingly, the described hardware components can be regarded as communicatively coupled. In cases where multiple hardware components are present, communication can be achieved through signal transmission (e.g., via appropriate circuitry and buses) between two hardware components or among more than two hardware components. In an embodiment in which multiple hardware components are configured or instantiated at different times, communication between the hardware components can be achieved, e.g., by storage and retrieval of information in a memory structure accessible to the multiple hardware components.
[0063] For example, a hardware component can perform an operation and store the output of the operation in a memory device communicatively coupled thereto. Another hardware component can then access the memory device at a later time to obtain and process the stored output. The hardware component can also initiate communication with an input or output device and can operate on resources such as a collection 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., by software) or permanently configured to perform the associated operations. Whether temporarily or permanently configured, the processor can comprise a processor-implemented component for performing 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 operations of the method can be performed by one or more processors or processor-implemented components.
[0064] In addition, one or more processors can also operate to support the performance of associated operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some of the operations can be performed by a group of computers (as examples of machines including processors), which can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application programming interfaces (APIs)). The performance of certain operations can be distributed among processors, not only residing within a single machine but also deployed across multiple machines. In some exemplary embodiments, the processor or processor-implemented component can be located in a single geographical location (e.g., within a home environment, an office environment, or a server farm). In other exemplary embodiments, the processor or processor-implemented component can be distributed across multiple geographical locations.
[0065] In Figure 6 the exemplary architecture, the software architecture 606 can be conceptually envisioned as a stack of layers, where each layer provides a specific functionality. For example, the software architecture 606 can include layers such as an operating system 602, libraries 620, applications 616, and a presentation layer 614. In operation, an application 616 or other component within a layer can call an application programming interface (API) API call 608 through the software stack and receive a message 612 in response to the API call 608. The layers shown are representative in nature, and not all software architectures have all layers. For example, some mobile or specialized operating systems may not provide a framework / middleware 618, while other operating systems can provide such layers. Other software architectures can include additional layers or different layers.
[0066] The operating system 602 can manage hardware resources and provide common services. The operating system 602 can include, for example, a kernel 622, services 1224, and drivers 626. The kernel 622 can act as an abstraction layer between the hardware and other software layers. For example, the kernel 622 can be responsible for memory management, processor management (e.g., scheduling), component management, networking, security settings, etc. The services 624 can provide other common services for other software layers. The drivers 626 are responsible for controlling or interfacing with the underlying hardware. For example, the drivers 626 include display drivers, camera drivers, drivers, flash drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi drivers, audio drivers, power management drivers, etc., depending on the hardware configuration.
[0067] The libraries 620 provide a common infrastructure used by the applications 616 or other components or layers. The libraries 620 provide functions that allow other software components to perform tasks in a way that is easier than directly interfacing with the underlying operating system 602 functions (e.g., the kernel 622, services 624, or drivers 626). The libraries 620 can include system libraries 644 (e.g., C standard libraries), which can provide functions such as memory allocation functions, string manipulation functions, mathematical functions, etc. Additionally, the libraries 620 can include API libraries 646, such as media libraries (e.g., libraries for supporting the rendering and manipulation of various media formats such as MPREG4, H.264, MP3, AAC, AMR, JPG, PNG), graphics libraries (e.g., the OpenGL framework that can be used to render 2D and 3D in graphical content on a display), database libraries (e.g., SQLite that can provide various relational database functions), web libraries (e.g., WebKit that can provide web browsing functions), etc. The libraries 620 can also include various other libraries 648 to provide many other APIs to the applications 616 and other software components / modules.
[0068] The framework / middleware 618 (sometimes also referred to as middleware) provides a higher-level common infrastructure that can be used by the applications 616 or other software components / modules. For example, the framework / middleware 618 can provide various Graphical User Interface (GUI) functions, advanced resource management, advanced location services, etc. The framework / middleware 618 can provide a wide range of other APIs that can be used by the applications 616 or other software components / modules, some of which can be specific to a particular operating system 602 or platform.
[0069] The application 616 includes built-in applications 638 or third-party applications 640. Examples of representative built-in applications 638 may include, but are not limited to, a contacts application, a browser application, a book reader application, a location application, a media application, a messaging application, and / or a gaming application. The third-party applications 640 may include applications developed using an Android TM or iOS TM software development kit (SDK) by entities other than the vendor of a particular platform, and may be mobile software running on a mobile operating system such as iOS TM , Android TM , Phone or other mobile operating systems. The third-party applications 640 may invoke API calls 608 provided by the mobile operating system (such as the operating system 602) to facilitate the functions described herein.
[0070] The application 616 may use built-in operating system functions (e.g., the kernel 622, services 624, or drivers 626), libraries 620, and frameworks / middleware 618 to create a user interface to interact with the users of the system. Alternatively or additionally, in some systems, the interaction with the user may occur through a presentation layer (such as the presentation layer 614). In these systems, the application / component "logic" may be separated from the aspects of the application / component that interact with the user.
[0071] Figure 7 is a block diagram showing components (also referred to herein as "modules") of a machine 700 capable of reading instructions from a machine-readable medium (e.g., a machine-readable storage medium) and performing any one or more of the methods discussed herein. Specifically, Figure 7FIG. 0 shows a graphical representation of a machine 700 in the example form of a computer system within which instructions 710 (e.g., software, program, application, applet, application software, or other executable code) can be executed to cause the machine 700 to perform any one or more of the methods discussed herein. Thus, the instructions 710 can be used to implement the modules or components described herein. The instructions 710 transform the general, unprogrammed machine 700 into a particular machine 700 programmed to perform the described and illustrated functions in the described manner. In alternative embodiments, the machine 700 operates as a stand-alone device or can be coupled (e.g., networked) to other machines. In a networked deployment, the machine 700 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 700 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 smartwatch), a smart home device (e.g., a smart appliance), other smart devices, a network device, a network router, a network switch, a network bridge, or any machine capable of sequentially or otherwise executing the instructions 710 that specify actions to be taken by the machine 700. Further, although only a single machine 700 is shown, the term "machine" can also be regarded as including a collection of machines that individually or jointly execute the instructions 710 to perform any one or more of the methods discussed herein.
[0072] The machine 700 can include a processor 704, a memory / storage device 706, and I / O components 718, which can be configured to communicate with each other, for example, via a bus 702. The memory / storage device 706 can include a memory 714 (such as a main memory or other memory storage device) and a storage unit 716, both of which can be accessed by the processor 704, such as via the bus 702. The storage unit 716 and the memory 714 store the instructions 710 embodying any one or more of the methods or functions described herein. During the execution of the machine 700, the instructions 710 can also reside, entirely or partially, within at least one of the memory 714, the storage unit 716, the processor 704 (e.g., within a cache memory of the processor), or any suitable combination thereof. Thus, the memory 714, the storage unit 716, and the memory of the processor 704 are examples of machine-readable media.
[0073] As used herein, terms such as "machine-readable medium", "computer-readable medium", etc. can refer to components, devices, or other tangible media capable of storing instructions and data temporarily or permanently. Examples of such media can include, but are not limited to, random access memory (RAM), read-only memory (ROM), buffer memory, flash memory, optical media, magnetic media, cache memory, other types of memory (e.g., erasable programmable read-only memory (EEPROM)), or any suitable combination thereof. The term "machine-readable medium" should be considered to include a single medium or multiple media capable of storing instructions (e.g., a centralized or distributed database, or associated caches and servers). The term "machine-readable medium" can also be considered to include any combination of media or multiple media capable of storing instructions (e.g., code) executable by a machine such that the instructions, when executed by one or more processors of the machine, cause the machine to perform any one or more of the methods described herein. Thus, "machine-readable medium" can refer to a single storage device or device, as well as a "cloud-based" storage system or storage network comprising multiple storage devices or devices. The term "machine-readable medium" excludes signals themselves.
[0074] The I / O components 718 can include various components to provide a user interface for receiving input, providing output, generating output, sending information, exchanging information, collecting measurements, etc. The specific I / O components 718 included in the user interface of a particular machine 700 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 may not include such a touch input device. It can be understood that the I / O components 718 can include Figure 7Many other components not shown. The grouping of I / O components 718 by function is for simplicity of the following discussion only and the grouping is in no way restrictive. In various exemplary embodiments, I / O components 718 may include output components 726 and input components 728. Output components 726 may include visual components (e.g., displays such as plasma display panels (PDPs), light emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tubes (CRTs)), acoustic components (e.g., speakers), haptic components (e.g., vibrating motors, resistive mechanisms), other signal generators, and the like. Input components 728 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, optoelectronic keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), tactile input components (e.g., physical buttons, touchscreens that provide the location or force of a touch or touch gesture, or other tactile input components), audio input components (e.g., microphones), and the like. Input components 728 may also include one or more image capture devices such as digital cameras for generating digital images or videos.
[0075] In further exemplary embodiments, I / O components 718 may include biometric components 730, motion components 734, environmental components 736 of the environment, or location components 738, as well as a variety of other components. One or more of such components (or portions thereof) may collectively be referred to herein as “sensor components” or “sensors” for collecting various data related to machine 700, the environment of machine 700, the user of machine 700, or combinations thereof.
[0076] For example, the biometric component 730 may include components that detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body postures, or eye tracking), measure biometric signals (e.g., blood pressure, heart rate, body temperature, sweat, or brain waves), identify people (e.g., voice recognition, retina recognition, facial recognition, fingerprint recognition, or electroencephalogram-based recognition), etc. The motion component 734 may include an acceleration sensor component (e.g., an accelerometer), a gravity sensor component, a speed sensor component (e.g., a speedometer), a rotation sensor component (e.g., a gyroscope), etc. The environmental component 736 may include, for example, a lighting sensor component (e.g., a photometer), a temperature sensor component (e.g., one or more thermometers that detect the ambient temperature), a humidity sensor component, a pressure sensor component (e.g., a barometer), an acoustic sensor component (e.g., one or more microphones that detect background noise), a proximity sensor component (e.g., an infrared sensor that detects nearby objects), a gas sensor (e.g., a gas detection sensor for detecting the concentration of hazardous gases for safety or measuring pollutants in the atmosphere), or other components that may provide an indication, measurement, or signal corresponding to the surrounding physical environment. The positioning component 738 may include a positioning sensor component (e.g., a Global Positioning System (GPS) receiver component), an altitude sensor component (e.g., an altimeter, or a barometer that can detect air pressure from which altitude can be derived), an orientation sensor component (e.g., a magnetometer), etc. For example, the positioning sensor component may provide location information associated with the system 700, such as the GPS coordinates of the system 700 or information related to the current location of the system 700 (e.g., the name of a restaurant or other company).
[0077] Communication can be implemented using various technologies. The I / O component 718 may include a communication component 740 that is operable to couple the machine 700 to the network 732 or the device 720 via the coupler 722 and the coupler 724, respectively. For example, the communication component 740 may include a network interface component or another suitable device that interfaces with the network 732. In another example, the communication component 740 includes a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, components (e.g., low power ), components, and other communication components that provide communication via other modes. The device 720 can be any of another machine or various peripheral devices (e.g., peripheral devices coupled via a Universal Serial Bus (USB)).
[0078] In addition, the communication component 740 can detect an identifier or include components operable to detect an identifier. For example, the communication component 740 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, digital graphics, maxi codes, PDF417, hypercodes, 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 derived via the communication component 740 that can indicate a specific location, such as a location via Internet Protocol (IP) geolocation, a location via signal triangulation, a location via detecting an NFC beacon signal, etc.
[0079] Where terms such as "at least one of A, B, or C", "at least one of A, B, and C", "one or more of A, B, or C", or "one or more of A, B, and C" are used, it is intended that the term be interpreted to mean that in an embodiment, A can exist alone, B can exist alone in an embodiment, C can exist alone in an embodiment, or any combination of elements A, B, and C can exist in separate embodiments; for example, A and B can exist, A and C, B and C, or A and B and C.
[0080] As used herein, the term "or" can be interpreted in an inclusive or exclusive manner. In addition, multiple instances can be provided for resources, operations, or structures described herein as a single instance. Additionally, the boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary and specific operations are shown in the context of a particular illustrative configuration. Other allocations of functionality can be envisioned and these other allocations can fall within the scope of various embodiments of the present disclosure. Generally, structures and functions presented as separate resources in an example configuration can be implemented as a combined structure or resource. Similarly, structures and functions presented as a single resource can be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within the scope of the embodiments of the present disclosure as expressed in the appended claims. Accordingly, the specification and drawings are to be regarded as illustrative rather than restrictive.
Claims
1. A system, comprising: at least one processor; and at least one memory, which is coupled to the at least one processor and stores instructions that, when executed by the at least one processor, cause the system to perform operations, the operations including: receiving, from a first device of a first user, content adapted to be displayed by a software application installed on the first device, the content addressed to a second user; determining that the second user does not have an account associated with the software application; and in response to determining that the second user does not have an account associated with the software application: identifying a supported electronic communication format; generating, in the supported electronic communication format, an electronic communication to enable the second user to receive the content; causing the electronic communication to be sent to a second device of the second user; and causing a notification to be presented at the first device, the notification indicating that the second user does not have an account associated with the software application.
2. The system according to claim 1, wherein Determining that the second user does not have an account associated with the software application includes attempting to identify the second user in a user registry of the software application.
3. The system according to claim 1, wherein The notification further indicates the supported electronic communication format.
4. The system according to claim 1, wherein The electronic communication includes a link that enables the second user to access the content, and the operations further include: receiving, via a user interface of the second device, a selection of the link by the second user; and in response to receiving the selection of the link, causing the content to be displayed on a display screen of the second device.
5. The system according to claim 4, wherein The system causes the content to be displayed on the display screen of the second device for a predetermined period of time.
6. The system according to claim 4, wherein The system allows the content to be displayed on the display screen of the second device a predetermined number of times.
7. The system according to claim 1, wherein The electronic communication includes one or more of the following: Short Message Service (SMS) communication, Multimedia Messaging Service (MMS) communication, and email.
8. A computer-implemented method, comprising: receiving, from a first device of a first user, content adapted to be displayed by a software application installed on the first device, the content addressed to a second user; determining that the second user does not have an account associated with the software application; and in response to determining that the second user does not have an account associated with the software application: identifying a supported electronic communication format; generating, in the supported electronic communication format, an electronic communication to enable the second user to receive the content; causing the electronic communication to be sent to a second device of the second user; and causing a notification to be presented at the first device, the notification indicating that the second user does not have an account associated with the software application.
9. The computer-implemented method according to claim 8, wherein, Determining that the second user does not have an account associated with the software application includes attempting to identify the second user in a user registry of the software application.
10. The computer-implemented method according to claim 8, wherein, The notification further indicates the supported electronic communication format.
11. A non-transitory computer-readable medium that stores instructions that, when executed by a computer system, cause the computer system to perform operations, the operations including: Receive content suitable for display by a software application installed on the first device of a first user, the content addressed to a second user; Determine that the second user does not have an account associated with the software application; And In response to determining that the second user does not have an account associated with the software application: Identify a supported electronic communication format; Generate an electronic communication in the supported electronic communication format to enable the second user to receive the content; Cause the electronic communication to be sent to a second device of the second user; And Cause a notification to be presented at the first device, the notification indicating that the second user does not have an account associated with the software application.
12. The non-transitory computer-readable medium according to claim 11, wherein, Determining that the second user does not have an account associated with the software application includes attempting to identify the second user in a user registry of the software application.
13. The non-transitory computer-readable medium according to claim 11, wherein, The notification further indicates the supported electronic communication format.
14. A system, comprising: At least one processor; And At least one memory coupled to the at least one processor and storing instructions that, when executed by the at least one processor, cause the system to perform operations, the operations including: Receive content suitable for display by a software application installed on the first device of a first user, the content addressed to a second user; Determine that the software application is not installed on a second device of the second user; and In response to determining that the software application is not installed on the second device: Identify a supported electronic communication format; Generate an electronic communication in the supported electronic communication format to enable the second user to receive the content; Cause the electronic communication to be sent to the second device; and Cause a notification to be presented at the first device, the notification indicating the supported electronic communication format.
15. The system according to claim 14, wherein, The electronic communication includes a link that enables the second user to access the content, and the operations further include: Via a user interface of the second device, receive a selection of the link by the second user; and In response to receiving the selection of the link, cause the content to be displayed on a display screen of the second device.
16. A computer-implemented method, comprising: Receive content suitable for display by a software application installed on the first device of a first user, the content addressed to a second user; Determine that the software application is not installed on a second device of the second user; And In response to determining that the software application is not installed on the second device: Identify a supported electronic communication format; Generate an electronic communication in the supported electronic communication format to enable the second user to receive the content; Cause the electronic communication to be sent to the second device; And Cause a notification to be presented at the first device, the notification indicating the supported electronic communication format.
17. A non-transitory computer-readable medium that stores instructions that, when executed by a computer system, cause the computer system to perform operations, the operations including: Receive content suitable for display by a software application installed on the first device of a first user, the content addressed to a second user; Determine that the software application is not installed on the second device of the second user; And In response to determining that the software application is not installed on the second device: Identify a supported electronic communication format; Generate an electronic communication in the supported electronic communication format to enable the second user to receive the content; Cause the electronic communication to be sent to the second device; And Cause a notification to be displayed at the first device, the notification indicating the supported electronic communication format.
Citation Information
Patent Citations
Selecting a messaging protocol for transmitting data in connection with a location-based service
US20170012920A1
Electronic device, server and content providing method thereof
US20170104712A1